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