#11180 Backport of #9871 MIPS port of 7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments

Mon, 02 Dec 2019 16:01:35 +0800

author
aoqi
date
Mon, 02 Dec 2019 16:01:35 +0800
changeset 9760
8b305ff8f6b6
parent 9759
8c71022cf5f3
child 9761
17884ee5d053

#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  

mercurial