< prev index next >
src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp
Print this page
rev 58065 : 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 _native;
public:
! ShenandoahLoadReferenceBarrierStub(LIR_Opr obj, LIR_Opr addr, LIR_Opr result, LIR_Opr tmp1, LIR_Opr tmp2, bool native) :
! _obj(obj), _addr(addr), _result(result), _tmp1(tmp1), _tmp2(tmp2), _native(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 _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 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 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 >