mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
8214257: IC cache not clean after cleaning assertion failure
Reviewed-by: kvn, thartmann
This commit is contained in:
parent
e303e31317
commit
055ed2b789
2 changed files with 5 additions and 10 deletions
|
@ -1059,7 +1059,7 @@ methodHandle SharedRuntime::extract_attached_method(vframeStream& vfst) {
|
|||
|
||||
address pc = vfst.frame_pc();
|
||||
{ // Get call instruction under lock because another thread may be busy patching it.
|
||||
MutexLockerEx ml_patch(Patching_lock, Mutex::_no_safepoint_check_flag);
|
||||
CompiledICLocker ic_locker(caller);
|
||||
return caller->attached_method_before_pc(pc);
|
||||
}
|
||||
return NULL;
|
||||
|
@ -1765,7 +1765,7 @@ methodHandle SharedRuntime::reresolve_call_site(JavaThread *thread, TRAPS) {
|
|||
{
|
||||
// Get call instruction under lock because another thread may be
|
||||
// busy patching it.
|
||||
MutexLockerEx ml_patch(Patching_lock, Mutex::_no_safepoint_check_flag);
|
||||
CompiledICLocker ml(caller_nm);
|
||||
// Location of call instruction
|
||||
call_addr = caller_nm->call_instruction_address(pc);
|
||||
}
|
||||
|
@ -1940,9 +1940,8 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(Method* method, address cal
|
|||
if (moop->code() == NULL) return;
|
||||
|
||||
if (nm->is_in_use()) {
|
||||
|
||||
// Expect to find a native call there (unless it was no-inline cache vtable dispatch)
|
||||
MutexLockerEx ml_patch(Patching_lock, Mutex::_no_safepoint_check_flag);
|
||||
CompiledICLocker ic_locker(nm);
|
||||
if (NativeCall::is_call_before(return_pc)) {
|
||||
ResourceMark mark;
|
||||
NativeCallWrapper* call = nm->call_wrapper_before(return_pc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue