# 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