[commit: ghc] master: heapCensus: we need to traverse the heap fragments stored in the (18197a0)
Simon Marlow
marlowsd at gmail.com
Mon May 9 15:13:04 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/18197a0183e9d4ee6b7da3ad5fe15961ded6cf20
>---------------------------------------------------------------
commit 18197a0183e9d4ee6b7da3ad5fe15961ded6cf20
Author: Simon Marlow <marlowsd at gmail.com>
Date: Mon May 9 11:34:14 2011 +0100
heapCensus: we need to traverse the heap fragments stored in the
gen_workspace structures. Fixes heapprof001(prof_hc_hb).
>---------------------------------------------------------------
rts/ProfHeap.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
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 <string.h>
@@ -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
More information about the Cvs-ghc
mailing list