mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
8213755: Let nmethods be is_unloading() outside of safepoints
Reviewed-by: rehn, coleenp, kvn
This commit is contained in:
parent
c9657d8dcf
commit
1379397c32
8 changed files with 102 additions and 75 deletions
|
@ -1279,7 +1279,7 @@ methodHandle SharedRuntime::resolve_sub_helper(JavaThread *thread,
|
|||
(!is_virtual && invoke_code == Bytecodes::_invokedynamic) ||
|
||||
( is_virtual && invoke_code != Bytecodes::_invokestatic ), "inconsistent bytecode");
|
||||
|
||||
assert(caller_nm->is_alive(), "It should be alive");
|
||||
assert(caller_nm->is_alive() && !caller_nm->is_unloading(), "It should be alive");
|
||||
|
||||
#ifndef PRODUCT
|
||||
// tracing/debugging/statistics
|
||||
|
@ -1606,8 +1606,10 @@ methodHandle SharedRuntime::handle_ic_miss_helper(JavaThread *thread, TRAPS) {
|
|||
} else if (inline_cache->is_icholder_call()) {
|
||||
CompiledICHolder* ic_oop = inline_cache->cached_icholder();
|
||||
if (ic_oop != NULL) {
|
||||
|
||||
if (receiver()->klass() == ic_oop->holder_klass()) {
|
||||
if (!ic_oop->is_loader_alive()) {
|
||||
// Deferred IC cleaning due to concurrent class unloading
|
||||
inline_cache->set_to_clean();
|
||||
} else if (receiver()->klass() == ic_oop->holder_klass()) {
|
||||
// This isn't a real miss. We must have seen that compiled code
|
||||
// is now available and we want the call site converted to a
|
||||
// monomorphic compiled call site.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue