2042 #ifndef OPT_THREAD |
2042 #ifndef OPT_THREAD |
2043 __ get_thread(thread); |
2043 __ get_thread(thread); |
2044 #endif |
2044 #endif |
2045 __ move(AT, JavaThread::popframe_inactive); |
2045 __ move(AT, JavaThread::popframe_inactive); |
2046 __ sw(AT, thread, in_bytes(JavaThread::popframe_condition_offset())); |
2046 __ sw(AT, thread, in_bytes(JavaThread::popframe_condition_offset())); |
|
2047 |
|
2048 #if INCLUDE_JVMTI |
|
2049 { |
|
2050 Label L_done; |
|
2051 |
|
2052 __ lbu(AT, BCP, 0); |
|
2053 __ daddiu(AT, AT, -1 * Bytecodes::_invokestatic); |
|
2054 __ bne(AT, R0, L_done); |
|
2055 __ delayed()->nop(); |
|
2056 |
|
2057 // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. |
|
2058 // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. |
|
2059 |
|
2060 __ get_method(T9); |
|
2061 __ ld(T8, LVP, 0); |
|
2062 __ call_VM(T8, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), T8, T9, BCP); |
|
2063 |
|
2064 __ beq(T8, R0, L_done); |
|
2065 __ delayed()->nop(); |
|
2066 |
|
2067 __ sd(T8, SP, 0); |
|
2068 __ bind(L_done); |
|
2069 } |
|
2070 #endif // INCLUDE_JVMTI |
|
2071 |
2047 __ dispatch_next(vtos); |
2072 __ dispatch_next(vtos); |
2048 // end of PopFrame support |
2073 // end of PopFrame support |
2049 |
2074 |
2050 Interpreter::_remove_activation_entry = __ pc(); |
2075 Interpreter::_remove_activation_entry = __ pc(); |
2051 |
2076 |