From 3afe6bd73788bd941dc06e4160616dc100bbcc43 Mon Sep 17 00:00:00 2001 From: Maoni Stephens Date: Thu, 15 Jun 2023 16:01:12 -0700 Subject: [PATCH] Don't set mark array bits for UOH objects during concurrent marking (#87533) marking UOH objects was a historical thing from a policy we had a long time ago. and I had been meaning to get rid of it. a recent workitem we needed to do makes this actually a necessity. --- src/coreclr/gc/gc.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/coreclr/gc/gc.cpp b/src/coreclr/gc/gc.cpp index 28bae97336bd7..181cb11778cff 100644 --- a/src/coreclr/gc/gc.cpp +++ b/src/coreclr/gc/gc.cpp @@ -44391,14 +44391,7 @@ CObjectHeader* gc_heap::allocate_uoh_object (size_t jsize, uint32_t flags, int g uint8_t* current_lowest_address = background_saved_lowest_address; uint8_t* current_highest_address = background_saved_highest_address; - if ((result < current_highest_address) && (result >= current_lowest_address)) - { - dprintf (3, ("Clearing mark bit at address %zx", - (size_t)(&mark_array [mark_word_of (result)]))); - - mark_array_clear_marked (result); - } - if (current_c_gc_state != c_gc_state_free) + if (current_c_gc_state == c_gc_state_planning) { dprintf (3, ("Concurrent allocation of a large object %zx", (size_t)obj));