summaryrefslogtreecommitdiff
path: root/rts/sm
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-07-06 11:22:27 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-07-06 11:22:27 +0000
commitdbdac3eb37da869f40adfa756616240ca293ed1c (patch)
treea2887d7640727b77ca36b0ad3dc1948064561331 /rts/sm
parentb41067a9f85d660e42f2105a9484e7935fd02169 (diff)
downloadhaskell-dbdac3eb37da869f40adfa756616240ca293ed1c.tar.gz
Fix generational GC bug (#3348)
Diffstat (limited to 'rts/sm')
-rw-r--r--rts/sm/Scav.c13
1 files changed, 0 insertions, 13 deletions
diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c
index d5e9b12292..b850423244 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)