X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FProfHeap.c;h=36d4eb5f6f0192f119a139ebe0bdd5141f12ccbe;hb=118b39e4db1a8187af52c1ddb1b299021834a5a2;hp=08597b1d98e2047de13bf66823d054b7ec33a984;hpb=1ed01a871030f05905a9595e4837dfffc087ef64;p=ghc-hetmet.git diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c index 08597b1..36d4eb5 100644 --- a/rts/ProfHeap.c +++ b/rts/ProfHeap.c @@ -144,8 +144,6 @@ static char *type_names[] = { "STOP_FRAME", "CAF_BLACKHOLE", "BLACKHOLE", - "SE_BLACKHOLE", - "SE_CAF_BLACKHOLE", "MVAR_CLEAN", "MVAR_DIRTY", "ARR_WORDS", @@ -162,7 +160,6 @@ static char *type_names[] = { "FETCH_ME", "FETCH_ME_BQ", "RBH", - "EVACUATED", "REMOTE_REF", "TVAR_WATCH_QUEUE", "INVARIANT_CHECK_QUEUE", @@ -173,6 +170,7 @@ static char *type_names[] = { "ATOMICALLY_FRAME", "CATCH_RETRY_FRAME", "CATCH_STM_FRAME", + "WHITEHOLE", "N_CLOSURE_TYPES" }; #endif @@ -182,7 +180,7 @@ static char *type_names[] = { * the band to which this closure's heap space is attributed in the * heap profile. * ------------------------------------------------------------------------- */ -STATIC_INLINE void * +static void * closureIdentity( StgClosure *p ) { switch (RtsFlags.ProfFlags.doHeapProfile) { @@ -397,10 +395,25 @@ void freeProfiling1 (void) void initProfiling2 (void) { + char *prog; + + prog = stgMallocBytes(strlen(prog_name) + 1, "initProfiling2"); + strcpy(prog, prog_name); +#ifdef mingw32_HOST_OS + // on Windows, drop the .exe suffix if there is one + { + char *suff; + suff = strrchr(prog,'.'); + if (suff != NULL && !strcmp(suff,".exe")) { + *suff = '\0'; + } + } +#endif + if (RtsFlags.ProfFlags.doHeapProfile) { /* Initialise the log file name */ - hp_filename = stgMallocBytes(strlen(prog_name) + 6, "hpFileName"); - sprintf(hp_filename, "%s.hp", prog_name); + hp_filename = stgMallocBytes(strlen(prog) + 6, "hpFileName"); + sprintf(hp_filename, "%s.hp", prog); /* open the log file */ if ((hp_file = fopen(hp_filename, "w")) == NULL) { @@ -411,6 +424,8 @@ void initProfiling2 (void) } } + stgFree(prog); + initHeapProfiling(); } @@ -943,8 +958,6 @@ heapCensusChain( Census *census, bdescr *bd ) case IND_OLDGEN: case IND_OLDGEN_PERM: case CAF_BLACKHOLE: - case SE_CAF_BLACKHOLE: - case SE_BLACKHOLE: case BLACKHOLE: case FUN_1_0: case FUN_0_1: @@ -1151,13 +1164,6 @@ heapCensus( void ) #endif // Traverse the heap, collecting the census info - - // First the small_alloc_list: we have to fix the free pointer at - // the end by calling tidyAllocatedLists() first. - tidyAllocateLists(); - heapCensusChain( census, small_alloc_list ); - - // Now traverse the heap in each generation/step. if (RtsFlags.GcFlags.generations == 1) { heapCensusChain( census, g0s0->blocks ); } else {