get it to compile again
authorbdemsky <bdemsky>
Mon, 20 Jun 2011 10:14:43 +0000 (10:14 +0000)
committerbdemsky <bdemsky>
Mon, 20 Jun 2011 10:14:43 +0000 (10:14 +0000)
Robust/src/Runtime/bamboo/multicoregarbage.c
Robust/src/Runtime/bamboo/multicoregarbage.h
Robust/src/Runtime/bamboo/multicoregccompact.c
Robust/src/Runtime/bamboo/multicoregcmark.c
Robust/src/Runtime/bamboo/multicoremem_helper.c
Robust/src/Runtime/bamboo/multicoremsg.c

index 6d37942fafc11ac5d3472950083ae273937423b8..c2172ef35f72ba7912f2437f1a039f8fd5d7109f 100644 (file)
@@ -3,7 +3,6 @@
 #include "multicoreruntime.h"
 #include "multicoregarbage.h"
 #include "multicoregcmark.h"
-#include "gcqueue.h"
 #include "multicoregccompact.h"
 #include "multicoregcflush.h"
 #include "multicoregcprofile.h"
@@ -95,7 +94,6 @@ void initmulticoregcdata() {
 
   gcprecheck = true;
   gcforwardobjtbl = allocateMGCHash_I(128);
-  gcheaptop = 0;
 #ifdef MGC_SPEC
   gc_profile_flag = false;
 #endif
@@ -135,7 +133,6 @@ void initGC() {
       gcnumsendobjs[0][i] = gcnumsendobjs[1][i] = 0;
       gcnumreceiveobjs[0][i] = gcnumreceiveobjs[1][i] = 0;
     }
-    gcheaptop = 0;
     gcnumsrobjs_index = 0;
   } 
   gcself_numsendobjs = 0;
index a3f6890c4697d9b16e3a243402b9bbb49d731538..2ba2550ee4049a62c737751ba33d05980439b842 100644 (file)
@@ -1,4 +1,4 @@
-m#ifndef BAMBOO_MULTICORE_GARBAGE_H
+#ifndef BAMBOO_MULTICORE_GARBAGE_H
 #define BAMBOO_MULTICORE_GARBAGE_H
 #ifdef MULTICORE_GC
 #include "multicore.h"
@@ -61,7 +61,6 @@ unsigned int gcself_numsendobjs;
 unsigned int gcself_numreceiveobjs;
 
 // for load balancing
-unsigned int gcheaptop;
 unsigned INTPTR gcloads[NUMCORES4GC];
 block_t numblockspercore;
 
index 050b4d15287c29b9cc032ece0a1e58ea804378cf..cbb1ba0f94b29d9617609a716f213414650432a4 100644 (file)
@@ -4,6 +4,7 @@
 #include "multicoreruntime.h"
 #include "multicoregarbage.h"
 #include "markbit.h"
