Remove the local mapping tbl and shared mapping tbl in gc, instead, use a big shared...
authorjzhou <jzhou>
Tue, 29 Mar 2011 16:44:14 +0000 (16:44 +0000)
committerjzhou <jzhou>
Tue, 29 Mar 2011 16:44:14 +0000 (16:44 +0000)
Robust/src/Runtime/bamboo/multicoregarbage.c
Robust/src/Runtime/bamboo/multicoregarbage.h
Robust/src/Runtime/bamboo/multicoremem.h
Robust/src/Runtime/bamboo/multicoreruntime.c
Robust/src/Runtime/bamboo/multicoreruntime.h
Robust/src/Runtime/mem.c
Robust/src/Runtime/mem.h
Robust/src/buildscript

index fdb51b7a6c5d38841e78df37e657885899579718..f1fc156de913dd7ae0941315dbab6147ca1d004a 100644 (file)
@@ -528,12 +528,14 @@ inline void initGC() {
     gcheaptop = 0;
     gctopcore = 0;
     gctopblock = 0;
+#ifdef MAPPINGTBL_DEBUG
+       // initialize the gcmappingtbl
+       BAMBOO_MEMSET_WH(gcmappingtbl, 0, bamboo_rmsp_size);
+#endif
   } // if(STARTUPCORE == BAMBOO_NUM_OF_CORE)
   gcself_numsendobjs = 0;
   gcself_numreceiveobjs = 0;
   gcmarkedptrbound = 0;
-  gcobj2map = 0;
-  gcmappedobj = 0;
   gcnumlobjs = 0;
   gcmovestartaddr = 0;
   gctomove = false;
@@ -564,21 +566,9 @@ inline void initGC() {
   }
   gclobjhead->next = gclobjhead->prev = NULL;
 
-#ifdef LOCALHASHTBL_TEST
-  freeRuntimeHash(gcpointertbl);
-  gcpointertbl = allocateRuntimeHash(20);
-#else
-  mgchashreset(gcpointertbl);
-#endif
-
   freeMGCHash(gcforwardobjtbl);
   gcforwardobjtbl = allocateMGCHash(20, 3);
 
-  // initialize the mapping info related structures
-  if((BAMBOO_NUM_OF_CORE < NUMCORES4GC) && (gcsharedptbl != NULL)) {
-       // Never free the shared hash table, just reset it
-       mgcsharedhashReset(gcsharedptbl);
-  }
 #ifdef GC_PROFILE
   gc_num_livespace = 0;
   gc_num_freespace = 0;
