#include "PosixSource.h"
#include "Rts.h"
+#include "Storage.h"
#include "Schedule.h"
#include "SchedAPI.h"
-#include "Storage.h"
#include "RtsFlags.h"
#include "RtsUtils.h"
#include "ParTicky.h"
#endif
}
+void
+freeSparkPool(StgSparkPool *pool) {
+ stgFree(pool->base);
+}
+
/* -----------------------------------------------------------------------------
*
* findSpark: find a spark on the current Capability that we can fork
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++;