Commit 44d5cc0d authored by Daniel Gröber (dxld)'s avatar Daniel Gröber (dxld)

rts: retainer: Abstract maxStackSize for generic traversal

parent 2b76cf9e
......@@ -244,6 +244,9 @@ initializeTraverseStack( traverseState *ts )
ts->firstStack->link = NULL;
ts->firstStack->u.back = NULL;
ts->stackSize = 0;
ts->maxStackSize = 0;
newStackBlock(ts, ts->firstStack);
}
......@@ -260,6 +263,12 @@ closeTraverseStack( traverseState *ts )
ts->firstStack = NULL;
}
int
getTraverseStackMaxSize(traverseState *ts)
{
return ts->maxStackSize;
}
/* -----------------------------------------------------------------------------
* Returns true if the whole stack is empty.
* -------------------------------------------------------------------------- */
......@@ -1798,8 +1807,6 @@ retainerProfile(void)
// Now we flips flip.
flip = flip ^ 1;
g_retainerTraverseState.stackSize = 0;
g_retainerTraverseState.maxStackSize = 0;
numObjectVisited = 0;
timesAnyObjectVisited = 0;
......@@ -1819,7 +1826,7 @@ retainerProfile(void)
stat_endRP(
retainerGeneration - 1, // retainerGeneration has just been incremented!
g_retainerTraverseState.maxStackSize,
getTraverseStackMaxSize(&g_retainerTraverseState),
(double)timesAnyObjectVisited / numObjectVisited);
}
......
......@@ -112,6 +112,7 @@ void traverseMaybeInitClosureData(StgClosure *c);
void initializeTraverseStack(traverseState *ts);
void closeTraverseStack(traverseState *ts);
int getTraverseStackMaxSize(traverseState *ts);
W_ traverseWorkStackBlocks(traverseState *ts);
......
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