56 |
56 |
57 void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg); |
57 void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg); |
58 void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg); |
58 void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg); |
59 void load_reference_barrier(MacroAssembler* masm, Register dst, Register tmp); |
59 void load_reference_barrier(MacroAssembler* masm, Register dst, Register tmp); |
60 void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp); |
60 void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp); |
|
61 void load_reference_barrier_native(MacroAssembler* masm, Register dst, Register tmp); |
61 |
62 |
62 address generate_shenandoah_lrb(StubCodeGenerator* cgen); |
63 address generate_shenandoah_lrb(StubCodeGenerator* cgen); |
63 |
64 |
64 public: |
65 public: |
65 static address shenandoah_lrb(); |
66 static address shenandoah_lrb(); |
68 |
69 |
69 #ifdef COMPILER1 |
70 #ifdef COMPILER1 |
70 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); |
71 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); |
71 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub); |
72 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub); |
72 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm); |
73 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm); |
|
74 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm); |
73 #endif |
75 #endif |
74 |
76 |
75 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, |
77 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, |
76 Register src, Register dst, Register count, RegSet saved_regs); |
78 Register src, Register dst, Register count, RegSet saved_regs); |
77 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, |
|
78 Register start, Register count, Register tmp, RegSet saved_regs); |
|
79 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, |
79 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, |
80 Register dst, Address src, Register tmp1, Register tmp_thread); |
80 Register dst, Address src, Register tmp1, Register tmp_thread); |
81 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, |
81 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, |
82 Address dst, Register val, Register tmp1, Register tmp2); |
82 Address dst, Register val, Register tmp1, Register tmp2); |
|
83 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env, |
|
84 Register obj, Register tmp, Label& slowpath); |
83 void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val, |
85 void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val, |
84 bool acquire, bool release, bool weak, bool is_cae, Register result); |
86 bool acquire, bool release, bool weak, bool is_cae, Register result); |
85 |
87 |
86 virtual void barrier_stubs_init(); |
88 virtual void barrier_stubs_init(); |
87 }; |
89 }; |