unpark_tso: call unblockOne() instead of doing the job inline. This
properly migrates the thread, setting its task to point back to the
right capability, if necessary.
// if it decides to do so when it is scheduled.
if (tso -> why_blocked == BlockedOnSTM) {
TRACE("unpark_tso on tso=%p\n", tso);
- tso -> why_blocked = NotBlocked;
- pushOnRunQueue(cap,tso);
+ unblockOne(cap,tso);
} else {
TRACE("spurious unpark_tso on tso=%p\n", tso);
}