< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
Print this page
rev 55971 : 8229474: Shenandoah: Cleanup CM::update_roots()
*** 274,307 ****
}
}
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();
! }
ShenandoahGCPhase phase(root_phase);
#if COMPILER2_OR_JVMCI
DerivedPointerTable::clear();
#endif
uint nworkers = _heap->workers()->active_workers();
! ShenandoahRootUpdater root_updater(nworkers, root_phase, update_code_cache);
ShenandoahUpdateRootsTask update_roots(&root_updater);
_heap->workers()->run_task(&update_roots);
#if COMPILER2_OR_JVMCI
DerivedPointerTable::update_pointers();
--- 274,296 ----
}
}
void ShenandoahConcurrentMark::update_roots(ShenandoahPhaseTimings::Phase root_phase) {
assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Must be at a safepoint");
! assert(root_phase == ShenandoahPhaseTimings::full_gc_roots ||
! root_phase == ShenandoahPhaseTimings::degen_gc_update_roots,
! "Only for these phases");
ShenandoahGCPhase phase(root_phase);
#if COMPILER2_OR_JVMCI
DerivedPointerTable::clear();
#endif
uint nworkers = _heap->workers()->active_workers();
! ShenandoahRootUpdater root_updater(nworkers, root_phase);
ShenandoahUpdateRootsTask update_roots(&root_updater);
_heap->workers()->run_task(&update_roots);
#if COMPILER2_OR_JVMCI
DerivedPointerTable::update_pointers();
< prev index next >