mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8235273: nmethodLocker not needed for COMPILED_METHOD_UNLOAD events
Remove unnecessary nmethodLocker Reviewed-by: dholmes, sspitsyn
This commit is contained in:
parent
a445b66e58
commit
5845912fdb
3 changed files with 3 additions and 15 deletions
|
@ -1622,8 +1622,7 @@ void nmethod::post_compiled_method_unload() {
|
||||||
if (_jmethod_id != NULL && JvmtiExport::should_post_compiled_method_unload()) {
|
if (_jmethod_id != NULL && JvmtiExport::should_post_compiled_method_unload()) {
|
||||||
assert(!unload_reported(), "already unloaded");
|
assert(!unload_reported(), "already unloaded");
|
||||||
JvmtiDeferredEvent event =
|
JvmtiDeferredEvent event =
|
||||||
JvmtiDeferredEvent::compiled_method_unload_event(this,
|
JvmtiDeferredEvent::compiled_method_unload_event(_jmethod_id, insts_begin());
|
||||||
_jmethod_id, insts_begin());
|
|
||||||
MutexLocker ml(Service_lock, Mutex::_no_safepoint_check_flag);
|
MutexLocker ml(Service_lock, Mutex::_no_safepoint_check_flag);
|
||||||
JvmtiDeferredEventQueue::enqueue(event);
|
JvmtiDeferredEventQueue::enqueue(event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -912,17 +912,10 @@ JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_load_event(
|
||||||
}
|
}
|
||||||
|
|
||||||
JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_unload_event(
|
JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_unload_event(
|
||||||
nmethod* nm, jmethodID id, const void* code) {
|
jmethodID id, const void* code) {
|
||||||
JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_UNLOAD);
|
JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_UNLOAD);
|
||||||
event._event_data.compiled_method_unload.nm = nm;
|
|
||||||
event._event_data.compiled_method_unload.method_id = id;
|
event._event_data.compiled_method_unload.method_id = id;
|
||||||
event._event_data.compiled_method_unload.code_begin = code;
|
event._event_data.compiled_method_unload.code_begin = code;
|
||||||
// Keep the nmethod alive until the ServiceThread can process
|
|
||||||
// this deferred event. This will keep the memory for the
|
|
||||||
// generated code from being reused too early. We pass
|
|
||||||
// zombie_ok == true here so that our nmethod that was just
|
|
||||||
// made into a zombie can be locked.
|
|
||||||
nmethodLocker::lock_nmethod(nm, true /* zombie_ok */);
|
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -959,12 +952,9 @@ void JvmtiDeferredEvent::post() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TYPE_COMPILED_METHOD_UNLOAD: {
|
case TYPE_COMPILED_METHOD_UNLOAD: {
|
||||||
nmethod* nm = _event_data.compiled_method_unload.nm;
|
|
||||||
JvmtiExport::post_compiled_method_unload(
|
JvmtiExport::post_compiled_method_unload(
|
||||||
_event_data.compiled_method_unload.method_id,
|
_event_data.compiled_method_unload.method_id,
|
||||||
_event_data.compiled_method_unload.code_begin);
|
_event_data.compiled_method_unload.code_begin);
|
||||||
// done with the deferred event so unlock the nmethod
|
|
||||||
nmethodLocker::unlock_nmethod(nm);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TYPE_DYNAMIC_CODE_GENERATED: {
|
case TYPE_DYNAMIC_CODE_GENERATED: {
|
||||||
|
|
|
@ -448,7 +448,6 @@ class JvmtiDeferredEvent {
|
||||||
union {
|
union {
|
||||||
nmethod* compiled_method_load;
|
nmethod* compiled_method_load;
|
||||||
struct {
|
struct {
|
||||||
nmethod* nm;
|
|
||||||
jmethodID method_id;
|
jmethodID method_id;
|
||||||
const void* code_begin;
|
const void* code_begin;
|
||||||
} compiled_method_unload;
|
} compiled_method_unload;
|
||||||
|
@ -471,7 +470,7 @@ class JvmtiDeferredEvent {
|
||||||
// Factory methods
|
// Factory methods
|
||||||
static JvmtiDeferredEvent compiled_method_load_event(nmethod* nm)
|
static JvmtiDeferredEvent compiled_method_load_event(nmethod* nm)
|
||||||
NOT_JVMTI_RETURN_(JvmtiDeferredEvent());
|
NOT_JVMTI_RETURN_(JvmtiDeferredEvent());
|
||||||
static JvmtiDeferredEvent compiled_method_unload_event(nmethod* nm,
|
static JvmtiDeferredEvent compiled_method_unload_event(
|
||||||
jmethodID id, const void* code) NOT_JVMTI_RETURN_(JvmtiDeferredEvent());
|
jmethodID id, const void* code) NOT_JVMTI_RETURN_(JvmtiDeferredEvent());
|
||||||
static JvmtiDeferredEvent dynamic_code_generated_event(
|
static JvmtiDeferredEvent dynamic_code_generated_event(
|
||||||
const char* name, const void* begin, const void* end)
|
const char* name, const void* begin, const void* end)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue