101 DecoratorSet _decorators; |
101 DecoratorSet _decorators; |
102 BasicType _type; |
102 BasicType _type; |
103 Node* _base; |
103 Node* _base; |
104 C2AccessValuePtr& _addr; |
104 C2AccessValuePtr& _addr; |
105 Node* _raw_access; |
105 Node* _raw_access; |
|
106 uint8_t _barrier_data; |
106 |
107 |
107 void fixup_decorators(); |
108 void fixup_decorators(); |
108 |
109 |
109 public: |
110 public: |
110 C2Access(DecoratorSet decorators, |
111 C2Access(DecoratorSet decorators, |
111 BasicType type, Node* base, C2AccessValuePtr& addr) : |
112 BasicType type, Node* base, C2AccessValuePtr& addr) : |
112 _decorators(decorators), |
113 _decorators(decorators), |
113 _type(type), |
114 _type(type), |
114 _base(base), |
115 _base(base), |
115 _addr(addr), |
116 _addr(addr), |
116 _raw_access(NULL) |
117 _raw_access(NULL), |
|
118 _barrier_data(0) |
117 {} |
119 {} |
118 |
120 |
119 DecoratorSet decorators() const { return _decorators; } |
121 DecoratorSet decorators() const { return _decorators; } |
120 Node* base() const { return _base; } |
122 Node* base() const { return _base; } |
121 C2AccessValuePtr& addr() const { return _addr; } |
123 C2AccessValuePtr& addr() const { return _addr; } |
122 BasicType type() const { return _type; } |
124 BasicType type() const { return _type; } |
123 bool is_oop() const { return is_reference_type(_type); } |
125 bool is_oop() const { return is_reference_type(_type); } |
124 bool is_raw() const { return (_decorators & AS_RAW) != 0; } |
126 bool is_raw() const { return (_decorators & AS_RAW) != 0; } |
125 Node* raw_access() const { return _raw_access; } |
127 Node* raw_access() const { return _raw_access; } |
|
128 |
|
129 uint8_t barrier_data() const { return _barrier_data; } |
|
130 void set_barrier_data(uint8_t data) { _barrier_data = data; } |
126 |
131 |
127 void set_raw_access(Node* raw_access) { _raw_access = raw_access; } |
132 void set_raw_access(Node* raw_access) { _raw_access = raw_access; } |
128 virtual void set_memory() {} // no-op for normal accesses, but not for atomic accesses. |
133 virtual void set_memory() {} // no-op for normal accesses, but not for atomic accesses. |
129 |
134 |
130 MemNode::MemOrd mem_node_mo() const; |
135 MemNode::MemOrd mem_node_mo() const; |