memory leaks for rentry
authorbdemsky <bdemsky>
Mon, 28 Mar 2011 22:56:15 +0000 (22:56 +0000)
committerbdemsky <bdemsky>
Mon, 28 Mar 2011 22:56:15 +0000 (22:56 +0000)
Robust/src/Runtime/mlp_runtime.c

index 4668f30c053496d8cec6862e0af54dd823d2b14b..28010956f860f805bd3833ac99c1c68eddb30916 100644 (file)
@@ -549,6 +549,9 @@ int ADDVECTOR(MemoryQueue *Q, REntry *r) {
       if (isParentCoarse(r)) { //parent's retire immediately
         atomic_dec(&V->item.total);
         V->index--;
+      } else {
+       if (atomic_sub_and_test(1, &r->count))
+         poolfreeinto(Q->rentrypool, r);
       }
       return READY;
     } else {
@@ -580,6 +583,8 @@ int ADDSCC(MemoryQueue *Q, REntry *r) {
     void* flag=NULL;
     flag=(void*)LOCKXCHG((unsigned INTPTR*)&(S->val), (unsigned INTPTR)flag);
     if (flag!=NULL) {
+      if (atomic_sub_and_test(1, &r->count))
+       poolfreeinto(Q->rentrypool, r);
       return READY;
     } else {
       return NOTREADY;//<- means that some other dispatcher got this one...so need to do accounting correctly