src/hotspot/share/code/nmethod.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/hotspot/share/code/nmethod.cpp	Wed Nov 15 21:00:33 2017
--- new/src/hotspot/share/code/nmethod.cpp	Wed Nov 15 21:00:33 2017

*** 384,394 **** --- 384,394 ---- return NULL; } // 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; _unload_reported = false; // jvmti state _is_far_code = false; // nmethods are located in CodeCache
*** 443,452 **** --- 443,453 ---- if (nm != NULL) { nm->log_new_nmethod(); } + nm->make_in_use(); return nm; } nmethod* nmethod::new_nmethod(const methodHandle& method, int compile_id,
*** 1127,1137 **** --- 1128,1138 ---- } /** * Common functionality for both make_not_entrant and make_zombie */ - bool nmethod::make_not_entrant_or_zombie(unsigned int state) { assert(state == zombie || state == not_entrant, "must be zombie or not_entrant"); assert(!is_zombie(), "should not already be a zombie"); if (_state == state) { // Avoid taking the lock if already in required state.
*** 2095,2107 **** --- 2096,2106 ---- } 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()) && SafepointSynchronize::is_at_safepoint())) { CompiledIC_at(this, call_site);

src/hotspot/share/code/nmethod.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File