Skip to content

Commit dc940ec

Browse files
author
Hamlin Li
committed
8344387: RISC-V: C2: Improve encoding of LoadNKlass for compact headers
Reviewed-by: fyang, luhenry
1 parent ded01e4 commit dc940ec

File tree

3 files changed

+6
-14
lines changed

3 files changed

+6
-14
lines changed

src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3124,13 +3124,3 @@ void C2_MacroAssembler::extract_fp_v(FloatRegister dst, VectorRegister src, Basi
31243124
vfmv_f_s(dst, tmp);
31253125
}
31263126
}
3127-
3128-
void C2_MacroAssembler::load_narrow_klass_compact_c2(Register dst, Address src) {
3129-
// The incoming address is pointing into obj-start + klass_offset_in_bytes. We need to extract
3130-
// obj-start, so that we can load from the object's mark-word instead. Usually the address
3131-
// comes as obj-start in obj and klass_offset_in_bytes in disp.
3132-
assert(UseCompactObjectHeaders, "must");
3133-
int offset = oopDesc::mark_offset_in_bytes() - oopDesc::klass_offset_in_bytes();
3134-
ld(dst, Address(src.base(), src.offset() + offset));
3135-
srli(dst, dst, markWord::klass_shift);
3136-
}

src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,4 @@
281281
void extract_v(Register dst, VectorRegister src, BasicType bt, int idx, VectorRegister tmp);
282282
void extract_fp_v(FloatRegister dst, VectorRegister src, BasicType bt, int idx, VectorRegister tmp);
283283

284-
void load_narrow_klass_compact_c2(Register dst, Address src);
285-
286284
#endif // CPU_RISCV_C2_MACROASSEMBLER_RISCV_HPP

src/hotspot/cpu/riscv/riscv.ad

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4814,10 +4814,14 @@ instruct loadNKlassCompactHeaders(iRegNNoSp dst, memory mem)
48144814
match(Set dst (LoadNKlass mem));
48154815

48164816
ins_cost(LOAD_COST);
4817-
format %{ "load_narrow_klass_compact $dst, $mem\t# compressed class ptr, #@loadNKlassCompactHeaders" %}
4817+
format %{
4818+
"lwu $dst, $mem\t# compressed klass ptr, shifted\n\t"
4819+
"srli $dst, $dst, markWord::klass_shift_at_offset"
4820+
%}
48184821

48194822
ins_encode %{
4820-
__ load_narrow_klass_compact_c2(as_Register($dst$$reg), Address(as_Register($mem$$base), $mem$$disp));
4823+
__ lwu(as_Register($dst$$reg), Address(as_Register($mem$$base), $mem$$disp));
4824+
__ srli(as_Register($dst$$reg), as_Register($dst$$reg), (unsigned) markWord::klass_shift_at_offset);
48214825
%}
48224826

48234827
ins_pipe(iload_reg_mem);

0 commit comments

Comments
 (0)