< prev index next >

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp

Print this page
rev 55751 : 8228369: Shenandoah: Refactor LRB C1 stubs

*** 60,78 **** --- 60,90 ---- void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp); void load_reference_barrier_native(MacroAssembler* masm, Register dst, Register tmp); address generate_shenandoah_lrb(StubCodeGenerator* cgen); + // Generate cset check. If obj is not in cset, branch to done label, otherwise fall through + // obj: Register holding the oop, preserved + // tmp1, tmp2: temp registers, trashed + void gen_cset_check(MacroAssembler* masm, Register obj, Register tmp1, Register tmp2, Label& done); + + // Generate check if object is resolved. Branch to not_resolved label, if not. Otherwise return resolved + // object in obj register. + // obj: object, resolved object on normal return + // tmp1, tmp2: temp registers, trashed + void gen_resolved_check(MacroAssembler* masm, Register obj, Register tmp1, Register tmp2, Label& resolved); + public: static address shenandoah_lrb(); void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp); #ifdef COMPILER1 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub); void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm); + void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm); #endif virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, Register src, Register dst, Register count, RegSet saved_regs); virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
< prev index next >