Mercurial > hg > graal-compiler
comparison src/cpu/sparc/vm/templateInterpreter_sparc.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 | 46c544b8fbfc |
children | 3cce976666d9 bd3237e0e18d |
comparison
equal
deleted
inserted
replaced
11996:22a5aff0df0b | 12010:ca0165daa6ec |
---|---|
1885 // The method data pointer was incremented already during | 1885 // The method data pointer was incremented already during |
1886 // call profiling. We have to restore the mdp for the current bcp. | 1886 // call profiling. We have to restore the mdp for the current bcp. |
1887 if (ProfileInterpreter) { | 1887 if (ProfileInterpreter) { |
1888 __ set_method_data_pointer_for_bcp(); | 1888 __ set_method_data_pointer_for_bcp(); |
1889 } | 1889 } |
1890 | |
1891 #if INCLUDE_JVMTI | |
1892 if (EnableInvokeDynamic) { | |
1893 Label L_done; | |
1894 | |
1895 __ ldub(Address(Lbcp, 0), G1_scratch); // Load current bytecode | |
1896 __ cmp_and_br_short(G1_scratch, Bytecodes::_invokestatic, Assembler::notEqual, Assembler::pn, L_done); | |
1897 | |
1898 // The member name argument must be restored if _invokestatic is re-executed after a PopFrame call. | |
1899 // Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL. | |
1900 | |
1901 __ call_VM(G1_scratch, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), I0, Lmethod, Lbcp); | |
1902 | |
1903 __ br_null(G1_scratch, false, Assembler::pn, L_done); | |
1904 __ delayed()->nop(); | |
1905 | |
1906 __ st_ptr(G1_scratch, Lesp, wordSize); | |
1907 __ bind(L_done); | |
1908 } | |
1909 #endif // INCLUDE_JVMTI | |
1910 | |
1890 // Resume bytecode interpretation at the current bcp | 1911 // Resume bytecode interpretation at the current bcp |
1891 __ dispatch_next(vtos); | 1912 __ dispatch_next(vtos); |
1892 // end of JVMTI PopFrame support | 1913 // end of JVMTI PopFrame support |
1893 | 1914 |
1894 Interpreter::_remove_activation_entry = __ pc(); | 1915 Interpreter::_remove_activation_entry = __ pc(); |