From 01823b500a45dd584981a9c6e135c77c9974a586 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Mon, 28 Feb 2011 04:52:09 +0000 Subject: [PATCH] setup globals as a garbagelist...split primitives into separate file --- Robust/src/IR/Flat/BuildCode.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index a3fc7325..2d539354 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -49,6 +49,7 @@ public class BuildCode { SafetyAnalysis sa; CallGraph callgraph; Hashtable printedfieldstbl; + int globaldefscount=0; public BuildCode(State st, Hashtable temptovar, TypeUtil typeutil) { this(st, temptovar, typeutil, null); @@ -303,7 +304,13 @@ public class BuildCode { protected void outputMainMethod(PrintWriter outmethod) { outmethod.println("int main(int argc, const char *argv[]) {"); outmethod.println(" int i;"); - + if (GENERATEPRECISEGC) { + outmethod.println(" global_defs_p->size="+globaldefscount+";"); + outmethod.println(" for(i=0;i<"+globaldefscount+";i++) {"); + outmethod.println(" ((struct garbagelist *)global_defs_p)->array[i]=NUL +L;"); + outmethod.println(" }"); + } outputStaticBlocks(outmethod); outputClassObjects(outmethod); @@ -546,6 +553,7 @@ public class BuildCode { // for each class, create a global object outglobaldefs.println(" struct ___Object___ *"+cn.getSafeSymbol()+"classobj;"); + globaldefscount++; } outclassdefs.println(""); //Print out definition for array type @@ -1287,6 +1295,7 @@ public class BuildCode { } else { globaldefout.println(" struct "+fd.getType().getSafeSymbol()+ " * "+fd.getSafeSymbol()+";"); } + globaldefscount++; } } else if (fd.isVolatile()) { //volatile field @@ -1303,12 +1312,11 @@ public class BuildCode { } else { globaldefprimout.println(" "+fd.getType().getSafeSymbol()+ " "+fd.getSafeSymbol()+";"); } + globaldefscount++; } } else if (fd.isVolatile()) { //volatile field - if(globaldefout != null) { - classdefout.println(" volatile "+fd.getType().getSafeSymbol()+ " "+fd.getSafeSymbol()+";"); - } + classdefout.println(" volatile "+fd.getType().getSafeSymbol()+ " "+fd.getSafeSymbol()+";"); } else classdefout.println(" "+fd.getType().getSafeSymbol()+" "+fd.getSafeSymbol()+";"); } -- 2.34.1