173 void bind(Node* lab); |
173 void bind(Node* lab); |
174 void goto_(Node* lab, bool bind = false); |
174 void goto_(Node* lab, bool bind = false); |
175 void declarations_done(); |
175 void declarations_done(); |
176 void drain_delay_transform(); |
176 void drain_delay_transform(); |
177 |
177 |
178 Node* IfTrue(IfNode* iff) { return transform(new (C,1) IfTrueNode(iff)); } |
178 Node* IfTrue(IfNode* iff) { return transform(new (C) IfTrueNode(iff)); } |
179 Node* IfFalse(IfNode* iff) { return transform(new (C,1) IfFalseNode(iff)); } |
179 Node* IfFalse(IfNode* iff) { return transform(new (C) IfFalseNode(iff)); } |
180 |
180 |
181 // Data |
181 // Data |
182 Node* ConI(jint k) { return (Node*)gvn().intcon(k); } |
182 Node* ConI(jint k) { return (Node*)gvn().intcon(k); } |
183 Node* makecon(const Type *t) const { return _gvn.makecon(t); } |
183 Node* makecon(const Type *t) const { return _gvn.makecon(t); } |
184 |
184 |
185 Node* AddI(Node* l, Node* r) { return transform(new (C,3) AddINode(l, r)); } |
185 Node* AddI(Node* l, Node* r) { return transform(new (C) AddINode(l, r)); } |
186 Node* SubI(Node* l, Node* r) { return transform(new (C,3) SubINode(l, r)); } |
186 Node* SubI(Node* l, Node* r) { return transform(new (C) SubINode(l, r)); } |
187 Node* AndI(Node* l, Node* r) { return transform(new (C,3) AndINode(l, r)); } |
187 Node* AndI(Node* l, Node* r) { return transform(new (C) AndINode(l, r)); } |
188 Node* MaxI(Node* l, Node* r) { return transform(new (C,3) MaxINode(l, r)); } |
188 Node* MaxI(Node* l, Node* r) { return transform(new (C) MaxINode(l, r)); } |
189 Node* LShiftI(Node* l, Node* r) { return transform(new (C,3) LShiftINode(l, r)); } |
189 Node* LShiftI(Node* l, Node* r) { return transform(new (C) LShiftINode(l, r)); } |
190 Node* CmpI(Node* l, Node* r) { return transform(new (C,3) CmpINode(l, r)); } |
190 Node* CmpI(Node* l, Node* r) { return transform(new (C) CmpINode(l, r)); } |
191 Node* Bool(Node* cmp, BoolTest::mask relop) { return transform(new (C,2) BoolNode(cmp, relop)); } |
191 Node* Bool(Node* cmp, BoolTest::mask relop) { return transform(new (C) BoolNode(cmp, relop)); } |
192 void increment(IdealVariable& v, Node* j) { set(v, AddI(value(v), j)); } |
192 void increment(IdealVariable& v, Node* j) { set(v, AddI(value(v), j)); } |
193 void decrement(IdealVariable& v, Node* j) { set(v, SubI(value(v), j)); } |
193 void decrement(IdealVariable& v, Node* j) { set(v, SubI(value(v), j)); } |
194 |
194 |
195 Node* CmpL(Node* l, Node* r) { return transform(new (C,3) CmpLNode(l, r)); } |
195 Node* CmpL(Node* l, Node* r) { return transform(new (C) CmpLNode(l, r)); } |
196 |
196 |
197 // TLS |
197 // TLS |
198 Node* thread() { return gvn().transform(new (C, 1) ThreadLocalNode()); } |
198 Node* thread() { return gvn().transform(new (C) ThreadLocalNode()); } |
199 |
199 |
200 // Pointers |
200 // Pointers |
201 Node* AddP(Node *base, Node *ptr, Node *off) { return transform(new (C,4) AddPNode(base, ptr, off)); } |
201 Node* AddP(Node *base, Node *ptr, Node *off) { return transform(new (C) AddPNode(base, ptr, off)); } |
202 Node* CmpP(Node* l, Node* r) { return transform(new (C,3) CmpPNode(l, r)); } |
202 Node* CmpP(Node* l, Node* r) { return transform(new (C) CmpPNode(l, r)); } |
203 #ifdef _LP64 |
203 #ifdef _LP64 |
204 Node* XorX(Node* l, Node* r) { return transform(new (C,3) XorLNode(l, r)); } |
204 Node* XorX(Node* l, Node* r) { return transform(new (C) XorLNode(l, r)); } |
205 #else // _LP64 |
205 #else // _LP64 |
206 Node* XorX(Node* l, Node* r) { return transform(new (C,3) XorINode(l, r)); } |
206 Node* XorX(Node* l, Node* r) { return transform(new (C) XorINode(l, r)); } |
207 #endif // _LP64 |
207 #endif // _LP64 |
208 Node* URShiftX(Node* l, Node* r) { return transform(new (C,3) URShiftXNode(l, r)); } |
208 Node* URShiftX(Node* l, Node* r) { return transform(new (C) URShiftXNode(l, r)); } |
209 Node* ConX(jint k) { return (Node*)gvn().MakeConX(k); } |
209 Node* ConX(jint k) { return (Node*)gvn().MakeConX(k); } |
210 Node* CastPX(Node* ctl, Node* p) { return transform(new (C,2) CastP2XNode(ctl, p)); } |
210 Node* CastPX(Node* ctl, Node* p) { return transform(new (C) CastP2XNode(ctl, p)); } |
211 // Add a fixed offset to a pointer |
211 // Add a fixed offset to a pointer |
212 Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset); |
212 Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset); |
213 |
213 |
214 // Memory operations |
214 // Memory operations |
215 |
215 |