bug fix
authorbdemsky <bdemsky>
Wed, 20 Jul 2011 00:20:42 +0000 (00:20 +0000)
committerbdemsky <bdemsky>
Wed, 20 Jul 2011 00:20:42 +0000 (00:20 +0000)
Robust/src/Runtime/bamboo/multicoregarbage.c
Robust/src/Runtime/mem.c

index c705f19f122b92baa7d409db4737787bc18388bf..5f367e6d35929f777dce72b24d996cff5e318b3f 100644 (file)
@@ -282,6 +282,13 @@ void gc_collect(struct garbagelist * stackptr) {
   // do gc
   send_msg_4(STARTUPCORE,GCFINISHPRE,BAMBOO_NUM_OF_CORE,self_numsendobjs,self_numreceiveobjs);
 
+  // invalidate all shared mem pointers
+  bamboo_cur_msp = NULL;
+  bamboo_smem_size = 0;
+  bamboo_smem_zero_top = NULL;
+  gcflag = false;
+
+
   // core collector routine
   //wait for init phase
   WAITFORGCPHASE(INITPHASE);
@@ -310,12 +317,6 @@ void gc_collect(struct garbagelist * stackptr) {
 
   CACHEADAPT_PHASE_CLIENT();
 
-  // invalidate all shared mem pointers
-  bamboo_cur_msp = NULL;
-  bamboo_smem_size = 0;
-  bamboo_smem_zero_top = NULL;
-  gcflag = false;
-
   WAITFORGCPHASE(FINISHPHASE);
 
   GC_PRINTF("Finish gc! \n");
@@ -326,6 +327,12 @@ void gc_nocollect(struct garbagelist * stackptr) {
   // inform the master that this core is at a gc safe point and is ready to 
   // do gc
   send_msg_4(STARTUPCORE,GCFINISHPRE,BAMBOO_NUM_OF_CORE,self_numsendobjs,self_numreceiveobjs);
+
+  // invalidate all shared mem pointers
+  bamboo_cur_msp = NULL;
+  bamboo_smem_size = 0;
+  bamboo_smem_zero_top = NULL;
+  gcflag = false;
   
   WAITFORGCPHASE(INITPHASE);
 
@@ -353,12 +360,6 @@ void gc_nocollect(struct garbagelist * stackptr) {
 
   CACHEADAPT_PHASE_CLIENT();
 
-  // invalidate all shared mem pointers
-  bamboo_cur_msp = NULL;
-  bamboo_smem_size = 0;
-  bamboo_smem_zero_top = NULL;
-
-  gcflag = false;
   WAITFORGCPHASE(FINISHPHASE);
 
   GC_PRINTF("Finish gc! \n");
@@ -545,7 +546,7 @@ bool gc(struct garbagelist * stackptr) {
     while(!gc_checkCoreStatus())
       ;
 
-    pregccheck();
+    //pregccheck();
     GCPROFILE_START_MASTER();
     GC_PRINTF("start gc! \n");
     gc_master(stackptr);
index d7eda8eeaf171372d03cf1e4b72b54a37905b8e9..80caa39228eeeab4645cdfd751faae86188eadcd 100644 (file)
@@ -35,7 +35,7 @@ void * mycalloc_share(struct garbagelist * stackptr, int size) {
       return p;
     
     // no more global shared memory
-    if(hasgc < 5) {
+    if(hasgc < 30) {
       // start gc
       if(gcflag) {
        gc(stackptr);