8258380: [JVMCI] don't clear InstalledCode reference when unloading JVMCI nmethods

Reviewed-by: kvn, eosterlund
This commit is contained in:
Tom Rodriguez 2020-12-15 21:31:00 +00:00
parent e7aa5fe602
commit 1f556d22ca
2 changed files with 6 additions and 1 deletions

View File

@ -1270,7 +1270,6 @@ void nmethod::make_unloaded() {
JVMCINMethodData* nmethod_data = jvmci_nmethod_data();
if (nmethod_data != NULL) {
nmethod_data->invalidate_nmethod_mirror(this);
nmethod_data->clear_nmethod_mirror(this);
}
#endif
}

View File

@ -714,6 +714,12 @@ void JVMCINMethodData::invalidate_nmethod_mirror(nmethod* nm) {
HotSpotJVMCI::InstalledCode::set_entryPoint(jvmciEnv, nmethod_mirror, 0);
}
}
if (_nmethod_mirror_index != -1 && nm->is_unloaded()) {
// Drop the reference to the nmethod mirror object but don't clear the actual oop reference. Otherwise
// it would appear that the nmethod didn't need to be unloaded in the first place.
_nmethod_mirror_index = -1;
}
}
JVMCIRuntime::JVMCIRuntime(int id) {