From: bdemsky Date: Mon, 28 Feb 2011 05:15:56 +0000 (+0000) Subject: changes X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=05e66bc347746e55fd1a756e4ff2a5411d5ac502;p=IRC.git changes --- diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 2d539354..6b64d4e6 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -145,6 +145,7 @@ public class BuildCode { outglobaldefs.println(""); outglobaldefs.println("struct global_defs_t {"); outglobaldefs.println(" int size;"); + outglobaldefs.println(" void * next;"); outglobaldefsprim.println("#ifndef __GLOBALDEFPRIM_H_"); outglobaldefsprim.println("#define __GLOBALDEFPRIM_H_"); outglobaldefsprim.println(""); @@ -304,11 +305,12 @@ public class BuildCode { protected void outputMainMethod(PrintWriter outmethod) { outmethod.println("int main(int argc, const char *argv[]) {"); outmethod.println(" int i;"); + outmethod.println(" global_defs_p=calloc(1, sizeof(struct global_defs_t));"); + outmethod.println(" global_defsprim_p=calloc(1, sizeof(struct global_defsprim_t));"); 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(" ((struct garbagelist *)global_defs_p)->array[i]=NULL;"); outmethod.println(" }"); } outputStaticBlocks(outmethod); diff --git a/Robust/src/IR/Flat/BuildCodeMGC.java b/Robust/src/IR/Flat/BuildCodeMGC.java index 3384a86a..6931f85f 100644 --- a/Robust/src/IR/Flat/BuildCodeMGC.java +++ b/Robust/src/IR/Flat/BuildCodeMGC.java @@ -77,6 +77,8 @@ public class BuildCodeMGC extends BuildCode { outglobaldefs.println("#define __GLOBALDEF_H_"); outglobaldefs.println(""); outglobaldefs.println("struct global_defs_t {"); + outglobaldefs.println(" int size;"); + outglobaldefs.println(" void * next;"); outglobaldefsprim.println("#ifndef __GLOBALDEFPRIM_H_"); outglobaldefsprim.println("#define __GLOBALDEFPRIM_H_"); diff --git a/Robust/src/IR/Flat/BuildCodeTran.java b/Robust/src/IR/Flat/BuildCodeTran.java index f7c2b087..7966193f 100644 --- a/Robust/src/IR/Flat/BuildCodeTran.java +++ b/Robust/src/IR/Flat/BuildCodeTran.java @@ -117,6 +117,15 @@ public class BuildCodeTran extends BuildCode { protected void outputMainMethod(PrintWriter outmethod) { outmethod.println("int main(int argc, const char *argv[]) {"); outmethod.println(" int i;"); + outmethod.println(" global_defs_p=calloc(1, sizeof(struct global_defs_t));"); + outmethod.println(" global_defsprim_p=calloc(1, sizeof(struct global_defsprim_t));"); + 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]=NULL;"); + outmethod.println(" }"); + } + outputStaticBlocks(outmethod); outputClassObjects(outmethod); additionalCodeAtTopOfMain(outmethod); @@ -928,7 +937,7 @@ public class BuildCodeTran extends BuildCode { // TODO add version for normal Java later if((fm.getMethod() != null) && (fm.getMethod().isStaticBlock())) { // a static block, check if it has been executed - output.println(" global_defs_p->" + fm.getMethod().getClassDesc().getSafeSymbol()+"static_block_exe_flag = 1;"); + output.println(" global_defsprim_p->" + fm.getMethod().getClassDesc().getSafeSymbol()+"static_block_exe_flag = 1;"); output.println(""); } } @@ -1562,12 +1571,12 @@ public class BuildCodeTran extends BuildCode { // need to check if the class' static fields have been initialized and/or // its static blocks have been executed output.println("#ifdef MGC_STATIC_INIT_CHECK"); - output.println("if(global_defs_p->" + cn.getSafeSymbol()+"static_block_exe_flag == 0) {"); + output.println("if(global_defsprim_p->" + cn.getSafeSymbol()+"static_block_exe_flag == 0) {"); if(cn.getNumStaticBlocks() != 0) { MethodDescriptor t_md = (MethodDescriptor)cn.getMethodTable().get("staticblocks"); output.println(" "+cn.getSafeSymbol()+t_md.getSafeSymbol()+"_"+t_md.getSafeMethodDescriptor()+"();"); } else { - output.println(" global_defs_p->" + cn.getSafeSymbol()+"static_block_exe_flag = 1;"); + output.println(" global_defsprim_p->" + cn.getSafeSymbol()+"static_block_exe_flag = 1;"); } output.println("}"); output.println("#endif // MGC_STATIC_INIT_CHECK");