From dbdac3eb37da869f40adfa756616240ca293ed1c Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Mon, 6 Jul 2009 11:22:27 +0000 Subject: [PATCH] Fix generational GC bug (#3348) --- rts/sm/Scav.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c index d5e9b12..b850423 100644 --- a/rts/sm/Scav.c +++ b/rts/sm/Scav.c @@ -1364,20 +1364,7 @@ scavenge_one(StgPtr p) case IND_OLDGEN: case IND_OLDGEN_PERM: case IND_STATIC: - { - /* Careful here: a THUNK can be on the mutable list because - * it contains pointers to young gen objects. If such a thunk - * is updated, the IND_OLDGEN will be added to the mutable - * list again, and we'll scavenge it twice. evacuate() - * doesn't check whether the object has already been - * evacuated, so we perform that check here. - */ - StgClosure *q = ((StgInd *)p)->indirectee; - if (HEAP_ALLOCED_GC(q) && Bdescr((StgPtr)q)->flags & BF_EVACUATED) { - break; - } evacuate(&((StgInd *)p)->indirectee); - } #if 0 && defined(DEBUG) if (RtsFlags.DebugFlags.gc) -- 1.7.10.4