From: Simon Marlow Date: Tue, 21 Mar 2006 11:27:33 +0000 (+0000) Subject: small changes to fix retainer profiling on HEAD X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=d10027800c4f05beeeb2cd53fae06d7bc2e380fc small changes to fix retainer profiling on HEAD --- diff --git a/ghc/rts/RetainerProfile.c b/ghc/rts/RetainerProfile.c index 80708fa..5208c59 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