X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FRepairGenerator.java;h=cf2b98d22604ef4cc0a10b788470315a9e9dca97;hp=b0bd167a9adc5dd283532d69ed4141c4c1b75f05;hb=494b62b8ddfc3c3a7282aab4ad96d0e10fb1d1bc;hpb=ffaf9068b5b6b06866bee46a83abb9e3c00b1b85 diff --git a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java index b0bd167..cf2b98d 100755 --- a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java +++ b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java @@ -57,7 +57,6 @@ public class RepairGenerator { } } - private void name_updates() { int count=0; for(Iterator it=termination.updatenodes.iterator();it.hasNext();) { @@ -303,6 +302,7 @@ public class RepairGenerator { private void generate_stateobject() { CodeWriter crhead = new StandardCodeWriter(outputhead); + CodeWriter craux = new StandardCodeWriter(outputaux); crhead.outputline("struct "+name+"_state {"); Iterator globals=state.stGlobals.descriptors(); while (globals.hasNext()) { @@ -310,6 +310,18 @@ public class RepairGenerator { crhead.outputline(vd.getType().getGenerateType().getSafeSymbol()+" "+vd.getSafeSymbol()+";"); } crhead.outputline("};"); + crhead.outputline("struct "+name+"_state * allocate"+name+"_state();"); + craux.outputline("struct "+name+"_state * allocate"+name+"_state()"); + craux.startblock(); + craux.outputline("return (struct "+name+"_state *) malloc(sizeof(struct "+name+"_state));"); + craux.endblock(); + + crhead.outputline("void free"+name+"_state(struct "+name+"_state *);"); + craux.outputline("void free"+name+"_state(struct "+name+"_state * thisvar)"); + craux.startblock(); + craux.outputline("free(thisvar);"); + craux.endblock(); + crhead.outputline("void "+name+"_statecomputesizes(struct "+name+"_state * ,int *,int **);"); crhead.outputline("void "+name+"_staterecomputesizes(struct "+name+"_state *);"); } @@ -435,7 +447,7 @@ public class RepairGenerator { } } } - craux.outputline("struct "+ name+"* "+name+"()"); + craux.outputline("struct "+ name+"* allocate"+name+"()"); craux.startblock(); craux.outputline("/* creating hashtables */"); @@ -481,7 +493,7 @@ public class RepairGenerator { craux.outputline(relation.getSafeSymbol() + "_hashinv = noargallocateSimpleHash();"); } } - + craux.outputline("return thisvar;"); craux.endblock(); crhead.outputline("};"); craux.outputline("void free"+name+"(struct "+ name +"* thisvar)"); @@ -534,7 +546,9 @@ public class RepairGenerator { crhead.outputline("void doanalysis(struct "+name+"_state *);"); craux.outputline("void doanalysis(struct "+name+"_state * thisvar)"); craux.startblock(); + craux.outputline("int highmark;"); /* This declaration is special...need it to be first */ craux.startBuffer(); + if (Compiler.TIME) { craux.outputline("struct timeval _begin_time,_end_time;"); craux.outputline("gettimeofday(&_begin_time,NULL);"); @@ -544,7 +558,7 @@ public class RepairGenerator { craux.outputline("rebuildcount=0;"); craux.outputline("abstractcount=0;"); } - craux.addDeclaration("int","highmark"); + craux.addDeclaration("struct "+name+ " * ",oldmodel.getSafeSymbol()); craux.outputline(oldmodel.getSafeSymbol()+"=0;");