From: yeom Date: Sun, 31 Oct 2010 23:04:06 +0000 (+0000) Subject: changes: generate rcr retirehashtable code correctly according to the runtime interface. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=1b43188531d8aba39f4bf1db38fb2ce914cf5923;p=IRC.git 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. --- 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;idx2index;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("}"); }