Do not scavenge SMALL_MUT_ARR_PTRS_CLEAN in mut_lists
authorÖmer Sinan Ağacan <omeragacan@gmail.com>
Thu, 7 Jun 2018 04:05:12 +0000 (07:05 +0300)
committerÖmer Sinan Ağacan <omeragacan@gmail.com>
Thu, 7 Jun 2018 04:05:25 +0000 (07:05 +0300)
For the same reason with MUT_ARR_PTRS_CLEAN we don't need to scavenge
SMALL_MUT_ARR_PTRS_CLEAN in mut_lists.

Because SMALL_MUT_ARR_PTRS doesn't have a card table we don't have a
special case when scavenging SMALL_MUT_ARR_PTRS_DIRTY in a mut_list.

Test Plan: this validates

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar, bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4800

rts/sm/Scav.c

index 26687b8..39374c0 100644 (file)
@@ -1583,6 +1583,7 @@ scavenge_mutable_list(bdescr *bd, generation *gen)
             //
             switch (get_itbl((StgClosure *)p)->type) {
             case MUT_ARR_PTRS_CLEAN:
+            case SMALL_MUT_ARR_PTRS_CLEAN:
                 recordMutableGen_GC((StgClosure *)p,gen_no);
                 continue;
             case MUT_ARR_PTRS_DIRTY: