diff options
Diffstat (limited to 'rts/sm/CNF.c')
-rw-r--r-- | rts/sm/CNF.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/rts/sm/CNF.c b/rts/sm/CNF.c index f85b390414..87d1d84f50 100644 --- a/rts/sm/CNF.c +++ b/rts/sm/CNF.c @@ -276,7 +276,10 @@ compactFree(StgCompactNFData *str) for ( ; block; block = next) { next = block->next; bd = Bdescr((StgPtr)block); - ASSERT((bd->flags & BF_EVACUATED) == 0); + ASSERT(RtsFlags.GcFlags.useNonmoving || ((bd->flags & BF_EVACUATED) == 0)); + // When using the non-moving collector we leave compact object + // evacuated to the oldset gen as BF_EVACUATED to avoid evacuating + // objects in the non-moving heap. freeGroup(bd); } } |