# HG changeset patch # User aoqi # Date 1575273695 -28800 # Node ID 8b305ff8f6b663833d7c831a513ab6f45dd69047 # Parent 8c71022cf5f36f2a87d03929e9bd28c53fce745a #11180 Backport of #9871 MIPS port of 7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments diff -r 8c71022cf5f3 -r 8b305ff8f6b6 src/cpu/mips/vm/templateInterpreter_mips_64.cpp --- a/src/cpu/mips/vm/templateInterpreter_mips_64.cpp Mon Nov 18 10:41:48 2019 +0800 +++ b/src/cpu/mips/vm/templateInterpreter_mips_64.cpp Mon Dec 02 16:01:35 2019 +0800 @@ -2044,6 +2044,31 @@ #endif __ move(AT, JavaThread::popframe_inactive); __ sw(AT, thread, in_bytes(JavaThread::popframe_condition_offset())); + +#if INCLUDE_JVMTI + { + Label L_done; + + __ lbu(AT, BCP, 0); + __ daddiu(AT, AT, -1 * Bytecodes::_invokestatic); + __ bne(AT, R0, L_done); + __ delayed()->nop(); + + // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. + // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. + + __ get_method(T9); + __ ld(T8, LVP, 0); + __ call_VM(T8, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), T8, T9, BCP); + + __ beq(T8, R0, L_done); + __ delayed()->nop(); + + __ sd(T8, SP, 0); + __ bind(L_done); + } +#endif // INCLUDE_JVMTI + __ dispatch_next(vtos); // end of PopFrame support