< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
Print this page
rev 54809 : 8223215: Shenandoah: Support verifying subset of roots
rev 54810 : 8223774: Shenandoah: Refactor ShenandoahRootProcessor and family
@@ -1096,22 +1096,22 @@
void work(uint worker_id) {
ShenandoahParallelWorkerSession worker_session(worker_id);
ShenandoahEvacOOMScope oom_evac_scope;
ShenandoahEvacuateUpdateRootsClosure cl;
MarkingCodeBlobClosure blobsCl(&cl, CodeBlobToOopClosure::FixRelocations);
- _rp->process_evacuate_roots(&cl, &blobsCl, worker_id);
+ _rp->roots_do(worker_id, &cl);
}
};
void ShenandoahHeap::evacuate_and_update_roots() {
#if defined(COMPILER2) || INCLUDE_JVMCI
DerivedPointerTable::clear();
#endif
assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Only iterate roots while world is stopped");
{
- ShenandoahRootEvacuator rp(this, workers()->active_workers(), ShenandoahPhaseTimings::init_evac);
+ ShenandoahRootEvacuator rp(workers()->active_workers(), ShenandoahPhaseTimings::init_evac);
ShenandoahEvacuateUpdateRootsTask roots_task(&rp);
workers()->run_task(&roots_task);
}
#if defined(COMPILER2) || INCLUDE_JVMCI
@@ -1311,15 +1311,13 @@
_aux_bit_map.clear();
Stack<oop,mtGC> oop_stack;
// First, we process all GC roots. This populates the work stack with initial objects.
- ShenandoahRootProcessor rp(this, 1, ShenandoahPhaseTimings::_num_phases);
+ ShenandoahRootProcessor rp(1, ShenandoahPhaseTimings::_num_phases);
ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack);
- CLDToOopClosure clds(&oops, ClassLoaderData::_claim_none);
- CodeBlobToOopClosure blobs(&oops, false);
- rp.process_all_roots(&oops, &clds, &blobs, NULL, 0);
+ rp.roots_do(0, &oops);
// Work through the oop stack to traverse heap.
while (! oop_stack.is_empty()) {
oop obj = oop_stack.pop();
assert(oopDesc::is_oop(obj), "must be a valid oop");
< prev index next >