1927 |
1927 |
1928 // Clear the popframe condition flag |
1928 // Clear the popframe condition flag |
1929 __ movl(Address(r15_thread, JavaThread::popframe_condition_offset()), |
1929 __ movl(Address(r15_thread, JavaThread::popframe_condition_offset()), |
1930 JavaThread::popframe_inactive); |
1930 JavaThread::popframe_inactive); |
1931 |
1931 |
|
1932 #if INCLUDE_JVMTI |
|
1933 if (EnableInvokeDynamic) { |
|
1934 Label L_done; |
|
1935 const Register local0 = r14; |
|
1936 |
|
1937 __ cmpb(Address(r13, 0), Bytecodes::_invokestatic); |
|
1938 __ jcc(Assembler::notEqual, L_done); |
|
1939 |
|
1940 // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. |
|
1941 // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. |
|
1942 |
|
1943 __ get_method(rdx); |
|
1944 __ movptr(rax, Address(local0, 0)); |
|
1945 __ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), rax, rdx, r13); |
|
1946 |
|
1947 __ testptr(rax, rax); |
|
1948 __ jcc(Assembler::zero, L_done); |
|
1949 |
|
1950 __ movptr(Address(rbx, 0), rax); |
|
1951 __ bind(L_done); |
|
1952 } |
|
1953 #endif // INCLUDE_JVMTI |
|
1954 |
1932 __ dispatch_next(vtos); |
1955 __ dispatch_next(vtos); |
1933 // end of PopFrame support |
1956 // end of PopFrame support |
1934 |
1957 |
1935 Interpreter::_remove_activation_entry = __ pc(); |
1958 Interpreter::_remove_activation_entry = __ pc(); |
1936 |
1959 |