1.1 --- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Tue Aug 06 14:28:48 2013 +0400 1.2 +++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Tue Aug 06 16:33:59 2013 -0700 1.3 @@ -1920,6 +1920,29 @@ 1.4 __ get_thread(thread); 1.5 __ movl(Address(thread, JavaThread::popframe_condition_offset()), JavaThread::popframe_inactive); 1.6 1.7 +#if INCLUDE_JVMTI 1.8 + if (EnableInvokeDynamic) { 1.9 + Label L_done; 1.10 + const Register local0 = rdi; 1.11 + 1.12 + __ cmpb(Address(rsi, 0), Bytecodes::_invokestatic); 1.13 + __ jcc(Assembler::notEqual, L_done); 1.14 + 1.15 + // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. 1.16 + // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. 1.17 + 1.18 + __ get_method(rdx); 1.19 + __ movptr(rax, Address(local0, 0)); 1.20 + __ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), rax, rdx, rsi); 1.21 + 1.22 + __ testptr(rax, rax); 1.23 + __ jcc(Assembler::zero, L_done); 1.24 + 1.25 + __ movptr(Address(rbx, 0), rax); 1.26 + __ bind(L_done); 1.27 + } 1.28 +#endif // INCLUDE_JVMTI 1.29 + 1.30 __ dispatch_next(vtos); 1.31 // end of PopFrame support 1.32