< prev index next >

src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp

Print this page
rev 58062 : 8239081: Shenandoah: Consolidate C1 LRB and native barriers

*** 92,105 **** LIR_Opr _obj; LIR_Opr _addr; LIR_Opr _result; LIR_Opr _tmp1; LIR_Opr _tmp2; ! public: ! ShenandoahLoadReferenceBarrierStub(LIR_Opr obj, LIR_Opr addr, LIR_Opr result, LIR_Opr tmp1, LIR_Opr tmp2) : ! _obj(obj), _addr(addr), _result(result), _tmp1(tmp1), _tmp2(tmp2) { assert(_obj->is_register(), "should be register"); assert(_addr->is_register(), "should be register"); assert(_result->is_register(), "should be register"); assert(_tmp1->is_register(), "should be register"); --- 92,105 ---- LIR_Opr _obj; LIR_Opr _addr; LIR_Opr _result; LIR_Opr _tmp1; LIR_Opr _tmp2; ! bool _is_native; public: ! ShenandoahLoadReferenceBarrierStub(LIR_Opr obj, LIR_Opr addr, LIR_Opr result, LIR_Opr tmp1, LIR_Opr tmp2, bool is_native) : ! _obj(obj), _addr(addr), _result(result), _tmp1(tmp1), _tmp2(tmp2), _is_native(is_native) { assert(_obj->is_register(), "should be register"); assert(_addr->is_register(), "should be register"); assert(_result->is_register(), "should be register"); assert(_tmp1->is_register(), "should be register");
*** 109,118 **** --- 109,119 ---- LIR_Opr obj() const { return _obj; } LIR_Opr addr() const { return _addr; } LIR_Opr result() const { return _result; } LIR_Opr tmp1() const { return _tmp1; } LIR_Opr tmp2() const { return _tmp2; } + bool is_native() const { return _is_native; } virtual void emit_code(LIR_Assembler* e); virtual void visit(LIR_OpVisitState* visitor) { visitor->do_slow_case(); visitor->do_input(_obj);
*** 188,204 **** class ShenandoahBarrierSetC1 : public BarrierSetC1 { private: CodeBlob* _pre_barrier_c1_runtime_code_blob; CodeBlob* _load_reference_barrier_rt_code_blob; void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val); ! LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr); LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators); ! LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr); LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj, BasicType type); public: ShenandoahBarrierSetC1(); --- 189,206 ---- class ShenandoahBarrierSetC1 : public BarrierSetC1 { private: CodeBlob* _pre_barrier_c1_runtime_code_blob; CodeBlob* _load_reference_barrier_rt_code_blob; + CodeBlob* _load_reference_barrier_native_rt_code_blob; void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val); ! LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr, bool is_native); LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators); ! LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr, bool is_native); LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj, BasicType type); public: ShenandoahBarrierSetC1();
*** 211,220 **** --- 213,226 ---- CodeBlob* load_reference_barrier_rt_code_blob() { assert(_load_reference_barrier_rt_code_blob != NULL, ""); return _load_reference_barrier_rt_code_blob; } + CodeBlob* load_reference_barrier_native_rt_code_blob() { + assert(_load_reference_barrier_native_rt_code_blob != NULL, ""); + return _load_reference_barrier_native_rt_code_blob; + } protected: virtual void store_at_resolved(LIRAccess& access, LIR_Opr value); virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register); virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
*** 224,232 **** virtual LIR_Opr atomic_xchg_at_resolved(LIRAccess& access, LIRItem& value); public: virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob); - virtual const char* rtcall_name_for_address(address entry); }; #endif // SHARE_GC_SHENANDOAH_C1_SHENANDOAHBARRIERSETC1_HPP --- 230,237 ----
< prev index next >