< prev index next > src/hotspot/cpu/aarch64/aarch64.ad
Print this page
ins_pipe(iload_reg_mem);
%}
// Load Narrow Klass Pointer
- instruct loadNKlass(iRegNNoSp dst, memory4 mem)
+ instruct loadNKlass(iRegNNoSp dst, memory4 mem, rFlagsReg cr)
%{
match(Set dst (LoadNKlass mem));
+ effect(TEMP_DEF dst, KILL cr);
predicate(!needs_acquiring_load(n));
ins_cost(4 * INSN_COST);
format %{ "ldrw $dst, $mem\t# compressed class ptr" %}
-
- ins_encode(aarch64_enc_ldrw(dst, mem));
-
- ins_pipe(iload_reg_mem);
+ ins_encode %{
+ assert($mem$$disp == oopDesc::klass_offset_in_bytes(), "expect correct offset");
+ assert($mem$$index$$Register == noreg, "expect no index");
+ __ load_nklass($dst$$Register, $mem$$base$$Register);
+ %}
+ ins_pipe(pipe_slow);
%}
// Load Float
instruct loadF(vRegF dst, memory4 mem)
%{
< prev index next >