diff options
author | Simon Marlow <simonmar@microsoft.com> | 2006-03-21 11:27:33 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2006-03-21 11:27:33 +0000 |
commit | d10027800c4f05beeeb2cd53fae06d7bc2e380fc (patch) | |
tree | b4b3213c6c0d65279b03d42a94079ac9f38ba916 | |
parent | 1cccf54bcd78f730bb1d4ec01b3562bcb88b5b6d (diff) | |
download | haskell-d10027800c4f05beeeb2cd53fae06d7bc2e380fc.tar.gz |
small changes to fix retainer profiling on HEAD
-rw-r--r-- | ghc/rts/RetainerProfile.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ghc/rts/RetainerProfile.c b/ghc/rts/RetainerProfile.c index 80708fa002..5208c59bc0 100644 --- a/ghc/rts/RetainerProfile.c +++ b/ghc/rts/RetainerProfile.c @@ -1734,7 +1734,7 @@ retainRoot( StgClosure **tl ) ASSERT(isEmptyRetainerStack()); currentStackBoundary = stackTop; - if (isRetainer(*tl)) { + if (*tl != &stg_END_TSO_QUEUE_closure && isRetainer(*tl)) { retainClosure(*tl, *tl, getRetainerFrom(*tl)); } else { retainClosure(*tl, *tl, CCS_SYSTEM); @@ -1778,7 +1778,8 @@ computeRetainerSet( void ) // object (computing sumOfNewCostExtra and updating costArray[] when // debugging retainer profiler). for (g = 0; g < RtsFlags.GcFlags.generations; g++) { - ASSERT(g != 0 || (generations[g].mut_list == NULL)); + // NOT TRUE: even G0 has a block on its mutable list + // ASSERT(g != 0 || (generations[g].mut_list == NULL)); // Traversing through mut_list is necessary // because we can find MUT_VAR objects which have not been |