void initSparkPools (void);
void freeSparkPool (StgSparkPool *pool);
void createSparkThread (Capability *cap, StgClosure *p);
-void updateSparkQueue (Capability *cap);
+void markSparkQueue (evac_fn evac, void *user, Capability *cap);
void traverseSparkQueue(evac_fn evac, void *user, Capability *cap);
INLINE_HEADER void discardSparks (StgSparkPool *pool);
sparkPoolSize (StgSparkPool *pool)
{
if (pool->hd <= pool->tl) {
- return (pool->hd - pool->tl);
+ return (pool->tl - pool->hd);
} else {
return (pool->lim - pool->hd + pool->tl - pool->base);
}