#ifdef USE_THREADS
thread *aThread;
- if (currentThread == NULL) {
+ if (currentThread == NULL || currentThread == mainThread) {
void **top_of_stack = &dummy;
if (top_of_stack > stackbottom)
gc_mark_object_at((void*)aThread);
if (CONTEXT(aThread).usedStackTop > CONTEXT(aThread).stackEnd)
markreferences((void**)CONTEXT(aThread).stackEnd,
- (void**)CONTEXT(aThread).usedStackTop + 64);
+ (void**)CONTEXT(aThread).usedStackTop);
else
- markreferences((void**)CONTEXT(aThread).usedStackTop - 64,
+ markreferences((void**)CONTEXT(aThread).usedStackTop,
(void**)CONTEXT(aThread).stackEnd);
}
intsDisable();
if (currentThread == NULL || currentThread == mainThread) {
- CONTEXT(mainThread).usedStackTop = &dummy;
gc_run();
}
else