if (HEAP_ALLOCED(q)) {
bd = Bdescr(q);
- if (bd->flags & BF_COMPACTED)
+ if (bd->flags & BF_MARKED)
{
iptr = *q;
switch (GET_CLOSURE_TAG((StgClosure *)iptr))
// 1. thread the roots
markCapabilities((evac_fn)thread_root, NULL);
+ // spark queues
+ traverseSparkQueues((evac_fn)thread_root, NULL);
+
// the weak pointer lists...
if (weak_ptr_list != NULL) {
thread((void *)&weak_ptr_list);
}
// the global thread list
- thread((void *)&all_threads);
+ for (s = 0; s < total_steps; s++) {
+ thread((void *)&all_steps[s].threads);
+ }
// any threads resurrected during this GC
thread((void *)&resurrected_threads);