Mon, 02 Dec 2019 16:01:35 +0800
#11180 Backport of #9871 MIPS port of 7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments
src/cpu/mips/vm/templateInterpreter_mips_64.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/mips/vm/templateInterpreter_mips_64.cpp Mon Nov 18 10:41:48 2019 +0800 1.2 +++ b/src/cpu/mips/vm/templateInterpreter_mips_64.cpp Mon Dec 02 16:01:35 2019 +0800 1.3 @@ -2044,6 +2044,31 @@ 1.4 #endif 1.5 __ move(AT, JavaThread::popframe_inactive); 1.6 __ sw(AT, thread, in_bytes(JavaThread::popframe_condition_offset())); 1.7 + 1.8 +#if INCLUDE_JVMTI 1.9 + { 1.10 + Label L_done; 1.11 + 1.12 + __ lbu(AT, BCP, 0); 1.13 + __ daddiu(AT, AT, -1 * Bytecodes::_invokestatic); 1.14 + __ bne(AT, R0, L_done); 1.15 + __ delayed()->nop(); 1.16 + 1.17 + // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. 1.18 + // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. 1.19 + 1.20 + __ get_method(T9); 1.21 + __ ld(T8, LVP, 0); 1.22 + __ call_VM(T8, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), T8, T9, BCP); 1.23 + 1.24 + __ beq(T8, R0, L_done); 1.25 + __ delayed()->nop(); 1.26 + 1.27 + __ sd(T8, SP, 0); 1.28 + __ bind(L_done); 1.29 + } 1.30 +#endif // INCLUDE_JVMTI 1.31 + 1.32 __ dispatch_next(vtos); 1.33 // end of PopFrame support 1.34