Skip to content


8316182: RISC-V: SA stack walking code having trouble finding sender …
Browse files Browse the repository at this point in the history
…frame when invoking LambdaForms is involved

Reviewed-by: fyang
  • Loading branch information
feilongjiang committed Sep 15, 2023
1 parent 31c4e03 commit 42dc6b5
Showing 1 changed file with 7 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -322,24 +322,17 @@ private Frame senderForEntryFrame(RISCV64RegisterMap map) {
// 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:
// 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. For MethodHandle call site the unextended_sp is stored in
// saved_fp.
if (senderNm.isDeoptMhEntry(getPC())) {
raw_unextendedSP = getFP();
else if (senderNm.isDeoptEntry(getPC())) {
else if (senderNm.isMethodHandleReturn(getPC())) {
raw_unextendedSP = getFP();
// If the sender PC is a deoptimization point, get the original PC.
if (senderNm.isDeoptEntry(getPC()) ||
senderNm.isDeoptMhEntry(getPC())) {
// DEBUG_ONLY(verifyDeoptriginalPc(senderNm, raw_unextendedSp));
Expand Down

1 comment on commit 42dc6b5

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.