X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FSumExpr.java;h=9a83f8ef2b8f3b6aebb9c5c7ec8ca70c1ece2b9f;hb=58b2f949f1caa909924f56bcecb7f13270de4e27;hp=34457c3f8d8100453a96bab712b336764d6e73f1;hpb=b840422ac7138ec6b3e2c159be50256b82ec7e3b;p=repair.git diff --git a/Repair/RepairCompiler/MCC/IR/SumExpr.java b/Repair/RepairCompiler/MCC/IR/SumExpr.java index 34457c3..9a83f8e 100755 --- a/Repair/RepairCompiler/MCC/IR/SumExpr.java +++ b/Repair/RepairCompiler/MCC/IR/SumExpr.java @@ -54,7 +54,19 @@ public class SumExpr extends Expr { } public void generate(CodeWriter writer, VarDescriptor dest) { - throw new Error(); + writer.outputline("int "+dest.getSafeSymbol()+"=0;"); + + VarDescriptor itvd=VarDescriptor.makeNew("iterator"); + writer.outputline("SimpleIterator "+itvd.getSafeSymbol()+";"); + writer.outputline(sd.getSafeSymbol()+"_hash->iterator("+itvd.getSafeSymbol()+");"); + writer.outputline("while ("+itvd.getSafeSymbol()+".hasNext()) {"); + VarDescriptor keyvd=VarDescriptor.makeNew("key"); + writer.outputline("int "+keyvd.getSafeSymbol()+"="+itvd.getSafeSymbol()+".next();"); + VarDescriptor tmpvar=VarDescriptor.makeNew("tmp"); + writer.outputline("int "+tmpvar.getSafeSymbol()+";"); + writer.outputline(rd.getSafeSymbol()+ "_hash->get("+keyvd.getSafeSymbol()+","+tmpvar.getSafeSymbol()+");"); + writer.outputline(dest.getSafeSymbol()+"+="+tmpvar.getSafeSymbol()+";"); + writer.outputline("}"); } public void prettyPrint(PrettyPrinter pp) {