disable a false assertion, add a comment to explain why
[ghc-hetmet.git] / rts / sm / Scav.c
index e9127ac..466b9b4 100644 (file)
@@ -36,7 +36,6 @@ static void scavenge_large_bitmap (StgPtr p,
 
 #if defined(THREADED_RTS) && !defined(PARALLEL_GC)
 # define evacuate(a) evacuate1(a)
-# define recordMutableGen_GC(a,b) recordMutableGen(a,b)
 # define scavenge_loop(a) scavenge_loop1(a)
 # define scavenge_block(a) scavenge_block1(a)
 # define scavenge_mutable_list(bd,g) scavenge_mutable_list1(bd,g)
@@ -1491,9 +1490,11 @@ scavenge_mutable_list(bdescr *bd, generation *gen)
            case TSO: {
                StgTSO *tso = (StgTSO *)p;
                if (tso->dirty == 0) {
-                    // Must be on the mutable list because its link
-                    // field is dirty.
-                    ASSERT(tso->flags & TSO_LINK_DIRTY);
+                    // Should be on the mutable list because its link
+                    // field is dirty.  However, in parallel GC we may
+                    // have a thread on multiple mutable lists, so
+                    // this assertion would be invalid:
+                    // ASSERT(tso->flags & TSO_LINK_DIRTY);
 
                     scavenge_TSO_link(tso);
                     if (gct->failed_to_evac) {