// thread for a bit, even if there are others banging at the
// door.
first = rtsFalse;
+ ASSERT_CAPABILITY_INVARIANTS(cap,task);
} else {
// Yield the capability to higher-priority tasks if necessary.
yieldCapability(&cap, task);
}
#endif
- ASSERT(cap->running_task == task);
- ASSERT(task->cap == cap);
- ASSERT(myTask() == task);
-
// Check whether we have re-entered the RTS from Haskell without
// going via suspendThread()/resumeThread (i.e. a 'safe' foreign
// call).
if (ret == ThreadBlocked) continue;
#endif
- ASSERT(cap->running_task == task);
- ASSERT(task->cap == cap);
- ASSERT(myTask() == task);
+ ASSERT_CAPABILITY_INVARIANTS(cap,task);
// The TSO might have moved, eg. if it re-entered the RTS and a GC
// happened. So find the new location:
cap = schedule(cap,task);
ASSERT(task->stat != NoStatus);
- ASSERT(cap->running_task == task);
- ASSERT(task->cap == cap);
+ ASSERT_CAPABILITY_INVARIANTS(cap,task);
IF_DEBUG(scheduler, sched_belch("bound thread (%d) finished", task->tso->id));
return cap;