start_gc_threads();
/* How many threads will be participating in this GC?
- * We don't try to parallelise minor GC.
+ * We don't try to parallelise minor GC, or mark/compact/sweep GC.
*/
#if defined(THREADED_RTS)
- if (n < (4*1024*1024 / BLOCK_SIZE)) {
+ if (n < (4*1024*1024 / BLOCK_SIZE) || oldest_gen->steps[0].mark) {
n_gc_threads = 1;
} else {
n_gc_threads = RtsFlags.ParFlags.gcThreads;
// Update pointers from the Task list
update_task_list();
- // Update pointers from capabilities (probably just the spark queues)
- updateCapabilitiesPostGC();
-
// Now see which stable names are still alive.
gcStablePtrTable();