Commit d1002780 authored by Simon Marlow's avatar Simon Marlow
Browse files

small changes to fix retainer profiling on HEAD

parent 1cccf54b
...@@ -1734,7 +1734,7 @@ retainRoot( StgClosure **tl ) ...@@ -1734,7 +1734,7 @@ retainRoot( StgClosure **tl )
ASSERT(isEmptyRetainerStack()); ASSERT(isEmptyRetainerStack());
currentStackBoundary = stackTop; currentStackBoundary = stackTop;
if (isRetainer(*tl)) { if (*tl != &stg_END_TSO_QUEUE_closure && isRetainer(*tl)) {
retainClosure(*tl, *tl, getRetainerFrom(*tl)); retainClosure(*tl, *tl, getRetainerFrom(*tl));
} else { } else {
retainClosure(*tl, *tl, CCS_SYSTEM); retainClosure(*tl, *tl, CCS_SYSTEM);
...@@ -1778,7 +1778,8 @@ computeRetainerSet( void ) ...@@ -1778,7 +1778,8 @@ computeRetainerSet( void )
// object (computing sumOfNewCostExtra and updating costArray[] when // object (computing sumOfNewCostExtra and updating costArray[] when
// debugging retainer profiler). // debugging retainer profiler).
for (g = 0; g < RtsFlags.GcFlags.generations; g++) { 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 // Traversing through mut_list is necessary
// because we can find MUT_VAR objects which have not been // because we can find MUT_VAR objects which have not been
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment