mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments
Restore the appendix argument after PopFrame() call Reviewed-by: twisti, coleenp
This commit is contained in:
parent
68198af05c
commit
4974d1aef2
9 changed files with 143 additions and 0 deletions
|
@ -1887,6 +1887,27 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
|||
if (ProfileInterpreter) {
|
||||
__ set_method_data_pointer_for_bcp();
|
||||
}
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
if (EnableInvokeDynamic) {
|
||||
Label L_done;
|
||||
|
||||
__ ldub(Address(Lbcp, 0), G1_scratch); // Load current bytecode
|
||||
__ cmp_and_br_short(G1_scratch, Bytecodes::_invokestatic, Assembler::notEqual, Assembler::pn, L_done);
|
||||
|
||||
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
|
||||
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
|
||||
|
||||
__ call_VM(G1_scratch, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), I0, Lmethod, Lbcp);
|
||||
|
||||
__ br_null(G1_scratch, false, Assembler::pn, L_done);
|
||||
__ delayed()->nop();
|
||||
|
||||
__ st_ptr(G1_scratch, Lesp, wordSize);
|
||||
__ bind(L_done);
|
||||
}
|
||||
#endif // INCLUDE_JVMTI
|
||||
|
||||
// Resume bytecode interpretation at the current bcp
|
||||
__ dispatch_next(vtos);
|
||||
// end of JVMTI PopFrame support
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue