< prev index next > src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp
Print this page
}
}
return oop_map;
}
- static OopMap* save_live_registers(StubAssembler* sasm,
- bool save_fpu_registers = true) {
+ static void save_live_registers_no_oop_map(StubAssembler* sasm,
+ bool save_fpu_registers = true) {
__ block_comment("save_live_registers");
__ push(RegSet::range(r0, r29), sp); // integer registers except lr & sp
if (save_fpu_registers) {
as_FloatRegister(i), __ T1D, Address(sp));
}
} else {
__ add(sp, sp, -32 * wordSize);
}
+ }
+ static OopMap* save_live_registers(StubAssembler* sasm,
+ bool save_fpu_registers = true) {
+ save_live_registers_no_oop_map(sasm, save_fpu_registers);
return generate_oop_map(sasm, save_fpu_registers);
}
static void restore_live_registers(StubAssembler* sasm, bool restore_fpu_registers = true) {
if (restore_fpu_registers) {
// r0,: new instance
}
break;
+ case load_klass_id:
+ {
+ StubFrame f(sasm, "load_klass", dont_gc_arguments);
+ save_live_registers_no_oop_map(sasm, true);
+ f.load_argument(0, r0); // obj
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, oopDesc::load_nklass_runtime), r0);
+ restore_live_registers_except_r0(sasm, true);
+ }
+ break;
+
case counter_overflow_id:
{
Register bci = r0, method = r1;
__ enter();
OopMap* map = save_live_registers(sasm);
< prev index next >