diff --git a/src/hotspot/share/code/nmethod.cpp b/src/hotspot/share/code/nmethod.cpp index 8368f07..be64b7d 100644 --- a/src/hotspot/share/code/nmethod.cpp +++ b/src/hotspot/share/code/nmethod.cpp @@ -2101,9 +2101,6 @@ void nmethod::verify() { } } - VerifyOopsClosure voc(this); - oops_do(&voc); - assert(voc.ok(), "embedded oops must be OK"); Universe::heap()->verify_nmethod(this); verify_scopes(); diff --git a/src/hotspot/share/gc/z/zCollectedHeap.cpp b/src/hotspot/share/gc/z/zCollectedHeap.cpp index 4815a62..be77d38 100644 --- a/src/hotspot/share/gc/z/zCollectedHeap.cpp +++ b/src/hotspot/share/gc/z/zCollectedHeap.cpp @@ -67,6 +67,10 @@ jint ZCollectedHeap::initialize() { initialize_reserved_region((HeapWord*)ZAddressReservedStart(), (HeapWord*)ZAddressReservedEnd()); + // ZGC fixes up nmethods lazily, so the assumption that nmethods will + // look good after GC safepoints, does not hold. + Universe::disable_verify_subset(Universe::Verify_CodeCacheOops); + return JNI_OK; } diff --git a/src/hotspot/share/memory/universe.hpp b/src/hotspot/share/memory/universe.hpp index 0acc16a..4b89f29 100644 --- a/src/hotspot/share/memory/universe.hpp +++ b/src/hotspot/share/memory/universe.hpp @@ -487,6 +487,7 @@ class Universe: AllStatic { }; static void initialize_verify_flags(); static bool should_verify_subset(uint subset); + static void disable_verify_subset(uint subset) { verify_flags &= ~subset; } static bool verify_in_progress() { return _verify_in_progress; } static void verify(VerifyOption option, const char* prefix); static void verify(const char* prefix) {