< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp

Print this page
rev 55429 : 8226311: Shenandoah: Concurrent evacuation of OopStorage backed weak roots

*** 1519,1529 **** pacer()->setup_for_evac(); } if (ShenandoahVerify) { if (ShenandoahConcurrentRoots::should_do_concurrent_roots()) { ! verifier()->verify_roots_no_forwarded_except(ShenandoahRootVerifier::JNIHandleRoots); } else { verifier()->verify_roots_no_forwarded(); } verifier()->verify_during_evacuation(); } --- 1519,1530 ---- pacer()->setup_for_evac(); } if (ShenandoahVerify) { if (ShenandoahConcurrentRoots::should_do_concurrent_roots()) { ! ShenandoahRootVerifier::RootTypes types = ShenandoahRootVerifier::combine(ShenandoahRootVerifier::JNIHandleRoots, ShenandoahRootVerifier::WeakRoots); ! verifier()->verify_roots_no_forwarded_except(types); } else { verifier()->verify_roots_no_forwarded(); } verifier()->verify_during_evacuation(); }
*** 1586,1605 **** --- 1587,1609 ---- } class ShenandoahConcurrentRootsEvacUpdateTask : public AbstractGangTask { private: ShenandoahJNIHandleRoots<true /*concurrent*/> _jni_roots; + ShenandoahWeakRoots<true /*concurrent*/> _weak_roots; public: ShenandoahConcurrentRootsEvacUpdateTask() : AbstractGangTask("Shenandoah Evacuate/Update Concurrent Roots Task") { } void work(uint worker_id) { ShenandoahEvacOOMScope oom; ShenandoahEvacuateUpdateRootsClosure cl; + _jni_roots.oops_do<ShenandoahEvacuateUpdateRootsClosure>(&cl); + _weak_roots.oops_do<ShenandoahEvacuateUpdateRootsClosure>(&cl); } }; void ShenandoahHeap::op_roots() { if (is_evacuation_in_progress() &&
< prev index next >