summaryrefslogtreecommitdiff
path: root/rts/sm/Scav.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/sm/Scav.c')
-rw-r--r--rts/sm/Scav.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c
index b046f39ad5..7a799d6be6 100644
--- a/rts/sm/Scav.c
+++ b/rts/sm/Scav.c
@@ -1300,6 +1300,10 @@ scavenge_one(StgPtr p)
}
case WEAK:
+ // This WEAK object will not be considered by tidyWeakList during this
+ // collection because it is in a generation >= N, but it is on the
+ // mutable list so we must evacuate all of its pointers because some
+ // of them may point into a younger generation.
scavengeLiveWeak((StgWeak *)p);
break;