From e8e7caf9f4a4e0c49fdfe97fc529703ebd8a4d8c Mon Sep 17 00:00:00 2001 From: bdemsky Date: Wed, 9 Nov 2005 16:48:14 +0000 Subject: [PATCH 1/1] Changes to allow unique names --- Repair/RepairCompiler/MCC/CLI.java | 9 +++++++-- Repair/RepairCompiler/MCC/IR/DotExpr.java | 20 ++++++++++++++++--- .../MCC/IR/RepairGenerator.java | 11 +++++----- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/Repair/RepairCompiler/MCC/CLI.java b/Repair/RepairCompiler/MCC/CLI.java index 9f3badc..b8cce23 100755 --- a/Repair/RepairCompiler/MCC/CLI.java +++ b/Repair/RepairCompiler/MCC/CLI.java @@ -2,6 +2,7 @@ package MCC; import java.util.*; import MCC.IR.DebugItem; +import MCC.IR.RepairGenerator; /** * A generic command-line interface for 6.035 compilers. This class @@ -11,7 +12,7 @@ import MCC.IR.DebugItem; * files. * * @author le01, 6.035 Staff (6.035-staff@mit.edu) - * @version $Id: CLI.java,v 1.19 2005/10/17 00:29:13 bdemsky Exp $ + * @version $Id: CLI.java,v 1.20 2005/11/09 16:47:42 bdemsky Exp $ */ public class CLI { /** @@ -114,7 +115,7 @@ public class CLI { System.out.println("-printrepairs -- print log of repair actions"); System.out.println("-exactallocation -- application calls malloc for each struct and"); System.out.println(" allocates exactly the right amount of space."); - + System.out.println("-name -- set name"); System.exit(-1); } @@ -154,6 +155,10 @@ public class CLI { Compiler.PRUNEQUANTIFIERS=true; } else if (args[i].equals("-cplusplus")) { Compiler.ALLOCATECPLUSPLUS=true; + } else if (args[i].equals("-name")) { + i++; + RepairGenerator.name=args[i]; + RepairGenerator.postfix=args[i]; } else if (args[i].equals("-verbose") || args[i].equals("-v")) { context = 0; verbose++; diff --git a/Repair/RepairCompiler/MCC/IR/DotExpr.java b/Repair/RepairCompiler/MCC/IR/DotExpr.java index d3caca9..6998d3a 100755 --- a/Repair/RepairCompiler/MCC/IR/DotExpr.java +++ b/Repair/RepairCompiler/MCC/IR/DotExpr.java @@ -371,7 +371,13 @@ public class DotExpr extends Expr { UpdateNode un=new UpdateNode(null); un.addUpdate(u); un.generate(writer,false,false,null,null,null,null); - writer.outputline("break;"); + writer.outputline("free"+RepairGenerator.name+"("+RepairGenerator.newmodel.getSafeSymbol()+");"); + writer.outputline("computesizes(thisvar);"); + writer.outputline(RepairGenerator.name+"_staterecomputesizes(thisvar);"); + writer.outputline("goto rebuild;"); + + // writer.outputline("break;"); + } else if ((indexbound instanceof OpExpr)&& (((OpExpr)indexbound).getOpcode()==Opcode.MULT)&& (((OpExpr)indexbound).getLeftExpr() instanceof DotExpr)&& @@ -398,7 +404,11 @@ public class DotExpr extends Expr { UpdateNode un=new UpdateNode(null); un.addUpdate(u); un.generate(writer,false,false,null,null,null,null); - writer.outputline("break;"); + writer.outputline("free"+RepairGenerator.name+"("+RepairGenerator.newmodel.getSafeSymbol()+");"); + writer.outputline("computesizes(thisvar);"); + writer.outputline(RepairGenerator.name+"_staterecomputesizes(thisvar);"); + writer.outputline("goto rebuild;"); + // writer.outputline("break;"); writer.endblock(); } writer.outputline("else if (("+rightside.getSafeSymbol()+"!=0)&&("+numElements.getSafeSymbol()+"%"+rightside.getSafeSymbol()+"==0))"); @@ -414,7 +424,11 @@ public class DotExpr extends Expr { UpdateNode un=new UpdateNode(null); un.addUpdate(u); un.generate(writer,false,false,null,null,null,null); - writer.outputline("break;"); + writer.outputline("free"+RepairGenerator.name+"("+RepairGenerator.newmodel.getSafeSymbol()+");"); + writer.outputline("computesizes(thisvar);"); + writer.outputline(RepairGenerator.name+"_staterecomputesizes(thisvar);"); + writer.outputline("goto rebuild;"); + // writer.outputline("break;"); writer.endblock(); } diff --git a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java index 1902bf6..80400dc 100755 --- a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java +++ b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java @@ -10,7 +10,8 @@ public class RepairGenerator { PrintWrapper outputrepair = null; PrintWrapper outputaux = null; PrintWrapper outputhead = null; - String name="foo"; + public static String name="foo"; + public static String postfix=""; String headername; static VarDescriptor oldmodel=null; static VarDescriptor newmodel=null; @@ -66,7 +67,7 @@ public class RepairGenerator { if (togenerate.contains(gn)) for (int i=0;i"+vd.getSafeSymbol()+"=("+vd.getType().getGenerateType().getSafeSymbol()+")"+vd.getSafeSymbol()+";"); } /* Insert repair here */ - cr.outputline("doanalysis("+vdstate.getSafeSymbol()+");"); + cr.outputline("doanalysis"+postfix+"("+vdstate.getSafeSymbol()+");"); globals=state.stGlobals.descriptors(); while (globals.hasNext()) { VarDescriptor vd=(VarDescriptor) globals.next(); @@ -543,8 +544,8 @@ public class RepairGenerator { craux.outputline("int abstractcount;"); } - crhead.outputline("void doanalysis(struct "+name+"_state *);"); - craux.outputline("void doanalysis(struct "+name+"_state * thisvar)"); + crhead.outputline("void doanalysis"+postfix+"(struct "+name+"_state *);"); + craux.outputline("void doanalysis"+postfix+"(struct "+name+"_state * thisvar)"); craux.startblock(); craux.outputline("int highmark;"); /* This declaration is special...need it to be first */ craux.startBuffer(); -- 2.34.1