Skip to content

Commit a3b58ee

Browse files
committed
8339983: [s390x] secondary_super_cache does not scale well: C1 and interpreter
Reviewed-by: lucy, aph
1 parent e023add commit a3b58ee

File tree

6 files changed

+379
-108
lines changed

6 files changed

+379
-108
lines changed

src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2539,13 +2539,11 @@ void LIR_Assembler::emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, L
25392539
} else {
25402540
bool need_slow_path = !k->is_loaded() ||
25412541
((int) k->super_check_offset() == in_bytes(Klass::secondary_super_cache_offset()));
2542-
intptr_t super_check_offset = k->is_loaded() ? k->super_check_offset() : -1L;
25432542
__ load_klass(klass_RInfo, obj);
25442543
// Perform the fast part of the checking logic.
25452544
__ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1,
25462545
(need_slow_path ? success_target : nullptr),
2547-
failure_target, nullptr,
2548-
RegisterOrConstant(super_check_offset));
2546+
failure_target, nullptr);
25492547
if (need_slow_path) {
25502548
// Call out-of-line instance of __ check_klass_subtype_slow_path(...):
25512549
address a = Runtime1::entry_for (C1StubId::slow_subtype_check_id);

src/hotspot/cpu/s390/c1_Runtime1_s390.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,12 @@ OopMapSet* Runtime1::generate_code_for(C1StubId id, StubAssembler* sasm) {
557557
__ z_lg(Rsubklass, 0*BytesPerWord + FrameMap::first_available_sp_in_frame + frame_size, Z_SP);
558558
__ z_lg(Rsuperklass, 1*BytesPerWord + FrameMap::first_available_sp_in_frame + frame_size, Z_SP);
559559

560-
__ check_klass_subtype_slow_path(Rsubklass, Rsuperklass, Rarray_ptr, Rlength, nullptr, &miss);
560+
__ check_klass_subtype_slow_path(Rsubklass,
561+
Rsuperklass,
562+
Rarray_ptr /* temp_reg */,
563+
Rlength /* temp2_reg */,
564+
nullptr /* L_success */,
565+
&miss /* L_failure */);
561566

562567
// Match falls through here.
563568
i = 0;

0 commit comments

Comments
 (0)