X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FGCAux.c;h=66806f4d3fe43f701eb3d3f378a9a9f7a4e2cb77;hb=78260da4deee97a866ba83f8d73a8284b371f405;hp=825d0f9a3edeb06831c6e571794589aa9dc76461;hpb=4e79709df545c16812b85f2c27ab3411f5a7b54f;p=ghc-hetmet.git diff --git a/rts/sm/GCAux.c b/rts/sm/GCAux.c index 825d0f9..66806f4 100644 --- a/rts/sm/GCAux.c +++ b/rts/sm/GCAux.c @@ -62,11 +62,16 @@ isAlive(StgClosure *p) // 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; }