summaryrefslogtreecommitdiff
path: root/rts/Sparks.c
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2006-06-23 09:20:44 +0000
committerSimon Marlow <simonmar@microsoft.com>2006-06-23 09:20:44 +0000
commite2eebc0d70de13de6d58e2af89f90ec71e54375c (patch)
tree34f1593eb89b5ee5e8d16daca46a0874428a2f3c /rts/Sparks.c
parent0515203109e5f21363e6e1571efce808e6c61cbd (diff)
downloadhaskell-e2eebc0d70de13de6d58e2af89f90ec71e54375c.tar.gz
fix a couple of bugs in markSparkQueue (#799)
Diffstat (limited to 'rts/Sparks.c')
-rw-r--r--rts/Sparks.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/rts/Sparks.c b/rts/Sparks.c
index 68ad19ddd3..c7a1c9f98a 100644
--- a/rts/Sparks.c
+++ b/rts/Sparks.c
@@ -129,13 +129,15 @@ markSparkQueue (evac_fn evac)
sparkp = pool->hd;
to_sparkp = pool->hd;
while (sparkp != pool->tl) {
- ASSERT(to_sparkp<=sparkp);
ASSERT(*sparkp!=NULL);
ASSERT(LOOKS_LIKE_CLOSURE_PTR(((StgClosure *)*sparkp)));
// ToDo?: statistics gathering here (also for GUM!)
if (closure_SHOULD_SPARK(*sparkp)) {
evac(sparkp);
*to_sparkp++ = *sparkp;
+ if (to_sparkp == pool->lim) {
+ to_sparkp = pool->base;
+ }
n++;
} else {
pruned_sparks++;