From 6beb19a361cb68937e786fd2367275910dec4396 Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Wed, 22 May 2019 07:12:18 -0400 Subject: [PATCH] 8224508: Shenandoah: Need to update thread roots in final mark for piggyback ref update cycle Reviewed-by: shade, rkennke --- src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp index 9bff37277ac..de0a6fe5ed5 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp @@ -1505,10 +1505,14 @@ void ShenandoahHeap::op_final_mark() { if (!cancelled_gc()) { concurrent_mark()->finish_mark_from_roots(/* full_gc = */ false); - // Degen may be caused by failed evacuation of roots - if (is_degenerated_gc_in_progress() && has_forwarded_objects()) { - concurrent_mark()->update_roots(ShenandoahPhaseTimings::degen_gc_update_roots); - } + if (has_forwarded_objects()) { + // Degen may be caused by failed evacuation of roots + if (is_degenerated_gc_in_progress()) { + concurrent_mark()->update_roots(ShenandoahPhaseTimings::degen_gc_update_roots); + } else { + concurrent_mark()->update_thread_roots(ShenandoahPhaseTimings::update_roots); + } + } if (ShenandoahVerify) { verifier()->verify_roots_no_forwarded();