diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-03-02 18:13:52 -0500 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-03-09 06:10:52 -0400 |
commit | 70d2b9956d1ecc9d40d1e2d4920983af00ea846d (patch) | |
tree | a1bda450d47a274098e779432415a18108c342f6 /rts/Sparks.h | |
parent | 067632342cf2f063b0f23c255740e2717e5e14c7 (diff) | |
download | haskell-70d2b9956d1ecc9d40d1e2d4920983af00ea846d.tar.gz |
nonmoving: Fix collection of sparks
Previously sparks living in the non-moving heap would be promptly GC'd
by the minor collector since pruneSparkQueue uses the BF_EVACUATED flag,
which non-moving heap blocks do not have set.
Fix this by implementing proper support in pruneSparkQueue for
determining reachability in the non-moving heap. The story is told in
Note [Spark management in the nonmoving heap].
Diffstat (limited to 'rts/Sparks.h')
-rw-r--r-- | rts/Sparks.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/Sparks.h b/rts/Sparks.h index d87d03076d..58817b80af 100644 --- a/rts/Sparks.h +++ b/rts/Sparks.h @@ -45,7 +45,7 @@ INLINE_HEADER bool fizzledSpark (StgClosure *); void freeSparkPool (SparkPool *pool); void createSparkThread (Capability *cap); void traverseSparkQueue(evac_fn evac, void *user, Capability *cap); -void pruneSparkQueue (Capability *cap); +void pruneSparkQueue (bool nonmovingMarkFinished, Capability *cap); INLINE_HEADER void discardSparks (SparkPool *pool); INLINE_HEADER long sparkPoolSize (SparkPool *pool); |