< 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,3644 **** // 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); // If we get here the typecheck failed __ z_bru(no_such_interface); __ bind(subtype); // do the call --- 3634,3644 ---- // 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, flags/*scratch*/, subtype); // If we get here the typecheck failed __ z_bru(no_such_interface); __ bind(subtype); // do the call
*** 3647,3657 **** __ 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); --- 3647,3656 ----
*** 3693,3704 **** // 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), --- 3692,3701 ----
*** 3707,3718 **** __ 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); --- 3704,3713 ----
< prev index next >