@@ -892,24 +882,11 @@ inline void moveLObjs() {
                GC_BAMBOO_DEBUGPRINT_REG(isize);
                GC_BAMBOO_DEBUGPRINT_REG(base);
                gcheaptop += size;
-               // cache the mapping info anyway
-               BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-#ifdef LOCALHASHTBL_TEST
-               RuntimeHashadd_I(gcpointertbl, ptr, tmpheaptop);
-#else
-               mgchashInsert_I(gcpointertbl, ptr, tmpheaptop);
-#endif
-               BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
+               // cache the mapping info 
+               gcmappingtbl[OBJMAPPINGINDEX((int)ptr)] = (INTPTR)tmpheaptop;
                GC_BAMBOO_DEBUGPRINT(0xcdca);
                GC_BAMBOO_DEBUGPRINT_REG(ptr);
                GC_BAMBOO_DEBUGPRINT_REG(tmpheaptop);
-               if(host != BAMBOO_NUM_OF_CORE) {
-                 // send the original host core with the mapping info
-                 send_msg_3(host, GCLOBJMAPPING, ptr, tmpheaptop, false);
-                 GC_BAMBOO_DEBUGPRINT(0xcdcb);
-                 GC_BAMBOO_DEBUGPRINT_REG(ptr);
-                 GC_BAMBOO_DEBUGPRINT_REG(tmpheaptop);
-               } // if(host != BAMBOO_NUM_OF_CORE)
                tmpheaptop += isize;
 
                // set the gcsbstarttbl and bamboo_smemtbl
@@ -967,25 +944,12 @@ inline void moveLObjs() {
 
                gcheaptop += size;
                cpysize += isize;
-               // cache the mapping info anyway
-               BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-#ifdef LOCALHASHTBL_TEST
-               RuntimeHashadd_I(gcpointertbl, ptr, tmpheaptop);
-#else
-               mgchashInsert_I(gcpointertbl, ptr, tmpheaptop);
-#endif
-               BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
+               // cache the mapping info
+               gcmappingtbl[OBJMAPPINGINDEX((int)ptr)] = (INTPTR)tmpheaptop;
                GC_BAMBOO_DEBUGPRINT(0xcdcc);
                GC_BAMBOO_DEBUGPRINT_REG(ptr);
                GC_BAMBOO_DEBUGPRINT_REG(tmpheaptop);
                GC_BAMBOO_DEBUGPRINT_REG(*((int*)tmpheaptop));
-               if(host != BAMBOO_NUM_OF_CORE) {
-                 // send the original host core with the mapping info
-                 send_msg_3(host, GCLOBJMAPPING, ptr, tmpheaptop, false);
-                 GC_BAMBOO_DEBUGPRINT(0xcdcd);
-                 GC_BAMBOO_DEBUGPRINT_REG(ptr);
-                 GC_BAMBOO_DEBUGPRINT_REG(tmpheaptop);
-               }  // if(host != BAMBOO_NUM_OF_CORE)
                tmpheaptop += isize;
 
                // update bamboo_smemtbl
@@ -1281,7 +1245,7 @@ inline void mark(bool isfirst,
                        // ptr is not an active obj or has been marked
                        checkfield = false;
                  } // if(isLarge(ptr, &type, &size)) else ...
-               }  /* can never reach here
+               } /* can never reach here
                else {
                  // check if this obj has been forwarded
                  if(!MGCHashcontains(gcforwardobjtbl, (int)ptr)) {
@@ -1855,19 +1819,7 @@ innermoveobj:
       BAMBOO_MEMSET_WH(toptr+size, -2, isize-size);
     }
     // store mapping info
-    BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-#ifdef LOCALHASHTBL_TEST
-    RuntimeHashadd_I(gcpointertbl, origptr, toptr);
-#else
-       mgchashInsert_I(gcpointertbl, origptr, toptr);
-#endif
-       if(isremote) {
-         // add to the sharedptbl
-         if(gcsharedptbl != NULL) {
-               mgcsharedhashInsert_I(gcsharedptbl, origptr, toptr);
-         }
-       }
-    BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
+       gcmappingtbl[OBJMAPPINGINDEX((int)origptr)] = (INTPTR)toptr;
        GC_BAMBOO_DEBUGPRINT(0xcdce);
     GC_BAMBOO_DEBUGPRINT_REG(origptr);
     GC_BAMBOO_DEBUGPRINT_REG(toptr);
@@ -1890,6 +1842,7 @@ innermoveobj:
 #endif // GC_CACHE_ADAPT
   } // if(mark == 1)
   GC_BAMBOO_DEBUGPRINT(0xe205);
+  
   // move to next obj
   orig->ptr += size;
 
@@ -2140,13 +2093,7 @@ inline void * flushObj(void * objptr) {
     GC_BAMBOO_DEBUGPRINT(0xe402);
     GC_BAMBOO_DEBUGPRINT_REG(objptr);
     // a shared obj ptr, change to new address
-    BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-#ifdef LOCALHASHTBL_TEST
-    RuntimeHashget(gcpointertbl, objptr, &dstptr);
-#else
-       dstptr = mgchashSearch(gcpointertbl, objptr);
-#endif
-    BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
+       dstptr = gcmappingtbl[OBJMAPPINGINDEX((int)objptr)];
     GC_BAMBOO_DEBUGPRINT_REG(dstptr);
 
     if(NULL == dstptr) {
@@ -2154,52 +2101,9 @@ inline void * flushObj(void * objptr) {
       GC_BAMBOO_DEBUGPRINT(0xe403);
       GC_BAMBOO_DEBUGPRINT_REG(objptr);
       GC_BAMBOO_DEBUGPRINT_REG(hostcore(objptr));
-      if(hostcore(objptr) == BAMBOO_NUM_OF_CORE) {
-               // error! the obj is right on this core, but cannot find it
-               GC_BAMBOO_DEBUGPRINT_REG(objptr);
-               BAMBOO_EXIT(0xb003);
-      } else {
-               int hostc = hostcore(objptr);
-               // check the corresponsing sharedptbl
-               BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-               mgcsharedhashtbl_t * sptbl = gcrpointertbls[hostc];
-               if(sptbl != NULL) {
-                 dstptr = mgcsharedhashSearch(sptbl, (int)objptr);
-                 if(dstptr != NULL) {
-#ifdef LOCALHASHTBL_TEST
-                       RuntimeHashadd_I(gcpointertbl, (int)objptr, (int)dstptr);
-#else
-                       mgchashInsert_I(gcpointertbl, (int)objptr, (int)dstptr);
-#endif
-                 }
-               }
-               BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-
-               if(dstptr == NULL) {
-                 // still can not get the mapping info,
-                 // send msg to host core for the mapping info
-                 gcobj2map = (int)objptr;
-                 gcismapped = false;
-                 gcmappedobj = NULL;
-                 // the first time require the mapping, send msg to the hostcore
-                 // for the mapping info
-                 send_msg_3(hostc, GCMAPREQUEST, (int)objptr,
-                         BAMBOO_NUM_OF_CORE, false);
-                 while(true) {
-                       if(gcismapped) {
-                         break;
-                       }
-                 }
-                 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-#ifdef LOCALHASHTBL_TEST
-                 RuntimeHashget(gcpointertbl, objptr, &dstptr);
-#else
-                 dstptr = mgchashSearch(gcpointertbl, objptr);
-#endif
-                 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-               } // if(dstptr == NULL)
-         }    // if(hostcore(objptr) == BAMBOO_NUM_OF_CORE) else ...
-      GC_BAMBOO_DEBUGPRINT_REG(dstptr);
+         // error! the obj is right on this core, but cannot find it
+         GC_BAMBOO_DEBUGPRINT_REG(objptr);
+         BAMBOO_EXIT(0xb003);
     }  // if(NULL == dstptr)
   }   // if(ISSHAREDOBJ(objptr))
   // if not a shared obj, return NULL to indicate no need to flush
@@ -2346,19 +2250,6 @@ inline void flushRuntimeObj(struct garbagelist * stackptr) {
 #endif
 } // void flushRuntimeObj(struct garbagelist * stackptr)
 
-inline void transmappinginfo() {
-  // broadcast the sharedptbl pointer
-  for(int i = 0; i < NUMCORESACTIVE; i++) {
-       if(i != BAMBOO_NUM_OF_CORE) {
-         send_msg_3(i, GCMAPTBL, gcsharedptbl, BAMBOO_NUM_OF_CORE, false);
-       }
-  }
-
-  if(STARTUPCORE != BAMBOO_NUM_OF_CORE) {
-       send_msg_2(STARTUPCORE, GCFINISHMAPINFO, BAMBOO_NUM_OF_CORE, false);
-  }
-}
-
 inline void flush(struct garbagelist * stackptr) {
 
   flushRuntimeObj(stackptr);
@@ -2435,7 +2326,7 @@ inline void flush(struct garbagelist * stackptr) {
       if(ISSHAREDOBJ(ptr)) {
                ((int *)(ptr))[BAMBOOMARKBIT] = INIT;
       }
-    }  // if((!ISSHAREDOBJ(ptr)) || (((int *)(ptr))[BAMBOOMARKBIT] == COMPACTED))
+    }  //if((!ISSHAREDOBJ(ptr))||(((int *)(ptr))[BAMBOOMARKBIT] == COMPACTED))
   }   // while(gc_moreItems())
   GC_BAMBOO_DEBUGPRINT(0xe308);
 
@@ -3080,21 +2971,6 @@ inline void gc_collect(struct garbagelist * stackptr) {
             udn_tile_coord_y());
 #endif
 
-  while(true) {
-       if(MAPPHASE == gcphase) {
-         break;
-       }
-  }
-#ifdef RAWPATH // TODO GC_DEBUG
-  printf("(%x,%x) Start map phase\n", udn_tile_coord_x(), 
-            udn_tile_coord_y());
-#endif
-  transmappinginfo();
-#ifdef RAWPATH // TODO GC_DEBUG
-  printf("(%x,%x) Finish map phase\n", udn_tile_coord_x(),
-            udn_tile_coord_y());
-#endif
-
   while(true) {
     if(FLUSHPHASE == gcphase) {
       break;
@@ -3516,40 +3392,6 @@ inline void gc_master(struct garbagelist * stackptr) {
   RUNFREE(to);
   orig = to = NULL;
 
-  gcphase = MAPPHASE;
-  gccorestatus[BAMBOO_NUM_OF_CORE] = 1;
-  // Note: all cores should flush their runtime data including non-gc
-  //       cores
-  for(i = 1; i < NUMCORES4GC; ++i) {
-       // send start flush messages to all cores
-       gccorestatus[i] = 1;
-       send_msg_1(i, GCSTARTMAPINFO, false);
-  }
-#ifdef GC_PROFILE
-  gc_profileItem();
-#endif
-#ifdef RAWPATH // TODO GC_DEBUG
-  printf("(%x,%x) Start map phase \n", udn_tile_coord_x(), 
-                udn_tile_coord_y());
-#endif
-  // mapinto phase
-  transmappinginfo();
-#ifdef RAWPATH // TODO GC_DEBUG
-  printf("(%x,%x) Finish map phase \n", udn_tile_coord_x(), 
-                udn_tile_coord_y());
-#endif
-  gccorestatus[BAMBOO_NUM_OF_CORE] = 0;
-  while(MAPPHASE == gcphase) {
-       // check the status of all cores
-       BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-       if(gc_checkCoreStatus_I()) {
-         // all cores have finished sending mapping info 
-         BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-         break;
-       }
-       BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-  }  // while(MAPPHASE == gcphase)
-
   gcphase = FLUSHPHASE;
   gccorestatus[BAMBOO_NUM_OF_CORE] = 1;
   // Note: all cores should flush their runtime data including non-gc
@@ -3677,7 +3519,7 @@ inline bool gc(struct garbagelist * stackptr) {
     // disable the timer interrupt
     bamboo_mask_timer_intr();
 #endif 
-#endif 
+#endif
   // core coordinator routine
   if(0 == BAMBOO_NUM_OF_CORE) {
 #ifdef GC_DEBUG
index 92528b2fdad7ce59fb1ed23da17a347e6482e07e..d278939ff23ed4f8299c95072c3f0a097193e670 100644 (file)
@@ -129,32 +129,15 @@ volatile bool gctomove;
 int gcrequiredmems[NUMCORES4GC]; //record pending mem requests
 volatile int gcmovepending;
 
-// shared memory pointer for shared pointer mapping tbls
+// shared memory pointer for pointer mapping tbls
 // In GC version, this block of memory is located at the bottom of the 
 // shared memory, right on the top of the smem tbl.
-// The bottom of the shared memory = sbstart tbl + smemtbl 
-//                                  + NUMCORES4GC bamboo_rmsp
+// The bottom of the shared memory = sbstart tbl + smemtbl + bamboo_rmsp
 // These three types of table are always reside at the bottom of the shared 
 // memory and will never be moved or garbage collected
-#ifdef GC_SMALLPAGESIZE
-#define BAMBOO_RMSP_SIZE (1024 * 1024)
-#else
-#define BAMBOO_RMSP_SIZE (BAMBOO_SMEM_SIZE) // (45 * 16 * 1024)
-#endif
-//extern mspace bamboo_rmsp;
-// shared pointer mapping tbl
-mgcsharedhashtbl_t * gcsharedptbl;
-// remote shared pointer tbls
-mgcsharedhashtbl_t * gcrpointertbls[NUMCORES4GC];
-
-#ifdef LOCALHASHTBL_TEST
-struct RuntimeHash * gcpointertbl;
-#else
-mgchashtable_t * gcpointertbl;
-#endif
-int gcobj2map;
-int gcmappedobj;
-volatile bool gcismapped;
+INTPTR * gcmappingtbl;
+int bamboo_rmsp_size;
+unsigned int bamboo_baseobjsize;
 
 // table recording the starting address of each small block
 // (size is BAMBOO_SMEM_SIZE)
@@ -179,6 +162,8 @@ int * gccachepolicytbl;
 unsigned int size_cachepolicytbl;
 #endif // GC_CACHE_ADAPT
 
+#define OBJMAPPINGINDEX(p) (((int)p-gcbaseva)/bamboo_baseobjsize)
+
 #define ISSHAREDOBJ(p) \
   ((((int)p)>gcbaseva)&&(((int)p)<(gcbaseva+(BAMBOO_SHARED_MEM_SIZE))))
 
index 44b19805fa97010a1183bfe874304577a4a7b776..b681d8e19430e68319fe1aae651c76de9d4800e2 100644 (file)
@@ -70,7 +70,7 @@
 #elif defined GC_LARGESHAREDHEAP2
 #define BAMBOO_NUM_BLOCKS ((GC_BAMBOO_NUMCORES)*(2+2))
 #else
-#define BAMBOO_NUM_BLOCKS ((GC_BAMBOO_NUMCORES)*(2+3)) //(15 * 1024) //(64 * 4 * 0.75) //(1024 * 1024 * 3.5)  3G
+#define BAMBOO_NUM_BLOCKS ((GC_BAMBOO_NUMCORES)*(2+30/*3*/)) //(15 * 1024) //(64 * 4 * 0.75) //(1024 * 1024 * 3.5)  3G
 #endif
 #ifdef GC_LARGEPAGESIZE
 #define BAMBOO_PAGE_SIZE (4 * 1024 * 1024)  // (4096)
