Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/templateInterpreter_x86_32.cpp @ 12010:ca0165daa6ec
7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments
Summary: Restore the appendix argument after PopFrame() call
Reviewed-by: twisti, coleenp
Contributed-by: serguei.spitsyn@oracle.com
author | sspitsyn |
---|---|
date | Tue, 06 Aug 2013 16:33:59 -0700 |
parents | b800986664f4 |
children | ce0cc25bc5e2 |
comparison
equal
deleted
inserted
replaced
11996:22a5aff0df0b | 12010:ca0165daa6ec |
---|---|
1918 | 1918 |
1919 // Clear the popframe condition flag | 1919 // Clear the popframe condition flag |
1920 __ get_thread(thread); | 1920 __ get_thread(thread); |
1921 __ movl(Address(thread, JavaThread::popframe_condition_offset()), JavaThread::popframe_inactive); | 1921 __ movl(Address(thread, JavaThread::popframe_condition_offset()), JavaThread::popframe_inactive); |
1922 | 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 | |
1923 __ dispatch_next(vtos); | 1946 __ dispatch_next(vtos); |
1924 // end of PopFrame support | 1947 // end of PopFrame support |
1925 | 1948 |
1926 Interpreter::_remove_activation_entry = __ pc(); | 1949 Interpreter::_remove_activation_entry = __ pc(); |
1927 | 1950 |