agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java	Fri May 29 13:57:34 2015
--- new/agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java	Fri May 29 13:57:34 2015

*** 315,344 **** --- 315,335 ---- } //------------------------------------------------------------------------------ // frame::adjust_unextended_sp private void adjustUnextendedSP() { // If we are returning to a compiled MethodHandle call site, the // saved_fp will in fact be a saved value of the unextended SP. The // simplest way to tell whether we are returning to such a call site // is as follows: + // On x86, sites calling method handle intrinsics and lambda forms are treated + // as any other call site. Therefore, no special action is needed when we are + // returning to any of these call sites. CodeBlob cb = cb(); NMethod senderNm = (cb == null) ? null : cb.asNMethodOrNull(); if (senderNm != null) { ! // If the sender PC is a deoptimization point, get the original PC. // PC. For MethodHandle call site the unextended_sp is stored in // saved_fp. if (senderNm.isDeoptMhEntry(getPC())) { // DEBUG_ONLY(verifyDeoptMhOriginalPc(senderNm, getFP())); raw_unextendedSP = getFP(); } else if (senderNm.isDeoptEntry(getPC())) { // DEBUG_ONLY(verifyDeoptOriginalPc(senderNm, raw_unextendedSp)); } else if (senderNm.isMethodHandleReturn(getPC())) { raw_unextendedSP = getFP(); + if (senderNm.isDeoptEntry(getPC()) || + senderNm.isDeoptMhEntry(getPC())) { + // DEBUG_ONLY(verifyDeoptriginalPc(senderNm, raw_unextendedSp)); } } } private Frame senderForInterpreterFrame(X86RegisterMap map) {

agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File