Bug fixes for gc
[IRC.git] / Robust / src / IR / Flat / BuildCodeMultiCore.java
index 05010567130012bf89c7b2448fd4a7d1da13835b..454432b4a413d3bd234a9e7d3dfb41dc72f9a14c 100644 (file)
@@ -362,6 +362,8 @@ public class BuildCodeMultiCore extends BuildCode {
         outrepairstructs.close();
        }*/
 
+    outputInitStaticAndGlobalMethod(outmethod);
+    
     /* Close files */
     outmethodheader.println("#endif");
     outmethodheader.close();
@@ -369,6 +371,24 @@ public class BuildCodeMultiCore extends BuildCode {
     outstructs.println("#endif");
     outstructs.close();
   }
+  
+  private void outputInitStaticAndGlobalMethod(PrintWriter outmethod) {
+    outmethod.println("void initStaticAndGlobal() {");
+    outmethod.println("  int i;");
+    
+    if (state.MULTICOREGC) {
+      outmethod.println("  global_defs_p->size="+globaldefscount+";");
+      outmethod.println("  global_defs_p->next=NULL;");
+      outmethod.println("  for(i=0;i<"+globaldefscount+";i++) {");
+      outmethod.println("    ((struct garbagelist *)global_defs_p)->array[i]=NULL;");
+      outmethod.println("  }");
+    }
+    
+    outputStaticBlocks(outmethod);
+    outputClassObjects(outmethod);
+
+    outmethod.println("}");
+  }
 
   /** This function outputs (1) structures that parameters are
    * passed in (when PRECISE GC is enabled) and (2) function