-INLINE_HEADER void discardSparks (StgSparkPool *pool);
-INLINE_HEADER nat sparkPoolSize (StgSparkPool *pool);
-INLINE_HEADER rtsBool emptySparkPool (StgSparkPool *pool);
+typedef WSDeque SparkPool;
+
+// Initialisation
+void initSparkPools (void);
+
+// Take a spark from the "write" end of the pool. Can be called
+// by the pool owner only.
+INLINE_HEADER StgClosure* reclaimSpark(SparkPool *pool);
+
+// Returns True if the spark pool is empty (can give a false positive
+// if the pool is almost empty).
+INLINE_HEADER rtsBool looksEmpty(SparkPool* deque);
+
+StgClosure * tryStealSpark (Capability *cap);
+void freeSparkPool (SparkPool *pool);
+void createSparkThread (Capability *cap);
+void traverseSparkQueue(evac_fn evac, void *user, Capability *cap);
+void pruneSparkQueue (evac_fn evac, void *user, Capability *cap);