X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FCapability.c;h=444532480d1148e83b56a3ba784a3a0476893a29;hb=78260da4deee97a866ba83f8d73a8284b371f405;hp=fa7f63069f0b909f758ea18db0beacc207ef08de;hpb=01ccdeea34b4853750326126f3bff9b2bdfa9a32;p=ghc-hetmet.git diff --git a/rts/Capability.c b/rts/Capability.c index fa7f630..4445324 100644 --- a/rts/Capability.c +++ b/rts/Capability.c @@ -791,8 +791,12 @@ markSomeCapabilities (evac_fn evac, void *user, nat i0, nat delta) "evac'ing suspended TSO %lu", (unsigned long)task->suspended_tso->id); evac(user, (StgClosure **)(void *)&task->suspended_tso); } + +#if defined(THREADED_RTS) + markSparkQueue (evac, user, cap); +#endif } - + #if !defined(THREADED_RTS) evac(user, (StgClosure **)(void *)&blocked_queue_hd); evac(user, (StgClosure **)(void *)&blocked_queue_tl); @@ -800,20 +804,6 @@ markSomeCapabilities (evac_fn evac, void *user, nat i0, nat delta) #endif } -// Sparks are not roots for GC, so we don't mark them in -// markSomeCapabilities(). Instead, we traverse the spark queues -// after GC and throw away any that are unreachable. -void -updateCapabilitiesPostGC (void) -{ -#if defined(THREADED_RTS) - nat i; - for (i = 0; i < n_capabilities; i++) { - updateSparkQueue (&capabilities[i]); - } -#endif // THREADED_RTS -} - // This function is used by the compacting GC to thread all the // pointers from spark queues. void