changes
authorbdemsky <bdemsky>
Wed, 20 Jul 2011 08:31:45 +0000 (08:31 +0000)
committerbdemsky <bdemsky>
Wed, 20 Jul 2011 08:31:45 +0000 (08:31 +0000)
Robust/src/Runtime/bamboo/multicorecache.c
Robust/src/Runtime/bamboo/multicorecache.h
Robust/src/Runtime/bamboo/multicoregarbage.c
Robust/src/Runtime/bamboo/multicoremsg.c

index 32445e7d726dfe8651ec5e9ab93b17f5b5807d7e..c8f50fd0fbf4398281350ae26f87c173058ab4e0 100644 (file)
@@ -292,7 +292,7 @@ unsigned int cacheAdapt_decision(int coren) {
 
 // adapt the cache strategy for the mutator
 void cacheAdapt_mutator() {
-#if defined(GC_CACHE_ADAPT_POLICY4)
+#if (defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
   BAMBOO_CACHE_MF();
   // check the changes and adapt them
   unsigned int * tmp_p = gccachepolicytbl;
@@ -327,7 +327,7 @@ void cacheAdapt_phase_client() {
   send_msg_2(STARTUPCORE, GCFINISHPREF, BAMBOO_NUM_OF_CORE);
   GC_PRINTF("Finish prefinish phase\n");
 
-#if defined(GC_CACHE_ADAPT_POLICY4)
+#if (defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
   CACHEADAPT_SAMPLING_RESET();
   if(BAMBOO_NUM_OF_CORE < NUMCORESACTIVE) {
     // zero out the gccachesamplingtbl
@@ -365,7 +365,7 @@ void cacheAdapt_phase_master() {
   cacheAdapt_gc(false);
   GC_CHECK_ALL_CORE_STATUS();
   
-#if defined(GC_CACHE_ADAPT_POLICY4)
+#if (defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
   CACHEADAPT_SAMPLING_RESET();
   if(BAMBOO_NUM_OF_CORE < NUMCORESACTIVE) {
     // zero out the gccachesamplingtbl
index 7e90344573a9cb814f6376c2d31121fec47fda39..79fdf0393c0df3497d6598520749912b497cd500 100644 (file)
@@ -51,7 +51,7 @@ void cacheAdapt_phase_master();
 void gc_output_cache_sampling();
 void gc_output_cache_sampling_r();
 
-#if defined(GC_CACHE_SAMPLING)&&defined(GC_CACHE_ADAPT_POLICY4)
+#if defined(GC_CACHE_SAMPLING)&&(defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
 // enable the timer interrupt
 #define CACHEADAPT_ENABLE_TIMER() \
   { \
@@ -69,7 +69,7 @@ void gc_output_cache_sampling_r();
 #define CACHEADAPT_SAMPLING_RESET() 
 #endif
 
-#if defined(GC_CACHE_ADAPT_POLICY4)
+#if (defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
 #define CACHEADAPT_FINISH_SRC_PAGE(a,b,c) cacheadapt_finish_src_page(a,b,c);
 #define CACHEADAPT_FINISH_DST_PAGE(a,b,c,d) cacheadapt_finish_dst_page(a,b,c,d);
 #define CACHEADAPT_FINISH_COMPACT(a) cacheadapt_finish_compact(a);
index 5f367e6d35929f777dce72b24d996cff5e318b3f..90493563666cdf2d3ee66b467408e61613a76341 100644 (file)
@@ -447,12 +447,12 @@ void gc_master(struct garbagelist * stackptr) {
   CACHEADAPT_GC(true);
   //tprintf("Check core status \n");
   GC_CHECK_ALL_CORE_STATUS();
-  GCPROFILE_ITEM_MASTER();
   unsigned long long tmpt = BAMBOO_GET_EXE_TIME();
   CACHEADAPT_OUTPUT_CACHE_SAMPLING();
   gc_output_cache_policy_time += (BAMBOO_GET_EXE_TIME()-tmpt);
   //tprintf("start mark phase\n");
   // do mark phase
+  GCPROFILE_ITEM_MASTER();
   master_mark(stackptr);
   GCPROFILE_ITEM_MASTER();
   //tprintf("finish mark phase\n");
@@ -508,7 +508,7 @@ void pregccheck() {
 }
 
 void pregcprocessing() {
-#if defined(GC_CACHE_ADAPT)&&defined(GC_CACHE_SAMPLING)&&defined(GC_CACHE_ADAPT_POLICY4)
+#if defined(GC_CACHE_ADAPT)&&defined(GC_CACHE_SAMPLING)&&(defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
   // disable the timer interrupt
   bamboo_mask_timer_intr();
   // get the sampling data 
@@ -517,7 +517,7 @@ void pregcprocessing() {
 }
 
 void postgcprocessing() {
-#if defined(GC_CACHE_ADAPT)&&defined(GC_CACHE_SAMPLING)&&defined(GC_CACHE_ADAPT_POLICY4)
+#if defined(GC_CACHE_ADAPT)&&defined(GC_CACHE_SAMPLING)&&(defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
   // enable the timer interrupt
   bamboo_tile_timer_set_next_event(GC_TILE_TIMER_EVENT_SETTING); 
   bamboo_unmask_timer_intr();
@@ -538,6 +538,9 @@ bool gc(struct garbagelist * stackptr) {
 
   // core coordinator routine
   if(0 == BAMBOO_NUM_OF_CORE) {
+    GC_PRINTF("start gc! \n");
+    GCPROFILE_START_MASTER();
+
     GC_PRINTF("Check if we can do gc or not\n");
     gccorestatus[BAMBOO_NUM_OF_CORE] = 0;
     pregcprocessing();
@@ -547,8 +550,6 @@ bool gc(struct garbagelist * stackptr) {
       ;
 
     //pregccheck();
-    GCPROFILE_START_MASTER();
-    GC_PRINTF("start gc! \n");
     gc_master(stackptr);
   } else if(BAMBOO_NUM_OF_CORE < NUMCORES4GC) {
     GC_PRINTF("Core reporting for gc.\n");
index 43b335c23ea5da4ed039a3ae9f9559b64092c1d1..e620a8ddd4ba952de38de39924438072d735185d 100644 (file)
@@ -353,7 +353,7 @@ void processmsg_statusreport_I() {
 
 void processmsg_terminate_I() {
   disruntimedata();
-#if defined(MULTICORE_GC)&&defined(GC_CACHE_ADAPT)&&defined(GC_CACHE_SAMPLING)&&defined(GC_CACHE_ADAPT_POLICY4)
+#if defined(MULTICORE_GC)&&defined(GC_CACHE_ADAPT)&&defined(GC_CACHE_SAMPLING)&&(defined(GC_CACHE_ADAPT_POLICY4)||defined(GC_CACHE_ADAPT_POLICY3))
   bamboo_mask_timer_intr(); // disable the TILE_TIMER interrupt
 #endif
   BAMBOO_EXIT_APP(0);