From d10027800c4f05beeeb2cd53fae06d7bc2e380fc Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Tue, 21 Mar 2006 11:27:33 +0000 Subject: small changes to fix retainer profiling on HEAD --- ghc/rts/RetainerProfile.c | 5 +++-- 1 file 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 -- cgit v1.2.1