Skip to content

Commit 59ba2ac

Browse files
author
duke
committed
Backport a13e34da3f81039b572fd6030d6ee63dfffad612
1 parent 931aaaa commit 59ba2ac

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

src/hotspot/cpu/ppc/macroAssembler_ppc.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,13 +1285,7 @@ int MacroAssembler::ic_check(int end_alignment) {
12851285
if (use_trap_based_null_check) {
12861286
trap_null_check(receiver);
12871287
}
1288-
if (UseCompactObjectHeaders) {
1289-
load_narrow_klass_compact(tmp1, receiver);
1290-
} else if (UseCompressedClassPointers) {
1291-
lwz(tmp1, oopDesc::klass_offset_in_bytes(), receiver);
1292-
} else {
1293-
ld(tmp1, oopDesc::klass_offset_in_bytes(), receiver);
1294-
}
1288+
load_klass_no_decode(tmp1, receiver); // 2 instructions with UseCompactObjectHeaders
12951289
ld(tmp2, in_bytes(CompiledICData::speculated_klass_offset()), data);
12961290
trap_ic_miss_check(tmp1, tmp2);
12971291

@@ -1307,11 +1301,7 @@ int MacroAssembler::ic_check(int end_alignment) {
13071301
cmpdi(CCR0, receiver, 0);
13081302
beqctr(CCR0);
13091303
}
1310-
if (UseCompressedClassPointers) {
1311-
lwz(tmp1, oopDesc::klass_offset_in_bytes(), receiver);
1312-
} else {
1313-
ld(tmp1, oopDesc::klass_offset_in_bytes(), receiver);
1314-
}
1304+
load_klass_no_decode(tmp1, receiver); // 2 instructions with UseCompactObjectHeaders
13151305
ld(tmp2, in_bytes(CompiledICData::speculated_klass_offset()), data);
13161306
cmpd(CCR0, tmp1, tmp2);
13171307
bnectr(CCR0);
@@ -3365,18 +3355,23 @@ void MacroAssembler::decode_klass_not_null(Register dst, Register src) {
33653355
}
33663356
}
33673357

3368-
void MacroAssembler::load_klass(Register dst, Register src) {
3358+
void MacroAssembler::load_klass_no_decode(Register dst, Register src) {
33693359
if (UseCompactObjectHeaders) {
33703360
load_narrow_klass_compact(dst, src);
3371-
decode_klass_not_null(dst);
33723361
} else if (UseCompressedClassPointers) {
33733362
lwz(dst, oopDesc::klass_offset_in_bytes(), src);
3374-
decode_klass_not_null(dst);
33753363
} else {
33763364
ld(dst, oopDesc::klass_offset_in_bytes(), src);
33773365
}
33783366
}
33793367

3368+
void MacroAssembler::load_klass(Register dst, Register src) {
3369+
load_klass_no_decode(dst, src);
3370+
if (UseCompressedClassPointers) { // also true for UseCompactObjectHeaders
3371+
decode_klass_not_null(dst);
3372+
}
3373+
}
3374+
33803375
// Loads the obj's Klass* into dst.
33813376
// Preserves all registers (incl src, rscratch1 and rscratch2).
33823377
// Input:

src/hotspot/cpu/ppc/macroAssembler_ppc.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,7 @@ class MacroAssembler: public Assembler {
769769
inline void decode_heap_oop(Register d);
770770

771771
// Load/Store klass oop from klass field. Compress.
772+
void load_klass_no_decode(Register dst, Register src);
772773
void load_klass(Register dst, Register src);
773774
void load_narrow_klass_compact(Register dst, Register src);
774775
void cmp_klass(ConditionRegister dst, Register obj, Register klass, Register tmp, Register tmp2);

0 commit comments

Comments
 (0)