#endif
ready_to_gc = rtsTrue;
- context_switch = 1; /* stop other threads ASAP */
PUSH_ON_RUN_QUEUE(t);
/* actual GC is done at the end of the while loop */
break;
IF_DEBUG(scheduler, sched_belch("worker (token %d): leaving RTS", tok));
#endif
+ in_haskell = rtsFalse;
RELEASE_LOCK(&sched_mutex);
errno = saved_errno;
- in_haskell = rtsFalse;
return tok;
}
tso->why_blocked = NotBlocked;
cap->r.rCurrentTSO = tso;
+ in_haskell = rtsTrue;
RELEASE_LOCK(&sched_mutex);
errno = saved_errno;
- in_haskell = rtsTrue;
return &cap->r;
}
tso->link = dest;
tso->sp = (P_)&(tso->stack[tso->stack_size]);
tso->why_blocked = NotBlocked;
- dest->mut_link = NULL;
IF_PAR_DEBUG(verbose,
debugBelch("@@ threadStackOverflow of TSO %d (now at %p): stack size increased to %ld\n",