< prev index next >

src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp

Print this page
rev 54386 : 8221766: Load-reference barriers for Shenandoah

*** 27,45 **** #include "asm/macroAssembler.hpp" #include "gc/shared/barrierSetAssembler.hpp" #ifdef COMPILER1 class LIR_Assembler; class ShenandoahPreBarrierStub; ! class ShenandoahWriteBarrierStub; class StubAssembler; class StubCodeGenerator; #endif class ShenandoahBarrierSetAssembler: public BarrierSetAssembler { private: ! static address _shenandoah_wb; void satb_write_barrier_pre(MacroAssembler* masm, Register obj, Register pre_val, Register thread, --- 27,45 ---- #include "asm/macroAssembler.hpp" #include "gc/shared/barrierSetAssembler.hpp" #ifdef COMPILER1 class LIR_Assembler; class ShenandoahPreBarrierStub; ! class ShenandoahLoadReferenceBarrierStub; class StubAssembler; class StubCodeGenerator; #endif class ShenandoahBarrierSetAssembler: public BarrierSetAssembler { private: ! static address _shenandoah_lrb; void satb_write_barrier_pre(MacroAssembler* masm, Register obj, Register pre_val, Register thread,
*** 53,88 **** Register thread, Register tmp, bool tosca_live, bool expand_call); ! void read_barrier(MacroAssembler* masm, Register dst); ! void read_barrier_impl(MacroAssembler* masm, Register dst); ! void read_barrier_not_null(MacroAssembler* masm, Register dst); ! void read_barrier_not_null_impl(MacroAssembler* masm, Register dst); ! ! void write_barrier(MacroAssembler* masm, Register dst); ! void write_barrier_impl(MacroAssembler* masm, Register dst); void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp); ! address generate_shenandoah_wb(StubCodeGenerator* cgen); void save_vector_registers(MacroAssembler* masm); void restore_vector_registers(MacroAssembler* masm); public: ! static address shenandoah_wb(); void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp); #ifdef COMPILER1 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); ! void gen_write_barrier_stub(LIR_Assembler* ce, ShenandoahWriteBarrierStub* stub); void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm); #endif void cmpxchg_oop(MacroAssembler* masm, Register res, Address addr, Register oldval, Register newval, bool exchange, Register tmp1, Register tmp2); virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count); --- 53,86 ---- Register thread, Register tmp, bool tosca_live, bool expand_call); ! void resolve_forward_pointer(MacroAssembler* masm, Register dst); ! void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst); ! void load_reference_barrier_not_null(MacroAssembler* masm, Register dst); void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp); ! address generate_shenandoah_lrb(StubCodeGenerator* cgen); void save_vector_registers(MacroAssembler* masm); void restore_vector_registers(MacroAssembler* masm); 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); #endif + void load_reference_barrier(MacroAssembler* masm, Register dst); + void cmpxchg_oop(MacroAssembler* masm, Register res, Address addr, Register oldval, Register newval, bool exchange, Register tmp1, Register tmp2); virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count);
*** 91,119 **** virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register dst, Address src, Register tmp1, Register tmp_thread); virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Address dst, Register val, Register tmp1, Register tmp2); - #ifndef _LP64 - virtual void obj_equals(MacroAssembler* masm, - Address obj1, jobject obj2); - virtual void obj_equals(MacroAssembler* masm, - Register obj1, jobject obj2); - #endif - - virtual void obj_equals(MacroAssembler* masm, Register src1, Register src2); - virtual void obj_equals(MacroAssembler* masm, Register src1, Address src2); - virtual void tlab_allocate(MacroAssembler* masm, Register thread, Register obj, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, Label& slow_case); - virtual void resolve(MacroAssembler* masm, DecoratorSet decorators, Register obj); - virtual void barrier_stubs_init(); }; #endif // CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP --- 89,105 ----
< prev index next >