@@ -5703,6 +5703,7 @@ void gc_heap::gc_thread_function ()
57035703 END_TIMING(suspend_ee_during_log);
57045704
57055705 proceed_with_gc_p = TRUE;
5706+ gradual_decommit_in_progress_p = FALSE;
57065707
57075708 if (!should_proceed_with_gc())
57085709 {
@@ -11504,6 +11505,15 @@ BOOL gc_heap::grow_heap_segment (heap_segment* seg, uint8_t* high_address, bool*
1150411505
1150511506 assert (heap_segment_committed (seg) <= heap_segment_reserved (seg));
1150611507 assert (high_address <= heap_segment_committed (seg));
11508+
11509+ #ifdef MULTIPLE_HEAPS
11510+ // we should never increase committed beyond decommit target when gradual
11511+ // decommit is in progress - if we do, this means commit and decommit are
11512+ // going on at the same time.
11513+ assert (!gradual_decommit_in_progress_p ||
11514+ (seg != ephemeral_heap_segment) ||
11515+ (heap_segment_committed (seg) <= heap_segment_decommit_target (seg)));
11516+ #endif // MULTIPLE_HEAPS
1150711517 }
1150811518
1150911519 return !!ret;
@@ -32456,7 +32466,7 @@ void gc_heap::trim_youngest_desired_low_memory()
3245632466
3245732467void gc_heap::decommit_ephemeral_segment_pages()
3245832468{
32459- if (settings.concurrent || use_large_pages_p)
32469+ if (settings.concurrent || use_large_pages_p || (settings.pause_mode == pause_no_gc) )
3246032470 {
3246132471 return;
3246232472 }
@@ -32495,7 +32505,7 @@ void gc_heap::decommit_ephemeral_segment_pages()
3249532505 decommit_target += target_decrease * 2 / 3;
3249632506 }
3249732507
32498- heap_segment_decommit_target(ephemeral_heap_segment) = decommit_target;
32508+ heap_segment_decommit_target (ephemeral_heap_segment) = decommit_target;
3249932509
3250032510#ifdef MULTIPLE_HEAPS
3250132511 if (decommit_target < heap_segment_committed (ephemeral_heap_segment))
0 commit comments