#endif
#include "multicore_arch.h"
#include <stdio.h>
+#ifdef PERFCOUNT
+#include "bme_perf_counter.h"
+#endif
extern int classsize[];
extern int typearray[];
BAMBOO_PRINT(0xbbbbbbbb);
CACHEADAPT_DISABLE_TIMER();
GC_OUTPUT_PROFILE_DATA();
+#ifdef PERFCOUNT
+ print_statistics();
+#endif
gc_outputProfileDataReadable();
}
#endif
outmsgleft = 0;
isMsgHanging = false;
-
-
-
smemflag = true;
bamboo_cur_msp = NULL;
bamboo_smem_size = 0;
getprofiledata_I();
CACHEADAPT_DISABLE_TIMER();
GC_OUTPUT_PROFILE_DATA();
+#ifdef PERFCOUNT
+ print_statistics();
+#endif
gc_outputProfileDataReadable();
disruntimedata();
BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
initCommunication();
#ifdef PMC_GC
pmc_onceInit();
+#endif
+#ifdef PERFCOUNT
+ profile_init(_LOCAL_DRD_CNT,_LOCAL_WR_CNT, _REMOTE_DRD_CNT, _REMOTE_WR_CNT);
#endif
if (BAMBOO_NUM_OF_CORE==STARTUPCORE) {
numconfirm=NUMCORES-1;
while(!startflag)
;
}
+#ifdef PERFCOUNT
+ bme_performance_counter_start();
+#endif
CACHEADAPT_ENABLE_TIMER();
}
#endif
+#ifdef PERFCOUNT
+ profile_start(APP_REGION);
+#endif
if(STARTUPCORE == BAMBOO_NUM_OF_CORE) {
#ifdef TASK
// run the initStaticAndGlobal method to initialize the static blocks and
#include "pmc_mark.h"
#include "pmc_forward.h"
#include "pmc_refupdate.h"
+#ifdef PERFCOUNT
+#include "bme_perf_counter.h"
+#endif
struct pmc_heap * pmc_heapptr;
struct pmc_queue * pmc_localqueue;
}
void gc(struct garbagelist *gl) {
+#ifdef PERFCOUNT
+ profile_start(GC_REGION);
+#endif
if (BAMBOO_NUM_OF_CORE==STARTUPCORE)
tprintf("start GC\n");
pmc_init();
gcflag=false;
tmc_spin_barrier_wait(&pmc_heapptr->barrier);
+#ifdef PERFCOUNT
+ profile_start(APP_REGION);
+#endif
//tprintf("exit GC\n");
}