diff options
author | Simon Marlow <simonmar@microsoft.com> | 2006-06-23 09:20:44 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2006-06-23 09:20:44 +0000 |
commit | e2eebc0d70de13de6d58e2af89f90ec71e54375c (patch) | |
tree | 34f1593eb89b5ee5e8d16daca46a0874428a2f3c /rts/Sparks.c | |
parent | 0515203109e5f21363e6e1571efce808e6c61cbd (diff) | |
download | haskell-e2eebc0d70de13de6d58e2af89f90ec71e54375c.tar.gz |
fix a couple of bugs in markSparkQueue (#799)
Diffstat (limited to 'rts/Sparks.c')
-rw-r--r-- | rts/Sparks.c | 4 |
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++; |