--- 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);
}
};