diff -r ca6f11c5acda -r f618cfbaf35b src/hotspot/share/code/nmethod.cpp --- a/src/hotspot/share/code/nmethod.cpp Wed Jan 23 23:24:10 2019 -0800 +++ b/src/hotspot/share/code/nmethod.cpp Thu Jan 24 12:23:01 2019 +0100 @@ -1100,7 +1100,11 @@ "must be at safepoint"); // Unregister must be done before the state change - Universe::heap()->unregister_nmethod(this); + { + MutexLockerEx ml(SafepointSynchronize::is_at_safepoint() ? NULL : CodeCache_lock, + Mutex::_no_safepoint_check_flag); + Universe::heap()->unregister_nmethod(this); + } // Log the unloading. log_state_change();