[sgen] Don't do remset consistency checks during majors
authorVlad Brezae <brezaevlad@gmail.com>
Tue, 6 Sep 2016 16:30:31 +0000 (19:30 +0300)
committerVlad Brezae <brezaevlad@gmail.com>
Tue, 6 Sep 2016 16:59:23 +0000 (19:59 +0300)
It doesn't make sense to check the remset during a major since majors dont use the cardtable and we clear it at the start. So we will obviously have missing remsets. For the debugging concurrent case, we should use the mod union consistency checks instead.

mono/sgen/sgen-gc.c

index ec7471bfe47f536d92e9d456d6992df48e156d57..ff078a716739439b233abc2afa39189035ed8c24 100644 (file)
@@ -1786,13 +1786,6 @@ major_copy_or_mark_from_roots (SgenGrayQueue *gc_thread_gray_queue, size_t *old_
        if (old_next_pin_slot)
                *old_next_pin_slot = sgen_get_pinned_count ();
 
-       /*
-        * We don't actually pin when starting a concurrent collection, so the remset
-        * consistency check won't work.
-        */
-       if (remset_consistency_checks && mode != COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT)
-               sgen_check_remset_consistency ();
-
        TV_GETTIME (btv);
        time_major_pinning += TV_ELAPSED (atv, btv);
        SGEN_LOG (2, "Finding pinned pointers: %zd in %lld usecs", sgen_get_pinned_count (), (long long)TV_ELAPSED (atv, btv));