changes: generate rcr retirehashtable code correctly according to the runtime interface.
authoryeom <yeom>
Sun, 31 Oct 2010 23:04:06 +0000 (23:04 +0000)
committeryeom <yeom>
Sun, 31 Oct 2010 23:04:06 +0000 (23:04 +0000)
TODO: Current implementation assumes that the size of the rcrRecord array is equal to the size of fsen.getDynamicInVarSet(). But, it seems not to be true since the rcrRecord array is allocated by the size of inset var which is actually related with coarse conflict.

Robust/src/IR/Flat/BuildCode.java

index a4644c6c8bfc5a262ab860e2bb681af9fb525b29..83fef796165a097771f8baa00f1037fd0aa32f6d 100644 (file)
@@ -4610,8 +4610,8 @@ public class BuildCode {
       output.println("   }");
     }
     
-
-    if (state.RCR&&fsen.getDynamicInVarSet().size()>0) {
+    
+    if (state.RCR && fsen.getDynamicInVarSet().size() > 0) {
       /* Make sure the running SESE is finished */
       output.println("   if (unlikely(runningSESE->rcrstatus!=0)) {");
       output.println("     if(!CAS(&runningSESE->rcrstatus,1,0)) {");
@@ -4622,20 +4622,21 @@ public class BuildCode {
       output.println("     }");
       output.println("   }");
       output.println("{");
-      output.println("  int idx,idx2;");
-      if (fsen.getDynamicInVarSet().size()==1) {
-       output.println("  idx=0; {");
+      output.println("  int idx,idx2;");      
+      if (fsen.getDynamicInVarSet().size() == 1) {
+        output.println("  idx=0; {");
       } else {
-       output.println("  for(idx=0;idx<"+fsen.getDynamicInVarSet().size()+";idx++){");
+        output.println("  for(idx=0;idx<" + fsen.getDynamicInVarSet().size() + ";idx++){");
       }
-      output.println("    struct rcrRecord *rec="+paramsprefix+"->rcrRecords[idx];");
+      output.println("    struct rcrRecord *rec=&" + paramsprefix + "->rcrRecords[idx];");
       output.println("    while(rec!=NULL) {");
       output.println("      for(idx2=0;idx2<rec->index;idx2++) {");
-      output.println("        rcr_RETIREHASHTABLE(allHashStructures[0],rec,rec->array[idx2], (BinItem_rcr *) rcr->ptrarray[idx2]);");
-      output.println("      }");//exit idx2 for loop
+      output
+          .println("        rcr_RETIREHASHTABLE(allHashStructures[0],&(___params___->common),rec->array[idx2], (BinItem_rcr *) rec->ptrarray[idx2]);");
+      output.println("      }");// exit idx2 for loop
       output.println("      rec=rec->next;");
-      output.println("    }");//exit rec while loop
-      output.println("  }");//exit idx for loop
+      output.println("    }");// exit rec while loop
+      output.println("  }");// exit idx for loop
       output.println("}");
     }