extern unsigned int gcmem_mixed_usedmem;
#endif
+#ifdef MGC
+extern INTPTR bamboo_threadlocks;
+#endif
+
struct pointerblock {
void * ptrs[NUMPTRS];
struct pointerblock *next;
}
}
+ // enqueue the bamboo_threadlocks
+ if(bamboo_threadlocks != 0) {
+ markObj((void *)bamboo_threadlocks);
+ }
+
GC_BAMBOO_DEBUGPRINT(0xe50a);
#endif
} // void tomark(struct garbagelist * stackptr)
#endif
#ifdef MGC
+ // flush the bamboo_threadlocks
+ if(bamboo_threadlocks != 0) {
+ bamboo_threadlocks = (INTPTR)(flushObj((void *)bamboo_threadlocks));
+ }
+
// flush global thread queue
if(STARTUPCORE == BAMBOO_NUM_OF_CORE) {
unsigned int thread_counter = *((unsigned int*)(bamboo_thread_queue+1));
bool isfirst = true;
bool allStall = false;
-
#ifdef GC_CACHE_ADAPT
// prepare for cache adaption:
cacheAdapt_gc(true);
printf("(%x,%x) Start mark phase \n", udn_tile_coord_x(),
udn_tile_coord_y());
#endif
- // all cores have finished compacting
// restore the gcstatus of all cores
// Note: all cores have to do mark including non-gc cores
gccorestatus[BAMBOO_NUM_OF_CORE] = 1;