8232005: [s390, PPC64] More exception checks missing in interpreter
Reviewed-by: rrich, goetz
This commit is contained in:
parent
9308d18580
commit
aba2880e2e
@ -592,10 +592,10 @@ address TemplateInterpreterGenerator::generate_exception_handler_common(const ch
|
||||
__ load_const_optimized(R4_ARG2, (address) name, R11_scratch1);
|
||||
if (pass_oop) {
|
||||
__ mr(R5_ARG3, Rexception);
|
||||
__ call_VM(Rexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_klass_exception), false);
|
||||
__ call_VM(Rexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_klass_exception));
|
||||
} else {
|
||||
__ load_const_optimized(R5_ARG3, (address) message, R11_scratch1);
|
||||
__ call_VM(Rexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_exception), false);
|
||||
__ call_VM(Rexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_exception));
|
||||
}
|
||||
|
||||
// Throw exception.
|
||||
@ -2105,7 +2105,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||
// 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.
|
||||
__ ld(R4_ARG2, 0, R18_locals);
|
||||
__ MacroAssembler::call_VM(R4_ARG2, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), R4_ARG2, R19_method, R14_bcp, false);
|
||||
__ call_VM(R4_ARG2, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), R4_ARG2, R19_method, R14_bcp);
|
||||
__ restore_interpreter_state(R11_scratch1, /*bcp_and_mdx_only*/ true);
|
||||
__ cmpdi(CCR0, R4_ARG2, 0);
|
||||
__ beq(CCR0, L_done);
|
||||
|
@ -1072,8 +1072,7 @@ void InterpreterMacroAssembler::lock_object(Register monitor, Register object) {
|
||||
void InterpreterMacroAssembler::unlock_object(Register monitor, Register object) {
|
||||
|
||||
if (UseHeavyMonitors) {
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit),
|
||||
monitor, /*check_for_exceptions=*/ true);
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit), monitor);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1147,8 +1146,7 @@ void InterpreterMacroAssembler::unlock_object(Register monitor, Register object)
|
||||
// The lock has been converted into a heavy lock and hence
|
||||
// we need to get into the slow case.
|
||||
z_stg(object, obj_entry); // Restore object entry, has been cleared above.
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit),
|
||||
monitor, /*check_for_exceptions=*/false);
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorexit), monitor);
|
||||
|
||||
// }
|
||||
|
||||
@ -2095,7 +2093,7 @@ void InterpreterMacroAssembler::notify_method_entry() {
|
||||
Label jvmti_post_done;
|
||||
MacroAssembler::load_and_test_int(Z_R0, Address(Z_thread, JavaThread::interp_only_mode_offset()));
|
||||
z_bre(jvmti_post_done);
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_entry), /*check_exceptions=*/false);
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_entry));
|
||||
bind(jvmti_post_done);
|
||||
}
|
||||
}
|
||||
@ -2129,7 +2127,7 @@ void InterpreterMacroAssembler::notify_method_exit(bool native_method,
|
||||
MacroAssembler::load_and_test_int(Z_R0, Address(Z_thread, JavaThread::interp_only_mode_offset()));
|
||||
z_bre(jvmti_post_done);
|
||||
if (!native_method) push(state); // see frame::interpreter_frame_result()
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit), /*check_exceptions=*/false);
|
||||
call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit));
|
||||
if (!native_method) pop(state);
|
||||
bind(jvmti_post_done);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user