提交 d5a36895 编写于 作者: T twisti

7101642: JSR 292: SIGSEGV in...

7101642: JSR 292: SIGSEGV in java.lang.invoke.MethodHandleImpl$FieldAccessor.getFieldI(Ljava/lang/Object;)I
Reviewed-by: kvn, iveresov
上级 1961cbbc
...@@ -1672,9 +1672,12 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, addr ...@@ -1672,9 +1672,12 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, addr
nmethod* nm = cb->as_nmethod_or_null(); nmethod* nm = cb->as_nmethod_or_null();
assert(nm, "must be"); assert(nm, "must be");
// Don't fixup MethodHandle call sites as c2i/i2c adapters are used // Get the return PC for the passed caller PC.
// to implement MethodHandle actions. address return_pc = caller_pc + frame::pc_return_offset;
if (nm->is_method_handle_return(caller_pc)) {
// Don't fixup method handle call sites as the executed method
// handle adapters are doing the required MethodHandle chain work.
if (nm->is_method_handle_return(return_pc)) {
return; return;
} }
...@@ -1693,8 +1696,8 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, addr ...@@ -1693,8 +1696,8 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, addr
// Expect to find a native call there (unless it was no-inline cache vtable dispatch) // 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); MutexLockerEx ml_patch(Patching_lock, Mutex::_no_safepoint_check_flag);
if (NativeCall::is_call_before(caller_pc + frame::pc_return_offset)) { if (NativeCall::is_call_before(return_pc)) {
NativeCall *call = nativeCall_before(caller_pc + frame::pc_return_offset); NativeCall *call = nativeCall_before(return_pc);
// //
// bug 6281185. We might get here after resolving a call site to a vanilla // bug 6281185. We might get here after resolving a call site to a vanilla
// virtual call. Because the resolvee uses the verified entry it may then // virtual call. Because the resolvee uses the verified entry it may then
...@@ -1744,7 +1747,6 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, addr ...@@ -1744,7 +1747,6 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, addr
} }
} }
} }
IRT_END IRT_END
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册