1903 __ set_last_Java_frame(thread, noreg, rbp, __ pc()); 1904 __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::popframe_move_outgoing_args), thread, rax, rbx); 1905 __ get_thread(thread); 1906 __ reset_last_Java_frame(thread, true, true); 1907 // Restore the last_sp and null it out 1908 __ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize)); 1909 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); 1910 1911 __ restore_bcp(); 1912 __ restore_locals(); 1913 // The method data pointer was incremented already during 1914 // call profiling. We have to restore the mdp for the current bcp. 1915 if (ProfileInterpreter) { 1916 __ set_method_data_pointer_for_bcp(); 1917 } 1918 1919 // Clear the popframe condition flag 1920 __ get_thread(thread); 1921 __ movl(Address(thread, JavaThread::popframe_condition_offset()), JavaThread::popframe_inactive); 1922 1923 __ dispatch_next(vtos); 1924 // end of PopFrame support 1925 1926 Interpreter::_remove_activation_entry = __ pc(); 1927 1928 // preserve exception over this code sequence 1929 __ pop_ptr(rax); 1930 __ get_thread(thread); 1931 __ movptr(Address(thread, JavaThread::vm_result_offset()), rax); 1932 // remove the activation (without doing throws on illegalMonitorExceptions) 1933 __ remove_activation(vtos, rdx, false, true, false); 1934 // restore exception 1935 __ get_thread(thread); 1936 __ get_vm_result(rax, thread); 1937 1938 // Inbetween activations - previous activation type unknown yet 1939 // compute continuation point - the continuation point expects 1940 // the following registers set up: 1941 // 1942 // rax: exception | 1903 __ set_last_Java_frame(thread, noreg, rbp, __ pc()); 1904 __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::popframe_move_outgoing_args), thread, rax, rbx); 1905 __ get_thread(thread); 1906 __ reset_last_Java_frame(thread, true, true); 1907 // Restore the last_sp and null it out 1908 __ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize)); 1909 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); 1910 1911 __ restore_bcp(); 1912 __ restore_locals(); 1913 // The method data pointer was incremented already during 1914 // call profiling. We have to restore the mdp for the current bcp. 1915 if (ProfileInterpreter) { 1916 __ set_method_data_pointer_for_bcp(); 1917 } 1918 1919 // Clear the popframe condition flag 1920 __ get_thread(thread); 1921 __ movl(Address(thread, JavaThread::popframe_condition_offset()), JavaThread::popframe_inactive); 1922 1923 #if INCLUDE_JVMTI 1924 if (EnableInvokeDynamic) { 1925 Label L_done; 1926 const Register local0 = rdi; 1927 1928 __ cmpb(Address(rsi, 0), Bytecodes::_invokestatic); 1929 __ jcc(Assembler::notEqual, L_done); 1930 1931 // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. 1932 // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. 1933 1934 __ get_method(rdx); 1935 __ movptr(rax, Address(local0, 0)); 1936 __ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), rax, rdx, rsi); 1937 1938 __ testptr(rax, rax); 1939 __ jcc(Assembler::zero, L_done); 1940 1941 __ movptr(Address(rbx, 0), rax); 1942 __ bind(L_done); 1943 } 1944 #endif // INCLUDE_JVMTI 1945 1946 __ dispatch_next(vtos); 1947 // end of PopFrame support 1948 1949 Interpreter::_remove_activation_entry = __ pc(); 1950 1951 // preserve exception over this code sequence 1952 __ pop_ptr(rax); 1953 __ get_thread(thread); 1954 __ movptr(Address(thread, JavaThread::vm_result_offset()), rax); 1955 // remove the activation (without doing throws on illegalMonitorExceptions) 1956 __ remove_activation(vtos, rdx, false, true, false); 1957 // restore exception 1958 __ get_thread(thread); 1959 __ get_vm_result(rax, thread); 1960 1961 // Inbetween activations - previous activation type unknown yet 1962 // compute continuation point - the continuation point expects 1963 // the following registers set up: 1964 // 1965 // rax: exception |