X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FCapability.c;h=bffb7356127700cd21f5066bc27563c89b60b7ba;hb=104b00d80891ff1010905df517a9b9c465078c31;hp=82343597ed1260a5f50bcd42a24a498b810fab42;hpb=150ac5e907ec5096660f90caaa5f076da181d81b;p=ghc-hetmet.git diff --git a/rts/Capability.c b/rts/Capability.c index 8234359..bffb735 100644 --- a/rts/Capability.c +++ b/rts/Capability.c @@ -225,8 +225,10 @@ initCapability( Capability *cap, nat i ) cap->returning_tasks_tl = NULL; cap->inbox = (Message*)END_TSO_QUEUE; cap->sparks_created = 0; + cap->sparks_dud = 0; cap->sparks_converted = 0; - cap->sparks_pruned = 0; + cap->sparks_gcd = 0; + cap->sparks_fizzled = 0; #endif cap->f.stgEagerBlackholeInfo = (W_)&__stg_EAGER_BLACKHOLE_info; @@ -456,12 +458,16 @@ releaseCapabilityAndQueueWorker (Capability* cap USED_IF_THREADS) task = cap->running_task; + // If the Task is stopped, we shouldn't be yielding, we should + // be just exiting. + ASSERT(!task->stopped); + // If the current task is a worker, save it on the spare_workers // list of this Capability. A worker can mark itself as stopped, // in which case it is not replaced on the spare_worker queue. // This happens when the system is shutting down (see // Schedule.c:workerStart()). - if (!isBoundTask(task) && !task->stopped) + if (!isBoundTask(task)) { if (cap->n_spare_workers < MAX_SPARE_WORKERS) {