mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8229474: Shenandoah: Cleanup CM::update_roots()
Reviewed-by: rkennke
This commit is contained in:
parent
6d63995ada
commit
320eaaccc4
5 changed files with 9 additions and 25 deletions
|
@ -276,20 +276,9 @@ void ShenandoahConcurrentMark::mark_roots(ShenandoahPhaseTimings::Phase root_pha
|
|||
|
||||
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 @@ void ShenandoahConcurrentMark::update_roots(ShenandoahPhaseTimings::Phase root_p
|
|||
|
||||
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);
|
||||
|
||||
|
|
|
@ -184,10 +184,9 @@ void ShenandoahRootEvacuator::roots_do(uint worker_id, OopClosure* oops) {
|
|||
_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) :
|
||||
|
|
|
@ -295,10 +295,9 @@ private:
|
|||
ShenandoahWeakRoots<false /*concurrent*/> _weak_roots;
|
||||
ShenandoahStringDedupRoots _dedup_roots;
|
||||
ShenandoahCodeCacheRoots<ShenandoahCsetCodeRootsIterator> _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<typename IsAlive, typename KeepAlive>
|
||||
void roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive);
|
||||
|
|
|
@ -272,10 +272,7 @@ void ShenandoahRootUpdater::roots_do(uint worker_id, IsAlive* is_alive, KeepAliv
|
|||
|
||||
_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);
|
||||
|
|
|
@ -706,7 +706,7 @@ void ShenandoahTraversalGC::fixup_roots() {
|
|||
#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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue