--- old/src/hotspot/share/code/nmethod.cpp 2017-11-15 21:00:33.000000000 -0800 +++ new/src/hotspot/share/code/nmethod.cpp 2017-11-15 21:00:33.000000000 -0800 @@ -386,7 +386,7 @@ // Fill in default values for various flag fields void nmethod::init_defaults() { - _state = in_use; + _state = not_installed; _has_flushed_dependencies = 0; _lock_count = 0; _stack_traversal_mark = 0; @@ -445,6 +445,7 @@ nm->log_new_nmethod(); } + nm->make_in_use(); return nm; } @@ -1129,7 +1130,7 @@ /** * Common functionality for both make_not_entrant and make_zombie */ -bool nmethod::make_not_entrant_or_zombie(unsigned int state) { +bool nmethod::make_not_entrant_or_zombie(int state) { assert(state == zombie || state == not_entrant, "must be zombie or not_entrant"); assert(!is_zombie(), "should not already be a zombie"); @@ -2097,9 +2098,7 @@ void nmethod::verify_interrupt_point(address call_site) { // Verify IC only when nmethod installation is finished. - bool is_installed = (method()->code() == this) // nmethod is in state 'in_use' and installed - || !this->is_in_use(); // nmethod is installed, but not in 'in_use' state - if (is_installed) { + if (!is_not_installed()) { Thread *cur = Thread::current(); if (CompiledIC_lock->owner() == cur || ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) &&