X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FProfHeap.c;h=7d2a4501292177ba663db3c6d25ffdad10c2bdfb;hb=b2bd63f99d643f6b3eb30bb72bb9ae26d4183252;hp=39b64d4c5126f484c584504477c433d7e714591a;hpb=f30d527344db528618f64a25250a3be557d9f287;p=ghc-hetmet.git diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c index 39b64d4..7d2a450 100644 --- a/rts/ProfHeap.c +++ b/rts/ProfHeap.c @@ -18,6 +18,7 @@ #include "LdvProfile.h" #include "Arena.h" #include "Printer.h" +#include "sm/GCThread.h" #include @@ -309,7 +310,7 @@ void initProfiling1 (void) { } -void freeProfiling1 (void) +void freeProfiling (void) { } @@ -812,7 +813,7 @@ dumpCensus( Census *census ) rs->id = -(rs->id); // report in the unit of bytes: * sizeof(StgWord) - printRetainerSetShort(hp_file, rs); + printRetainerSetShort(hp_file, rs, RtsFlags.ProfFlags.ccsLength); break; } default: @@ -1057,8 +1058,9 @@ heapCensusChain( Census *census, bdescr *bd ) void heapCensus( void ) { - nat g; + nat g, n; Census *census; + gen_workspace *ws; census = &censuses[era]; census->time = mut_user_time(); @@ -1080,6 +1082,13 @@ heapCensus( void ) // Are we interested in large objects? might be // confusing to include the stack in a heap profile. heapCensusChain( census, generations[g].large_objects ); + + for (n = 0; n < n_capabilities; n++) { + ws = &gc_threads[n]->gens[g]; + heapCensusChain(census, ws->todo_bd); + heapCensusChain(census, ws->part_list); + heapCensusChain(census, ws->scavd_list); + } } // dump out the census info