+#include "multicoremem_helper.h"
 
 int gc_countRunningCores() {
   int count=0;
@@ -83,9 +84,9 @@ void getSpace(struct moveHelper *to, unsigned int minimumbytes) {
 void compacthelper(struct moveHelper * orig,struct moveHelper * to) {
   bool senttopmessage=false;
   while(true) {
-    if ((gcheaptop < ((unsigned INTPTR)(to->bound-to->ptr)))&&!senttopmessage) {
+    if ((gccurr_heaptop < ((unsigned INTPTR)(to->bound-to->ptr)))&&!senttopmessage) {
       //This block is the last for this core...let the startup know
-      send_msg_3(STARTUPCORE, GCRETURNMEM, BAMBOO_NUM_OF_CORE, to->ptr+gcheaptop);
+      send_msg_3(STARTUPCORE, GCRETURNMEM, BAMBOO_NUM_OF_CORE, to->ptr+gccurr_heaptop);
       //Only send the message once
       senttopmessage=true;
     }
@@ -110,8 +111,7 @@ void compacthelper(struct moveHelper * orig,struct moveHelper * to) {
 }
 
 void * checkNeighbors(int corenum, unsigned INTPTR requiredmem) {
-  int minblockindex=allocation.lowestfreeblock/NUMCORES4GC;
-  block_t toplocalblock=topblock/NUMCORES4GC;
+  int minblockindex=allocationinfo.lowestfreeblock/NUMCORES4GC;
   for(int i=0;i<NUM_CORES2TEST;i++) {
     int neighborcore=core2test[corenum][i];
     if (neighborcore!=-1) {
@@ -135,7 +135,7 @@ void * checkNeighbors(int corenum, unsigned INTPTR requiredmem) {
   return NULL;
 }
 
-void * globalSearch(unsigned int topblock) {
+void * globalSearch(unsigned int topblock, unsigned INTPTR requiredmem) {
   unsigned int firstfree=NOFREEBLOCK;
   for(block_t i=allocationinfo.lowestfreeblock;i<topblock;i++) {
     struct blockrecord * block=&allocationinfo.blocktable[i];
@@ -147,7 +147,7 @@ void * globalSearch(unsigned int topblock) {
        //we have a block
        //mark block as used
        block->status=BS_USED;
-       void *blockptr=OFFSET2BASEVA(globalblockindex)+gcbaseva;
+       void *blockptr=OFFSET2BASEVA(i)+gcbaseva;
        unsigned INTPTR usedspace=((block->usedspace-1)&~BAMBOO_CACHE_LINE_MASK)+BAMBOO_CACHE_LINE_SIZE;
        allocationinfo.lowestfreeblock=firstfree;
        return blockptr+usedspace;
@@ -160,7 +160,7 @@ void * globalSearch(unsigned int topblock) {
 
 /* should be invoked with interrupt turned off */
 
-void * gcfindSpareMem_I(unsigned int requiredmem,unsigned int requiredcore) {
+void * gcfindSpareMem_I(unsigned INTPTR requiredmem,unsigned int requiredcore) {
   if (allocationinfo.lowestfreeblock!=NOFREEBLOCK) {
     //There are spare blocks
     unsigned int topblock=numblockspercore*NUMCORES4GC;
@@ -216,7 +216,7 @@ unsigned int compactblocks(struct moveHelper * orig, struct moveHelper * to) {
          origptr=origbound;
          to->ptr=toptr;
          orig->ptr=origptr;
-         gcheaptop-=(unsigned INTPTR)(toptr-toptrinit)
+         gccurr_heaptop-=(unsigned INTPTR)(toptr-toptrinit);
          return 0;
        }
       } while(!gcmarktbl[arrayoffset]);
@@ -230,7 +230,7 @@ unsigned int compactblocks(struct moveHelper * orig, struct moveHelper * to) {
       unsigned int length=ALIGNSIZETOBYTES(objlength);
       void *endtoptr=toptr+length;
       if (endtoptr>tobound) {
-       gcheaptop-=(unsigned INTPTR)(toptr-toptrinit)   
+       gccurr_heaptop-=(unsigned INTPTR)(toptr-toptrinit);
        to->ptr=tobound;
        orig->ptr=origptr;
        return length;
@@ -267,7 +267,7 @@ void master_compact() {
   gc_resetCoreStatus();
   //initialize local data structures first....we don't want remote requests messing data up
   unsigned int initblocks=numblockspercore*NUMCORES4GC;
-  allocationinfo.lowestfreeblock=NOFREEBLOCKS;
+  allocationinfo.lowestfreeblock=NOFREEBLOCK;
 
   //assigned blocks
   for(int i=0;i<initblocks;i++) {
index 5b07a426ec4b1ea16d7e7cab2f0eca0c4936be61..18866c4af6b44a65a5d0cbc2d949e6a96de853bd 100644 (file)
@@ -247,8 +247,6 @@ void mark(bool isfirst, struct garbagelist * stackptr) {
   if(isfirst) {
     // enqueue root objs
     tomark(stackptr);
-    gccurr_heaptop = 0; // record the size of all active objs in this core
-                        // aligned but does not consider block boundaries
   }
   unsigned int isize = 0;
   bool sendStall = false;
index 611925f23fd72e34906fd7c64eb2aed95c725614..3f2907579b0d9d6e1589678052a39425c656076d 100644 (file)
@@ -1,5 +1,9 @@
-#include "multicoremem_helper.h"
+#include "runtime.h"
+#include "multicoreruntime.h"
 #include "runtime_arch.h"
+#include "multicore_arch.h"
+#include "multicoremem_helper.h"
+
 
 void buildCore2Test() {
   for(int i=0;i<NUMCORES4GC;i++) {
index 038b9fc7937f86db2bef062b6a8a733e6cd7db92..094b615f7fd5f7f9b15346f3383de0f050e6ad70 100644 (file)
@@ -504,7 +504,7 @@ void processmsg_returnmem_I() {
   MSG_INDEXINC_I();   
   unsigned int blockindex;
   BLOCKINDEX(blockindex, heaptop);
-  unsigned INTPTR localblocknum=GLOBALBLOCK2LOCK(blockindex);
+  unsigned INTPTR localblocknum=GLOBALBLOCK2LOCAL(blockindex);
 
   struct blockrecord * blockrecord=&allocationinfo.blocktable[blockindex];
 
@@ -628,23 +628,18 @@ INLINE void processmsg_gcmovestart_I() {
   MSG_INDEXINC_I();     
 }
 
-INLINE void processmsg_gclobjinfo_I(unsigned int data1) {
+INLINE void processmsg_gclobjinfo_I(unsigned int msglength) {
   numconfirm--;
-  int data2 = msgdata[msgdataindex];
+  int cnum = msgdata[msgdataindex];
   MSG_INDEXINC_I();
   BAMBOO_ASSERT(BAMBOO_NUM_OF_CORE <= NUMCORES4GC - 1);
 
   // store the mark result info
-  int cnum = data2;
   gcloads[cnum] = msgdata[msgdataindex];
   MSG_INDEXINC_I();     
-  int data4 = msgdata[msgdataindex];
-  MSG_INDEXINC_I();
-  if(gcheaptop < data4) {
-    gcheaptop = data4;
-  }
+
   // large obj info here
-  for(int k = 4; k < data1; k+=2) {
+  for(int k = 3; k < msglength; k+=2) {
     int lobj = msgdata[msgdataindex];
     MSG_INDEXINC_I();  
     int length = msgdata[msgdataindex];