back out pool alloc for now, fix it right when its clear we need it
authorjjenista <jjenista>
Wed, 10 Nov 2010 22:36:04 +0000 (22:36 +0000)
committerjjenista <jjenista>
Wed, 10 Nov 2010 22:36:04 +0000 (22:36 +0000)
Robust/src/Runtime/oooJava/hashStructure.c

index fd5c7261f6a0a6fc1bcda4782691180eb9b27934..d13a79ec28950b0a9e5a2e1b229465ceedb4a9bd 100644 (file)
@@ -401,13 +401,20 @@ void rcr_RETIREHASHTABLE(HashStructure *T, SESEcommon *task, int key, BinItem_rc
           haveread=TRUE;
         } else if (ptr==val) {
           val=val->next;
-          poolfreeinto( T->memPoolRead, ptr );
+
+          // THE 3 POOLFREE's IN THIS FUNCTION ARE TOO EARLY:
+          // OTHER FUNCTIONS IN THIS COMPILATION UNIT LOCK THE BIN ELEMENT
+          // BUT MAY TOUCH THE STATUS FIELDS OF BIN ITEMS AFTER RELEASING
+          // THE LOCK, WE HAVE TO MAKE SOME CAREFUL CHANGES TO ALLOW THE
+          // POOLFREE's TO WORK!
+
+          //poolfreeinto( T->memPoolRead, ptr );
         }
       } else if (ptr->total==0) {
        //skip past retired item
        if (ptr==val) {
          val=val->next;
-          poolfreeinto( T->memPoolWrite, ptr );
+          //poolfreeinto( T->memPoolWrite, ptr );
         }
       } else {
        //write bin case
@@ -419,7 +426,7 @@ void rcr_RETIREHASHTABLE(HashStructure *T, SESEcommon *task, int key, BinItem_rc
          ptr->status=READY;
          if(((INTPTR)wptr->task)&PARENTBIN) {
            val=val->next;
-            poolfreeinto( T->memPoolWrite, ptr );
+            //poolfreeinto( T->memPoolWrite, ptr );
          } else
            break;
        }