summaryrefslogtreecommitdiff
path: root/rts/Sparks.h
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2020-03-02 18:13:52 -0500
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-03-09 06:10:52 -0400
commit70d2b9956d1ecc9d40d1e2d4920983af00ea846d (patch)
treea1bda450d47a274098e779432415a18108c342f6 /rts/Sparks.h
parent067632342cf2f063b0f23c255740e2717e5e14c7 (diff)
downloadhaskell-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.h2
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);