diff -r 71564a544d4c -r d6dc479bcdd3 src/hotspot/share/code/nmethod.cpp --- a/src/hotspot/share/code/nmethod.cpp Fri Nov 02 07:58:22 2018 +0100 +++ b/src/hotspot/share/code/nmethod.cpp Thu Nov 01 14:57:26 2018 +0100 @@ -953,7 +953,7 @@ void nmethod::verify_clean_inline_caches() { - assert_locked_or_safepoint(CompiledIC_lock); + assert(CompiledICLocker::is_safe(this), "mt unsafe call"); ResourceMark rm; RelocIterator iter(this, oops_reloc_begin()); @@ -2115,14 +2115,11 @@ void nmethod::verify_interrupt_point(address call_site) { // Verify IC only when nmethod installation is finished. if (!is_not_installed()) { - Thread *cur = Thread::current(); - if (CompiledIC_lock->owner() == cur || - ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) && - SafepointSynchronize::is_at_safepoint())) { + if (CompiledICLocker::is_safe(this)) { CompiledIC_at(this, call_site); CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); } else { - MutexLocker ml_verify (CompiledIC_lock); + CompiledICLocker ml_verify(this); CompiledIC_at(this, call_site); } } @@ -2819,7 +2816,7 @@ switch (iter.type()) { case relocInfo::virtual_call_type: case relocInfo::opt_virtual_call_type: { - VerifyMutexLocker mc(CompiledIC_lock); + CompiledICLocker ml_verify(this); CompiledIC_at(&iter)->print(); break; }