summaryrefslogtreecommitdiff
path: root/rts/RetainerProfile.c
diff options
context:
space:
mode:
authorDaniel Gröber <dxld@darkboxed.org>2019-07-16 14:54:37 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-02-17 11:21:11 -0500
commit30c01e4227e99e10e50b05075ec071cf7950ae78 (patch)
treeefe086da6e16a9766644c9ceae8a1c168c54b67d /rts/RetainerProfile.c
parentd7bbaf5d45fd7b88ce331659abe29d16d086684b (diff)
downloadhaskell-30c01e4227e99e10e50b05075ec071cf7950ae78.tar.gz
rts: TraverseHeap: Move "flip" bit into traverseState struct
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r--rts/RetainerProfile.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index 7222bed0ad..81b41b8207 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -251,13 +251,18 @@ associate( StgClosure *c, RetainerSet *s )
{
// StgWord has the same size as pointers, so the following type
// casting is okay.
- setTravData(c, (StgWord)s);
+ setTravData(&g_retainerTraverseState, c, (StgWord)s);
+}
+
+bool isRetainerSetValid( const StgClosure *c )
+{
+ return isTravDataValid(&g_retainerTraverseState, c);
}
inline RetainerSet*
retainerSetOf( const StgClosure *c )
{
- ASSERT(isTravDataValid(c));
+ ASSERT(isRetainerSetValid(c));
return (RetainerSet*)getTravData(c);
}
@@ -355,7 +360,7 @@ retainRoot(void *user, StgClosure **tl)
// be a root.
c = UNTAG_CLOSURE(*tl);
- traverseMaybeInitClosureData(c);
+ traverseMaybeInitClosureData(&g_retainerTraverseState, c);
if (c != &stg_END_TSO_QUEUE_closure && isRetainer(c)) {
traversePushRoot(ts, c, c, (stackData)getRetainerFrom(c));
} else {