// large objects use the evacuated flag
if (bd->flags & BF_LARGE) {
+ if (get_itbl(q)->type == TSO &&
+ ((StgTSO *)p)->what_next == ThreadRelocated) {
+ p = (StgClosure *)((StgTSO *)p)->_link;
+ continue;
+ }
return NULL;
}
// check the mark bit for compacted steps
- if ((bd->flags & BF_COMPACTED) && is_marked((P_)q,bd)) {
+ if ((bd->flags & BF_MARKED) && is_marked((P_)q,bd)) {
return p;
}