< prev index next > src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp
Print this page
_code_roots(phase) {
assert(ShenandoahHeap::heap()->is_full_gc_in_progress(), "Full GC only");
}
void ShenandoahRootAdjuster::roots_do(uint worker_id, OopClosure* oops) {
- NMethodToOopClosure code_blob_cl(oops, NMethodToOopClosure::FixRelocations);
ShenandoahNMethodAndDisarmClosure nmethods_and_disarm_Cl(oops);
- NMethodToOopClosure* adjust_code_closure = ShenandoahCodeRoots::use_nmethod_barriers_for_mark() ?
- static_cast<NMethodToOopClosure*>(&nmethods_and_disarm_Cl) :
- static_cast<NMethodToOopClosure*>(&code_blob_cl);
CLDToOopClosure adjust_cld_closure(oops, ClassLoaderData::_claim_strong);
// Process light-weight/limited parallel roots then
_vm_roots.oops_do(oops, worker_id);
_weak_roots.oops_do<OopClosure>(oops, worker_id);
_cld_roots.cld_do(&adjust_cld_closure, worker_id);
// Process heavy-weight/fully parallel roots the last
! _code_roots.nmethods_do(adjust_code_closure, worker_id);
_thread_roots.oops_do(oops, nullptr, worker_id);
}
ShenandoahHeapIterationRootScanner::ShenandoahHeapIterationRootScanner(uint n_workers) :
ShenandoahRootProcessor(ShenandoahPhaseTimings::heap_iteration_roots),
_code_roots(phase) {
assert(ShenandoahHeap::heap()->is_full_gc_in_progress(), "Full GC only");
}
void ShenandoahRootAdjuster::roots_do(uint worker_id, OopClosure* oops) {
ShenandoahNMethodAndDisarmClosure nmethods_and_disarm_Cl(oops);
CLDToOopClosure adjust_cld_closure(oops, ClassLoaderData::_claim_strong);
// Process light-weight/limited parallel roots then
_vm_roots.oops_do(oops, worker_id);
_weak_roots.oops_do<OopClosure>(oops, worker_id);
_cld_roots.cld_do(&adjust_cld_closure, worker_id);
// Process heavy-weight/fully parallel roots the last
! _code_roots.nmethods_do(&nmethods_and_disarm_Cl, worker_id);
_thread_roots.oops_do(oops, nullptr, worker_id);
}
ShenandoahHeapIterationRootScanner::ShenandoahHeapIterationRootScanner(uint n_workers) :
ShenandoahRootProcessor(ShenandoahPhaseTimings::heap_iteration_roots),
< prev index next >