From 18197a0183e9d4ee6b7da3ad5fe15961ded6cf20 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Mon, 9 May 2011 11:34:14 +0100 Subject: [PATCH] heapCensus: we need to traverse the heap fragments stored in the gen_workspace structures. Fixes heapprof001(prof_hc_hb). --- rts/ProfHeap.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c index 9bd707f..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 @@ -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 -- 1.7.10.4