bug fixes
authorbdemsky <bdemsky>
Fri, 25 Mar 2011 23:44:14 +0000 (23:44 +0000)
committerbdemsky <bdemsky>
Fri, 25 Mar 2011 23:44:14 +0000 (23:44 +0000)
Robust/src/IR/Flat/RuntimeConflictResolver.java

index 2452916423e19b932bf8737967f65e488d6d3afd..23234abacbe988b0db4e83f9540b46ea7f047f86 100644 (file)
@@ -237,7 +237,7 @@ public class RuntimeConflictResolver {
       } else {
        cFile.println("     if("+prefix+"->"+allocSite+"=="+a.getUniqueAllocSiteID()+") {");
       }
-      addChecker(a, fn, tmp, state, et, prefix, 0, weakID);
+      addChecker(a, fn, tmp, state, et, prefix, depth, weakID);
       if (needswitch) {
        cFile.println("       }");
        cFile.println("       break;");
@@ -259,16 +259,21 @@ public class RuntimeConflictResolver {
       String childPtr = "((struct ___Object___ **)(((char *) &(((struct ArrayObject *)"+ prefix+")->___length___))+sizeof(int)))[i]";
       String currPtr = "arrayElement" + pdepth;
       
-      cFile.println("  int i;");
-      cFile.println("  struct ___Object___ * "+currPtr+";");
-      cFile.println("  for(i = 0; i<((struct ArrayObject *) " + prefix + " )->___length___; i++ ) {");
+      boolean first=true;
       
       for(Effect e: et.getEffects(a)) {
        if (!state.transitionsTo(e).isEmpty()) {
+         if (first) {
+           cFile.println("  int i;");
+           cFile.println("  struct ___Object___ * "+currPtr+";");
+           cFile.println("  for(i = 0; i<((struct ArrayObject *) " + prefix + " )->___length___; i++ ) {");
+           first=false;
+         }
          printRefSwitch(fn, tmp, pdepth, childPtr, currPtr, state.transitionsTo(e), weakID);
        }
       }
-      cFile.println("}");
+      if (!first)
+       cFile.println("}");
     }  else {
       //All other cases
       String currPtr = "myPtr" + pdepth;