8245128: Kitchensink fails with: assert(destination == (address)-1 || destination == entry) failed: b) MT-unsafe modification of inline cache
Fix too strong assertion by additionally considering races due to class unloading and redefinition. Reviewed-by: eosterlund, kvn, coleenp, sspitsyn
This commit is contained in:
parent
31c511e6a5
commit
601e566b26
@ -756,7 +756,9 @@ void CompiledDirectStaticCall::verify_mt_safe(const methodHandle& callee, addres
|
|||||||
"a) MT-unsafe modification of inline cache");
|
"a) MT-unsafe modification of inline cache");
|
||||||
|
|
||||||
address destination = jump->jump_destination();
|
address destination = jump->jump_destination();
|
||||||
assert(destination == (address)-1 || destination == entry,
|
assert(destination == (address)-1 || destination == entry
|
||||||
|
|| old_method == NULL || !old_method->method_holder()->is_loader_alive() // may have a race due to class unloading.
|
||||||
|
|| old_method->is_old(), // may be race patching deoptimized nmethod due to redefinition.
|
||||||
"b) MT-unsafe modification of inline cache");
|
"b) MT-unsafe modification of inline cache");
|
||||||
}
|
}
|
||||||
#endif // !PRODUCT
|
#endif // !PRODUCT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user