summaryrefslogtreecommitdiff
path: root/rts/RetainerProfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r--rts/RetainerProfile.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index 9e9f2462ed..3fa025d19c 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -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);
}