From 1b43188531d8aba39f4bf1db38fb2ce914cf5923 Mon Sep 17 00:00:00 2001
From: yeom <yeom>
Date: Sun, 31 Oct 2010 23:04:06 +0000
Subject: [PATCH] changes: generate rcr retirehashtable code correctly
 according to the runtime interface.

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 | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java
index a4644c6c..83fef796 100644
--- a/Robust/src/IR/Flat/BuildCode.java
+++ b/Robust/src/IR/Flat/BuildCode.java
@@ -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("}");
     }
 
-- 
2.34.1