Some bug fixes
authorNikhil Jain <nikhil@illinois.edu>
Thu, 17 Nov 2011 23:57:43 +0000 (17:57 -0600)
committerNikhil Jain <nikhil@illinois.edu>
Thu, 17 Nov 2011 23:57:43 +0000 (17:57 -0600)
src/arch/util/mempool.c
src/arch/util/mempool.h
src/conv-core/isomalloc.c
src/libs/ck-libs/tcharm/tcharm.C

index bec086b37cafda9493afd95d5c2ffc65b57f8609..7eb70cad7aa103402161e8513b2866b8847683fd 100644 (file)
@@ -11,7 +11,6 @@ Heavily modified by Nikhil Jain
 #define MEMPOOL_DEBUG   0
 
 #include "converse.h"
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -175,7 +174,7 @@ mempool_type *mempool_init(size_t pool_size, mempool_newblockfn allocfn, mempool
   mptr->newblockfn = allocfn;
   mptr->freeblockfn = freefn;
   mptr->block_tail = 0;
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
   mptr->mempoolLock = CmiCreateLock();
 #endif
   mptr->block_head.mempool_ptr = pool;
@@ -212,7 +211,7 @@ void*  mempool_malloc(mempool_type *mptr, int size, int expand)
     slot_header   *head_free,*head_next;
     mem_handle_t  mem_hndl;
 
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
     CmiLock(mptr->mempoolLock);
 #endif
 
@@ -280,7 +279,7 @@ void*  mempool_malloc(mempool_type *mptr, int size, int expand)
         head_next->prev = 0;
       }
 
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
       head_free->pool_addr = mptr;
       CmiUnlock(mptr->mempoolLock);
 #endif
@@ -291,7 +290,7 @@ void*  mempool_malloc(mempool_type *mptr, int size, int expand)
     return NULL;
 }
 
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
 void mempool_free_thread( void *ptr_free)
 {
     slot_header *to_free;
@@ -332,7 +331,7 @@ void mempool_free(mempool_type *mptr, void *ptr_free)
       block_head = block_head->block_next?(block_header *)((char*)mptr+block_head->block_next):NULL;
     }
     if(block_head==NULL) {
-      CmiPrintf("Mempool-Free request pointer was not in mempool range\n");
+      CmiPrintf("[%d] Mempool-Free request pointer was not in mempool range %lld\n",CthSelf(),ptr_free);
       return;
     }
 
index 1f24020e1b5db7b7fce74a976d0b4e7825d5b232..ae735e09ab83b9079f397f85d9ce7143dabf814d 100644 (file)
@@ -3,7 +3,9 @@
 #define MEMPOOL_H  
 
 #include "conv-config.h"
+#include "converse.h"
 
+#define USE_MEMPOOL_ISOMALLOC  1
 #if CMK_CONVERSE_GEMINI_UGNI
 #include "gni_pub.h"
 #include "pmi.h"
@@ -22,7 +24,7 @@ typedef void (* mempool_freeblock)(void *ptr, mem_handle_t mem_hndl);
 //header of an free slot
 typedef struct slot_header_
 {
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC ||  (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
   void*                        pool_addr;
 #endif
 #if CMK_CONVERSE_GEMINI_UGNI
@@ -35,7 +37,7 @@ typedef struct slot_header_
 
 typedef struct used_header_
 {
-#if CMK_SMP && CMK_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_GEMINI_UGNI)
   void*                        pool_addr;
 #endif
 #if CMK_CONVERSE_GEMINI_UGNI
@@ -64,7 +66,7 @@ typedef struct mempool_type
   mempool_newblockfn     newblockfn;
   mempool_freeblock      freeblockfn;
   size_t                 block_tail;
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
     CmiNodeLock                mempoolLock;
 #endif
 } mempool_type;
@@ -73,7 +75,7 @@ mempool_type *mempool_init(size_t pool_size, mempool_newblockfn newfn, mempool_f
 void  mempool_destroy(mempool_type *mptr);
 void*  mempool_malloc(mempool_type *mptr, int size, int expand);
 void mempool_free(mempool_type *mptr, void *ptr_free);
-#if CMK_SMP && CMK_CONVERSE_GEMINI_UGNI
+#if USE_MEMPOOL_ISOMALLOC || (CMK_SMP && CMK_CONVERSE_GEMINI_UGNI)
 void mempool_free_thread(void *ptr_free);
 #endif
 
index 78486dee389738fa381bd090f200c554afd628a8..c16c364b37e87604e7fa2a4dbbd9a7cf2ac9621f 100644 (file)
@@ -2314,7 +2314,7 @@ void *CmiIsomalloc(int size, CthThread tid)
     }
     blk = (CmiIsomallocBlock*)mempool_malloc(CtvAccess(threadpool),size+sizeof(CmiIsomallocBlock),1);
   }
-  blk->slot=-1;
+  blk->slot=(CmiInt8)blk;
   blk->length=size;
   return block2pointer(blk);
 }
@@ -2397,6 +2397,7 @@ void CmiIsomallocPup(pup_er p,void **blockPtrPtr)
   CmiIsomallocBlock *blk;
   CmiInt8 s,length;
   CmiInt8 n;
+  CmiPrintf("Incorrect pup is called\n");
   if (isomallocStart==NULL) CmiAbort("isomalloc is disabled-- cannot use IsomallocPup");
 
   if (!pup_isUnpacking(p)) 
@@ -2441,7 +2442,8 @@ void CmiIsomallocFree(void *blockPtr)
   else if (blockPtr!=NULL)
   {
 #if USE_MEMPOOL_ISOMALLOC
-    mempool_free(CtvAccess(threadpool), pointer2block(blockPtr));
+    mempool_free_thread((void*)pointer2block(blockPtr)->slot);
+    //mempool_free(CtvAccess(threadpool), (void*)pointer2block(blockPtr)->slot);
 #else
     CmiIsomallocBlock *blk=pointer2block(blockPtr);
     CmiInt8 s=blk->slot; 
index 31c0bf84bc7d01cf719723ab27b7d7df908ef2a9..856c61aca71c9dfb2a5e0743e1378c8ae811b438 100644 (file)
@@ -366,8 +366,8 @@ TCharm::~TCharm()
 {
   //BIGSIM_OOC DEBUGGING
   //CmiPrintf("TCharm destructor called with heapBlocks=%p!\n", heapBlocks);
-  
-  if (heapBlocks) CmiIsomallocBlockListDelete(heapBlocks);
+   
+  //if (heapBlocks) CmiIsomallocBlockListDelete(heapBlocks);
   CthFree(tid);
   CtgFree(threadGlobals);
   delete initMsg;