diff options
author | Daniel Gröber <dxld@darkboxed.org> | 2019-07-16 14:54:37 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-02-17 11:21:11 -0500 |
commit | 30c01e4227e99e10e50b05075ec071cf7950ae78 (patch) | |
tree | efe086da6e16a9766644c9ceae8a1c168c54b67d /rts/RetainerProfile.c | |
parent | d7bbaf5d45fd7b88ce331659abe29d16d086684b (diff) | |
download | haskell-30c01e4227e99e10e50b05075ec071cf7950ae78.tar.gz |
rts: TraverseHeap: Move "flip" bit into traverseState struct
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r-- | rts/RetainerProfile.c | 11 |
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 { |