70 LIR_Opr new_zpointer,
71 LIR_Opr tmp,
72 bool is_atomic,
73 address runtime_stub);
74
75 LIR_Opr ref_addr() const;
76 LIR_Opr new_zaddress() const;
77 LIR_Opr new_zpointer() const;
78 LIR_Opr tmp() const;
79 bool is_atomic() const;
80 address runtime_stub() const;
81
82 virtual void emit_code(LIR_Assembler* ce);
83 virtual void visit(LIR_OpVisitState* visitor);
84
85 #ifndef PRODUCT
86 virtual void print_name(outputStream* out) const;
87 #endif // PRODUCT
88 };
89
90 class ZBarrierSetC1 : public BarrierSetC1 {
91 private:
92 address _load_barrier_on_oop_field_preloaded_runtime_stub;
93 address _load_barrier_on_weak_oop_field_preloaded_runtime_stub;
94 address _store_barrier_on_oop_field_with_healing;
95 address _store_barrier_on_oop_field_without_healing;
96
97 address load_barrier_on_oop_field_preloaded_runtime_stub(DecoratorSet decorators) const;
98 address store_barrier_on_oop_field_runtime_stub(bool self_healing) const;
99
100 LIR_Opr color(LIRAccess& access, LIR_Opr ref) const;
101
102 void load_barrier(LIRAccess& access, LIR_Opr result) const;
103 LIR_Opr store_barrier(LIRAccess& access, LIR_Opr new_zaddress, bool is_atomic) const;
104
105 protected:
106 virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
107 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
108 virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
109 virtual LIR_Opr atomic_cmpxchg_at_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
110 virtual LIR_Opr atomic_xchg_at_resolved(LIRAccess& access, LIRItem& value);
|
70 LIR_Opr new_zpointer,
71 LIR_Opr tmp,
72 bool is_atomic,
73 address runtime_stub);
74
75 LIR_Opr ref_addr() const;
76 LIR_Opr new_zaddress() const;
77 LIR_Opr new_zpointer() const;
78 LIR_Opr tmp() const;
79 bool is_atomic() const;
80 address runtime_stub() const;
81
82 virtual void emit_code(LIR_Assembler* ce);
83 virtual void visit(LIR_OpVisitState* visitor);
84
85 #ifndef PRODUCT
86 virtual void print_name(outputStream* out) const;
87 #endif // PRODUCT
88 };
89
90 class SCAddressTable;
91
92 class ZBarrierSetC1 : public BarrierSetC1 {
93 friend SCAddressTable;
94 private:
95 address _load_barrier_on_oop_field_preloaded_runtime_stub;
96 address _load_barrier_on_weak_oop_field_preloaded_runtime_stub;
97 address _store_barrier_on_oop_field_with_healing;
98 address _store_barrier_on_oop_field_without_healing;
99
100 address load_barrier_on_oop_field_preloaded_runtime_stub(DecoratorSet decorators) const;
101 address store_barrier_on_oop_field_runtime_stub(bool self_healing) const;
102
103 LIR_Opr color(LIRAccess& access, LIR_Opr ref) const;
104
105 void load_barrier(LIRAccess& access, LIR_Opr result) const;
106 LIR_Opr store_barrier(LIRAccess& access, LIR_Opr new_zaddress, bool is_atomic) const;
107
108 protected:
109 virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
110 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
111 virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
112 virtual LIR_Opr atomic_cmpxchg_at_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
113 virtual LIR_Opr atomic_xchg_at_resolved(LIRAccess& access, LIRItem& value);
|