--- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2019-06-18 13:08:43.870207817 -0400 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2019-06-18 13:08:43.537207438 -0400 @@ -1521,7 +1521,8 @@ if (ShenandoahVerify) { if (ShenandoahConcurrentRoots::should_do_concurrent_roots()) { - verifier()->verify_roots_no_forwarded_except(ShenandoahRootVerifier::JNIHandleRoots); + ShenandoahRootVerifier::RootTypes types = ShenandoahRootVerifier::combine(ShenandoahRootVerifier::JNIHandleRoots, ShenandoahRootVerifier::WeakRoots); + verifier()->verify_roots_no_forwarded_except(types); } else { verifier()->verify_roots_no_forwarded(); } @@ -1588,6 +1589,7 @@ class ShenandoahConcurrentRootsEvacUpdateTask : public AbstractGangTask { private: ShenandoahJNIHandleRoots _jni_roots; + ShenandoahWeakRoots _weak_roots; public: ShenandoahConcurrentRootsEvacUpdateTask() : AbstractGangTask("Shenandoah Evacuate/Update Concurrent Roots Task") { @@ -1596,7 +1598,9 @@ void work(uint worker_id) { ShenandoahEvacOOMScope oom; ShenandoahEvacuateUpdateRootsClosure cl; + _jni_roots.oops_do(&cl); + _weak_roots.oops_do(&cl); } };