diff --git a/emper/strategies/laws/LawsScheduler.cpp b/emper/strategies/laws/LawsScheduler.cpp index 3bf7079a8e0bc7d0ba625c792d91f53d8c1008be..aa39a51480da9b7498416e8fbb054e0a48b4b9d7 100644 --- a/emper/strategies/laws/LawsScheduler.cpp +++ b/emper/strategies/laws/LawsScheduler.cpp @@ -24,23 +24,25 @@ LawsScheduler::LawsScheduler(Runtime& runtime) : AbstractWorkStealingScheduler(r void LawsScheduler::tryScheduleToPriorityQueue(Fiber& fiber) { workeraffinity_t* const affinity_buffer = getAffinityBuffer(fiber); - if (affinity_buffer) { - workeraffinity_t affinity = *affinity_buffer; - workerid_t workerId = Runtime::getWorkerId(); - if (affinity == workerId) { - return; - } - - if (affinity == Fiber::NOT_AFFINE) { - return; - } + if (!affinity_buffer) { + return; + } - // We found a fiber to schedule on a remote prority queue. - increaseRefCount(fiber); - priorityQueues[affinity]->enqueue(&fiber); + workeraffinity_t affinity = *affinity_buffer; + workerid_t workerId = Runtime::getWorkerId(); + if (affinity == workerId) { + return; + } - emper::statsIncr(LawsStrategy::stats.scheduledFibersToPriority); + if (affinity == Fiber::NOT_AFFINE) { + return; } + + // We found a fiber to schedule on a remote prority queue. + increaseRefCount(fiber); + priorityQueues[affinity]->enqueue(&fiber); + + emper::statsIncr(LawsStrategy::stats.scheduledFibersToPriority); } void LawsScheduler::scheduleInternal(Fiber& fiber) {