index 89a2dbe21f1adef0963552351ab31ea120447061..4467e88d96f89534f4a23a3f69ef72c745ba8ed1 100644 (file)
@@ -500,14 +500,14 @@ INLINE void initruntimedata() {
   gcself_numsendobjs = 0;
   gcself_numreceiveobjs = 0;
   gcmarkedptrbound = 0;
-#ifdef LOCALHASHTBL_TEST
+/*#ifdef LOCALHASHTBL_TEST
   gcpointertbl = allocateRuntimeHash_I(20);
 #else
   gcpointertbl = mgchashCreate_I(2000, 0.75);
-#endif
+#endif*/
   gcforwardobjtbl = allocateMGCHash_I(20, 3);
-  gcobj2map = 0;
-  gcmappedobj = 0;
+  /*gcobj2map = 0;
+  gcmappedobj = 0;*/
   gcnumlobjs = 0;
   gcheaptop = 0;
   gctopcore = 0;
@@ -516,22 +516,6 @@ INLINE void initruntimedata() {
   gctomove = false;
   gcmovepending = 0;
   gcblock2fill = 0;
-  if(BAMBOO_NUM_OF_CORE < NUMCORES4GC) {
-       int t_size = ((BAMBOO_RMSP_SIZE)-sizeof(mgcsharedhashtbl_t)*2
-               -128*sizeof(size_t))/sizeof(mgcsharedhashlistnode_t)-2;
-       int kk = 0;
-       unsigned int tmp_k = 1 << (sizeof(int)*8 -1);
-       while(((t_size & tmp_k) == 0) && (kk < sizeof(int)*8)) {
-         t_size = t_size << 1;
-         kk++;
-       }
-       t_size = tmp_k >> kk;
-       gcsharedptbl = mgcsharedhashCreate_I(t_size,0.30);
-  } else {
-       gcsharedptbl = NULL;
-  }
-  BAMBOO_MEMSET_WH(gcrpointertbls, 0, 
-         sizeof(mgcsharedhashtbl_t *)*NUMCORES4GC);
 #ifdef SMEMM
   gcmem_mixed_threshold = (unsigned int)((BAMBOO_SHARED_MEM_SIZE
                -bamboo_reserved_smem*BAMBOO_SMEM_SIZE)*0.8);
@@ -567,11 +551,6 @@ INLINE void initruntimedata() {
 
 INLINE void disruntimedata() {
 #ifdef MULTICORE_GC
-#ifdef LOCALHASHTBL_TEST
-  freeRuntimeHash(gcpointertbl);
-#else
-  mgchashDelete(gcpointertbl);
-#endif
   freeMGCHash(gcforwardobjtbl);
 #endif // MULTICORE_GC
 #ifdef TASK
@@ -879,7 +858,6 @@ INLINE int checkMsgLength_I(int size) {
   case GCSTARTPRE:
   case GCSTARTINIT:
   case GCSTART:
-  case GCSTARTMAPINFO:
   case GCSTARTFLUSH:
   case GCFINISH:
   case GCMARKCONFIRM:
@@ -901,7 +879,6 @@ INLINE int checkMsgLength_I(int size) {
   case GCSTARTCOMPACT:
   case GCMARKEDOBJ:
   case GCFINISHINIT:
-  case GCFINISHMAPINFO:
   case GCFINISHFLUSH:
 #ifdef GC_CACHE_ADAPT
   case GCFINISHPREF:
@@ -914,12 +891,6 @@ INLINE int checkMsgLength_I(int size) {
 
   case MEMREQUEST:
   case MEMRESPONSE:
-#ifdef MULTICORE_GC
-  case GCMAPREQUEST:
-  case GCMAPINFO:
-  case GCMAPTBL:
-  case GCLOBJMAPPING:
-#endif
   {
        msglength = 3;
        break;
@@ -1225,10 +1196,6 @@ INLINE void processmsg_gcstartcompact_I() {
   gcphase = COMPACTPHASE;
 }
 
-INLINE void processmsg_gcstartmapinfo_I() {
-  gcphase = MAPPHASE;
-}
-
 INLINE void processmsg_gcstartflush_I() {
   gcphase = FLUSHPHASE;
 }
@@ -1351,24 +1318,6 @@ INLINE void processmsg_gcfinishcompact_I() {
   }  // if(cnum < NUMCORES4GC)
 }
 
-INLINE void processmsg_gcfinishmapinfo_I() {
-  int data1 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  // received a map phase finish msg
-  if(BAMBOO_NUM_OF_CORE != STARTUPCORE) {
-    // non startup core can not receive this msg
-#ifndef CLOSE_PRINT
-    BAMBOO_DEBUGPRINT_REG(data1);
-#endif
-    BAMBOO_EXIT(0xe018);
-  }
-  // all cores should do flush
-  if(data1 < NUMCORES4GC) {
-    gccorestatus[data1] = 0;
-  }
-}
-
-
 INLINE void processmsg_gcfinishflush_I() {
   int data1 = msgdata[msgdataindex];
   MSG_INDEXINC_I();
@@ -1464,57 +1413,6 @@ INLINE void processmsg_gcmovestart_I() {
   MSG_INDEXINC_I();       //msgdata[3];
 }
 
-INLINE void processmsg_gcmaprequest_I() {
-  void * dstptr = NULL;
-  int data1 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  int data2 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-#ifdef LOCALHASHTBL_TEST
-  RuntimeHashget(gcpointertbl, data1, &dstptr);
-#else
-  dstptr = mgchashSearch(gcpointertbl, data1);
-#endif
-  if(NULL == dstptr) {
-    // no such pointer in this core, something is wrong
-#ifndef CLOSE_PRINT
-    BAMBOO_DEBUGPRINT_REG(data1);
-    BAMBOO_DEBUGPRINT_REG(data2);
-#endif
-    BAMBOO_EXIT(0xe01c);
-  } else {
-    // send back the mapping info, cache the msg first
-    if(BAMBOO_CHECK_SEND_MODE()) {
-         cache_msg_3(data2, GCMAPINFO, data1, (int)dstptr);
-    } else {
-         send_msg_3(data2, GCMAPINFO, data1, (int)dstptr, true);
-    }
-  }
-}
-
-INLINE void processmsg_gcmapinfo_I() {
-  int data1 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  gcmappedobj = msgdata[msgdataindex];  // [2]
-  MSG_INDEXINC_I();
-#ifdef LOCALHASHTBL_TEST
-  RuntimeHashadd_I(gcpointertbl, data1, gcmappedobj);
-#else
-  mgchashInsert_I(gcpointertbl, data1, gcmappedobj);
-#endif
-  if(data1 == gcobj2map) {
-       gcismapped = true;
-  }
-}
-
-INLINE void processmsg_gcmaptbl_I() {
-  int data1 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  int data2 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  gcrpointertbls[data2] = (mgcsharedhashtbl_t *)data1; 
-}
-
 INLINE void processmsg_gclobjinfo_I() {
   numconfirm--;
 
@@ -1548,19 +1446,6 @@ INLINE void processmsg_gclobjinfo_I() {
   }  // for(int k = 5; k < msgdata[1];)
 }
 
-INLINE void processmsg_gclobjmapping_I() {
-  int data1 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  int data2 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-#ifdef LOCALHASHTBL_TEST
-  RuntimeHashadd_I(gcpointertbl, data1, data2);
-#else
-  mgchashInsert_I(gcpointertbl, data1, data2);
-#endif
-  mgcsharedhashInsert_I(gcsharedptbl, data1, data2);
-}
-
 #ifdef GC_PROFILE
 INLINE void processmsg_gcprofiles_I() {
   int data1 = msgdata[msgdataindex];
@@ -1785,12 +1670,6 @@ processmsg:
       break;
     }   // case GCSTARTCOMPACT
 
-       case GCSTARTMAPINFO: {
-      // received a flush phase start msg
-      processmsg_gcstartmapinfo_I();
-      break;
-    }   // case GCSTARTFLUSH
-
     case GCSTARTFLUSH: {
       // received a flush phase start msg
       processmsg_gcstartflush_I();
@@ -1818,11 +1697,6 @@ processmsg:
       break;
     }   // case GCFINISHCOMPACT
 
-       case GCFINISHMAPINFO: {
-      processmsg_gcfinishmapinfo_I();
-      break;
-    }   // case GCFINISHMAPINFO
-
     case GCFINISHFLUSH: {
       processmsg_gcfinishflush_I();
       break;
@@ -1857,24 +1731,6 @@ processmsg:
       break;
     }   // case GCMOVESTART
 
-    case GCMAPREQUEST: {
-      // received a mapping info request msg
-      processmsg_gcmaprequest_I();
-      break;
-    }   // case GCMAPREQUEST
-
-    case GCMAPINFO: {
-      // received a mapping info response msg
-      processmsg_gcmapinfo_I();
-      break;
-    }   // case GCMAPINFO
-
-    case GCMAPTBL: {
-      // received a mapping tbl response msg
-      processmsg_gcmaptbl_I();
-      break;
-    }   // case GCMAPTBL
-       
        case GCLOBJREQUEST: {
       // received a large objs info request msg
       transferMarkResults_I();
@@ -1887,12 +1743,6 @@ processmsg:
       break;
     }   // case GCLOBJINFO
 
-    case GCLOBJMAPPING: {
-      // received a large obj mapping info msg
-      processmsg_gclobjmapping_I();
-      break;
-    }  // case GCLOBJMAPPING
-
 #ifdef GC_PROFILE
        case GCPROFILES: {
       // received a gcprofiles msg
index 9be910f7b138b9c565e5dda3190d7e88b4fc1a52..4a44092c9c39d80ab67a23b3648aa4afb42862b3 100644 (file)
@@ -238,33 +238,27 @@ typedef enum {
   GCSTARTINIT,           // 0xE3
   GCSTART,               // 0xE4
   GCSTARTCOMPACT,        // 0xE5
-  GCSTARTMAPINFO,        // 0xE6
-  GCSTARTFLUSH,          // 0xE7
-  GCFINISHPRE,           // 0xE8
-  GCFINISHINIT,          // 0xE9
-  GCFINISHMARK,          // 0xEa
-  GCFINISHCOMPACT,       // 0xEb
-  GCFINISHMAPINFO,       // 0xEc
-  GCFINISHFLUSH,         // 0xEd
-  GCFINISH,              // 0xEe
-  GCMARKCONFIRM,         // 0xEf
-  GCMARKREPORT,          // 0xF0
-  GCMARKEDOBJ,           // 0xF1
-  GCMOVESTART,           // 0xF2
-  GCMAPREQUEST,          // 0xF3
-  GCMAPINFO,             // 0xF4
-  GCMAPTBL,              // 0xF5
-  GCLOBJREQUEST,         // 0xF6
-  GCLOBJINFO,            // 0xF7
-  GCLOBJMAPPING,         // 0xF8
+  GCSTARTFLUSH,          // 0xE6
+  GCFINISHPRE,           // 0xE7
+  GCFINISHINIT,          // 0xE8
+  GCFINISHMARK,          // 0xE9
+  GCFINISHCOMPACT,       // 0xEa
+  GCFINISHFLUSH,         // 0xEb
+  GCFINISH,              // 0xEc
+  GCMARKCONFIRM,         // 0xEd
+  GCMARKREPORT,          // 0xEe
+  GCMARKEDOBJ,           // 0xEf
+  GCMOVESTART,           // 0xF0
+  GCLOBJREQUEST,         // 0xF1   
+  GCLOBJINFO,            // 0xF2
 #ifdef GC_PROFILE
-  GCPROFILES,            // 0xF9
+  GCPROFILES,            // 0xF3
 #endif // GC_PROFILE
 #ifdef GC_CACHE_ADAPT
-  GCSTARTPOSTINIT,       // 0xFa
-  GCSTARTPREF,           // 0xFb
-  GCFINISHPOSTINIT,      // 0xFc
-  GCFINISHPREF,          // 0xFd
+  GCSTARTPOSTINIT,       // 0xF4
+  GCSTARTPREF,           // 0xF5
+  GCFINISHPOSTINIT,      // 0xF6
+  GCFINISHPREF,          // 0xF7
 #endif // GC_CACHE_ADAPT
 #endif // MULTICORE_GC
   MSGEND
index 1849ea03e2fd04247b3795bc5c46cc398e77294b..8844c358ed836d4573ad5b280c614b4a41ba3899 100644 (file)
@@ -4,32 +4,6 @@
 #include "runtime.h"
 #include "runtime_arch.h"
 
-void * mycalloc(int m, 
-                       int size) {
-  void * p = NULL;
-  int isize = size; 
-  BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-#ifdef MULTICORE_GC
-  extern bool gc_localheap_s;
-inermycalloc_i:
-  p = gc_localheap_s ? BAMBOO_LOCAL_MEM_CALLOC_S(m, isize) : 
-       BAMBOO_LOCAL_MEM_CALLOC(m, isize);
-#else
-  p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
-#endif
-  if(p == NULL) {
-#ifdef MULTICORE_GC
-       if(!gc_localheap_s) {
-         gc_localheap_s = true;
-         goto inermycalloc_i;
-       }
-#endif
-         BAMBOO_EXIT(0xc001);
-  }
-  BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-  return p;
-}
-
 #ifdef MULTICORE_GC
 void * mycalloc_share(struct garbagelist * stackptr, 
                              int m, 
@@ -64,32 +38,6 @@ memalloc:
   BAMBOO_MEMSET_WH(alignedp + size, -2, p + isize - alignedp - size);
        return alignedp;
 }
-
-void * mycalloc_share_ngc(int m, 
-                                             int size) {
-  void * p = NULL;
-  BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-  p = BAMBOO_SHARED_MEM_CALLOC_NGC_I(m, size); // calloc(m, isize);
-  BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-  return p;
-}
-
-void * mycalloc_share_ngc_I(int m, 
-                                               int size) {
-  void * p = NULL;
-  p = BAMBOO_SHARED_MEM_CALLOC_NGC_I(m, size); // calloc(m, isize);
-  return p;
-}
-
-void mycalloc_free_ngc(void * ptr) {
-  BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
-  BAMBOO_SHARED_MEM_FREE_NGC_I(ptr);
-  BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
-}
-
-void mycalloc_free_ngc_I(void * ptr) {
-  BAMBOO_SHARED_MEM_FREE_NGC_I(ptr);
-}
 #else
 void * mycalloc_share(int m, 
                                  int size) {
@@ -108,6 +56,33 @@ void * mycalloc_share(int m,
 }
 #endif
 
+void * mycalloc(int m, 
+                       int size) {
+  void * p = NULL;
+  int isize = size; 
+  BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
+#ifdef MULTICORE_GC
+  extern bool gc_localheap_s;
+inermycalloc_i:
+  p = gc_localheap_s ? BAMBOO_LOCAL_MEM_CALLOC_S(m, isize) : 
+       BAMBOO_LOCAL_MEM_CALLOC(m, isize);
+#else
+  p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
+#endif
+  if(p == NULL) {
+#ifdef MULTICORE_GC
+       if(!gc_localheap_s) {
+         gc_localheap_s = true;
+         goto inermycalloc_i;
+       }
+#endif
+         BAMBOO_EXIT(0xc001);
+  }
+  BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
+  return p;
+}
+
+
 void * mycalloc_i(int m, 
                          int size) {
   void * p = NULL;
index 5aca44b5666ea71ca6fc361aa95988ed2efb5ad1..6f8bee978a40d73cd3f59a6750d364a181025917 100644 (file)
@@ -37,10 +37,6 @@ void * mycalloc_share_ngc_I(int m, int size);
 void mycalloc_free_ngc(void * ptr);
 void mycalloc_free_ngc_I(void * ptr);
 #define FREEMALLOC(s, x) mycalloc_share((s),1,(x))
-#define FREEMALLOC_NGC(x) mycalloc_share_ngc(1, (x))
-#define FREEMALLOC_NGC_I(x) mycalloc_share_ngc_I(1, (x))
-#define FREE_NGC(x) mycalloc_free_ngc(x)
-#define FREE_NGC_I(x) mycalloc_free_ngc_I(x)
 #else
 void * mycalloc_share(int m, int size);
 #define FREEMALLOC(x) mycalloc_share(1,x)
index a6890d86b3804331354cae9cd906b0ed4e6a7111..2dd0f853aa3ee9e232160712ed62193f5adbd289 100755 (executable)
@@ -937,6 +937,7 @@ rm ./*
 if $MGCFLAG
 then
 export TILERACFLAGS="-DMULTICORE -DCLOSE_PRINT -DTILERA"
+#-DMAPPINGTBL_DEBUG"
 else
 export TILERACFLAGS="-DTASK -DMULTICORE -DCLOSE_PRINT -DTILERA"
 fi