more changes....much is still missing
authorbdemsky <bdemsky>
Thu, 21 Oct 2010 09:40:29 +0000 (09:40 +0000)
committerbdemsky <bdemsky>
Thu, 21 Oct 2010 09:40:29 +0000 (09:40 +0000)
Robust/src/IR/Flat/BuildCode.java
Robust/src/Runtime/mlp_runtime.c
Robust/src/Runtime/oooJava/hashStructure.c
Robust/src/Runtime/oooJava/rcr_runtime.c

index 5b30f743151868ef8924a7eab9da05d332f29a6c..c69398c3f166e883df393e1c964f8a3fc841358d 100644 (file)
@@ -4308,6 +4308,7 @@ public class BuildCode {
            assert(waitingElement.getStatus()>=ConflictNode.COARSE);
            output.println("       rentry=mlpCreateREntry(" + waitingElement.getStatus() + ", &(seseToIssue->common));");
            output.println("       seseToIssue->common.rentryArray[seseToIssue->common.rentryIdx++]=rentry;");
+           output.println("       rentry->queue=runningSESE->memoryQueueArray[" + waitingElement.getQueueID()+"];");
            output.println("       if(ADDRENTRY(runningSESE->memoryQueueArray["+ waitingElement.getQueueID()+ "],rentry)==READY) {");
            output.println("          dispCount++;");
            output.println("       }");
@@ -4444,8 +4445,7 @@ public class BuildCode {
     output.println("           resolvePointer(consumer->rentryArray[idx]);");
     output.println("        }");
     output.println("     }");
-    
-    
+
     output.println("     if( atomic_sub_and_test( 1, &(consumer->unresolvedDependencies) ) ){");
     output.println("       workScheduleSubmit( (void*)consumer );");
     output.println("     }");
@@ -4471,6 +4471,26 @@ public class BuildCode {
     }
     
 
+    if (state.RCR&&fsen.getDynamicInVarSet().size()>0) {
+      output.println("{");
+      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("    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]);");
+      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("}");
+    }
+
+
     // last of all, decrement your parent's number of running children    
     output.println("   if( runningSESE->parent != NULL ) {");
     output.println("     if( atomic_sub_and_test( 1, &(runningSESE->parent->numRunningChildren) ) ) {");
index 3fab39ad1f4c0a3a159d90bcb21ed15271dc513c..4cec64aa598fa53070c842657054d4eede6db229 100644 (file)
@@ -923,7 +923,7 @@ resolvePointer(REntry* rentry){
   }
   struct Queue* val;
   do {  
-    val=(struct Queue*)0x1;       
+    val=(struct Queue*)0x1;
     val=(struct Queue*)LOCKXCHG((unsigned INTPTR*)&(table->unresolvedQueue), (unsigned INTPTR)val);
   } while(val==(struct Queue*)0x1); 
   if(val!=NULL && getHead(val)->objectptr==rentry){
index 2b31b2e1a532bf0cebc6ce8377dc8d6a500b9379..7a6ae4c5d5d95b45e2fb5ef91796bd880fc14296 100644 (file)
@@ -289,11 +289,14 @@ void rcr_RETIREHASHTABLE(HashStructure *T, SESEcommon *task, int key) {
          ReadBinItem_rcr* rptr=(ReadBinItem_rcr*)ptr;
          for (i=0;i<rptr->index;i++) {
            TraverserData * td=&rptr->array[i];
-           RESOLVE(td->task, td->bitindex);
-            if (((INTPTR)rptr->array[i].task)&PARENTBIN) {
-              //parents go immediately
-              atomic_dec(&rptr->item.total);
-            }
+           if (task==td->task) {
+             RESOLVE(td->task, td->bitindex);
+             if (((INTPTR)rptr->array[i].task)&PARENTBIN) {
+               //parents go immediately
+               atomic_dec(&rptr->item.total);
+             }
+             break;
+           }
           }
          ptr->status=READY;
         }
index 93530a599cae1a581c9be9f5e08edda0f14d19a2..e73e676a47dc0633fac8ecb978c8a7fbcc2c29b7 100644 (file)
@@ -12,8 +12,6 @@ void * workerTR(void *x) {
        break;
       sched_yield();
     } while(1);
-    
-    
   }
   return NULL;
 }