# HG changeset patch # User zgu # Date 1565705031 14400 # Tue Aug 13 10:03:51 2019 -0400 # Node ID 0feb72b8e87fd43274d5c0a330bb453547aa90dd # Parent ffc34eaf7b49d2c0bf84140dd39dd7b96093ed08 8229474: Shenandoah: Cleanup CM::update_roots() diff --git a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp @@ -276,20 +276,9 @@ void ShenandoahConcurrentMark::update_roots(ShenandoahPhaseTimings::Phase root_phase) { assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Must be at a safepoint"); - - bool update_code_cache = true; // initialize to safer value - switch (root_phase) { - case ShenandoahPhaseTimings::update_roots: - case ShenandoahPhaseTimings::final_update_refs_roots: - update_code_cache = false; - break; - case ShenandoahPhaseTimings::full_gc_roots: - case ShenandoahPhaseTimings::degen_gc_update_roots: - update_code_cache = true; - break; - default: - ShouldNotReachHere(); - } + assert(root_phase == ShenandoahPhaseTimings::full_gc_roots || + root_phase == ShenandoahPhaseTimings::degen_gc_update_roots, + "Only for these phases"); ShenandoahGCPhase phase(root_phase); @@ -299,7 +288,7 @@ uint nworkers = _heap->workers()->active_workers(); - ShenandoahRootUpdater root_updater(nworkers, root_phase, update_code_cache); + ShenandoahRootUpdater root_updater(nworkers, root_phase); ShenandoahUpdateRootsTask update_roots(&root_updater); _heap->workers()->run_task(&update_roots); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp @@ -184,10 +184,9 @@ _dedup_roots.oops_do(&always_true, oops, worker_id); } -ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase, bool update_code_cache) : +ShenandoahRootUpdater::ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase) : ShenandoahRootProcessor(phase), - _thread_roots(n_workers > 1), - _update_code_cache(update_code_cache) { + _thread_roots(n_workers > 1) { } ShenandoahRootAdjuster::ShenandoahRootAdjuster(uint n_workers, ShenandoahPhaseTimings::Phase phase) : diff --git a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp @@ -295,10 +295,9 @@ ShenandoahWeakRoots _weak_roots; ShenandoahStringDedupRoots _dedup_roots; ShenandoahCodeCacheRoots _code_roots; - const bool _update_code_cache; public: - ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase, bool update_code_cache); + ShenandoahRootUpdater(uint n_workers, ShenandoahPhaseTimings::Phase phase); template void roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp @@ -272,10 +272,7 @@ _thread_roots.oops_do(keep_alive, NULL, worker_id); _cld_roots.cld_do(&clds, worker_id); - - if(_update_code_cache) { - _code_roots.code_blobs_do(&update_blobs, worker_id); - } + _code_roots.code_blobs_do(&update_blobs, worker_id); _serial_weak_roots.weak_oops_do(is_alive, keep_alive, worker_id); _weak_roots.weak_oops_do(is_alive, keep_alive, worker_id); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp @@ -706,7 +706,7 @@ #if COMPILER2_OR_JVMCI DerivedPointerTable::clear(); #endif - ShenandoahRootUpdater rp(_heap->workers()->active_workers(), ShenandoahPhaseTimings::final_traversal_update_roots, true /* update code cache */); + ShenandoahRootUpdater rp(_heap->workers()->active_workers(), ShenandoahPhaseTimings::final_traversal_update_roots); ShenandoahTraversalFixRootsTask update_roots_task(&rp); _heap->workers()->run_task(&update_roots_task); #if COMPILER2_OR_JVMCI