< prev index next >
src/hotspot/cpu/s390/templateTable_s390.cpp
Print this page
rev 50942 : 8206459: [s390] Prevent restoring incorrect bcp and locals in interpreter and avoid incorrect size of partialSubtypeCheckNode in C2
Reviewed-by:
@@ -3634,11 +3634,11 @@
// Get receiver klass into klass - also a null check.
__ load_klass(klass, receiver);
NearLabel subtype, no_such_interface;
- __ check_klass_subtype(klass, interface, Z_tmp_2, Z_tmp_3, subtype);
+ __ check_klass_subtype(klass, interface, Z_tmp_2, flags/*scratch*/, subtype);
// If we get here the typecheck failed
__ z_bru(no_such_interface);
__ bind(subtype);
// do the call
@@ -3647,11 +3647,10 @@
__ jump_from_interpreted(method, Z_tmp_2);
__ bind(notVFinal);
// Get receiver klass into klass - also a null check.
- __ restore_locals();
__ load_klass(klass, receiver);
__ lookup_interface_method(klass, interface, noreg, noreg, /*temp*/Z_ARG1,
no_such_interface, /*return_method=*/false);
@@ -3693,12 +3692,10 @@
// state for exception handling to work correctly!
__ bind(no_such_method);
// Throw exception.
- __ restore_bcp(); // Bcp must be correct for exception handler (was destroyed).
- __ restore_locals(); // Make sure locals pointer is correct as well (was destroyed).
// Pass arguments for generating a verbose error message.
__ z_lgr(Z_tmp_1, method); // Prevent register clash.
__ call_VM(noreg,
CAST_FROM_FN_PTR(address,
InterpreterRuntime::throw_AbstractMethodErrorVerbose),
@@ -3707,12 +3704,10 @@
__ should_not_reach_here();
__ bind(no_such_interface);
// Throw exception.
- __ restore_bcp(); // Bcp must be correct for exception handler (was destroyed).
- __ restore_locals(); // Make sure locals pointer is correct as well (was destroyed).
// Pass arguments for generating a verbose error message.
__ call_VM(noreg,
CAST_FROM_FN_PTR(address,
InterpreterRuntime::throw_IncompatibleClassChangeErrorVerbose),
klass, interface);
< prev index next >