68 if (con == NULL) |
68 if (con == NULL) |
69 return new (C, 1) ConPNode( TypePtr::NULL_PTR ) ; |
69 return new (C, 1) ConPNode( TypePtr::NULL_PTR ) ; |
70 else |
70 else |
71 return new (C, 1) ConPNode( TypeRawPtr::make(con) ); |
71 return new (C, 1) ConPNode( TypeRawPtr::make(con) ); |
72 } |
72 } |
73 |
|
74 static ConPNode* make( Compile *C, ciObject* con ) { |
|
75 return new (C, 1) ConPNode( TypeOopPtr::make_from_constant(con) ); |
|
76 } |
|
77 |
|
78 }; |
73 }; |
79 |
74 |
80 |
75 |
81 //------------------------------ConNNode-------------------------------------- |
76 //------------------------------ConNNode-------------------------------------- |
82 // Simple narrow oop constants |
77 // Simple narrow oop constants |
83 class ConNNode : public ConNode { |
78 class ConNNode : public ConNode { |
84 public: |
79 public: |
85 ConNNode( const TypeNarrowOop *t ) : ConNode(t) {} |
80 ConNNode( const TypeNarrowOop *t ) : ConNode(t) {} |
86 virtual int Opcode() const; |
81 virtual int Opcode() const; |
87 |
|
88 static ConNNode* make( Compile *C, ciObject* con ) { |
|
89 return new (C, 1) ConNNode( TypeNarrowOop::make_from_constant(con) ); |
|
90 } |
|
91 |
|
92 }; |
82 }; |
93 |
83 |
94 |
84 |
95 //------------------------------ConLNode--------------------------------------- |
85 //------------------------------ConLNode--------------------------------------- |
96 // Simple long constants |
86 // Simple long constants |
208 public: |
198 public: |
209 CMovePNode( Node *c, Node *bol, Node *left, Node *right, const TypePtr* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); } |
199 CMovePNode( Node *c, Node *bol, Node *left, Node *right, const TypePtr* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); } |
210 virtual int Opcode() const; |
200 virtual int Opcode() const; |
211 }; |
201 }; |
212 |
202 |
213 //------------------------------ConstraintCastNode------------------------------------- |
203 //------------------------------CMoveNNode------------------------------------- |
|
204 class CMoveNNode : public CMoveNode { |
|
205 public: |
|
206 CMoveNNode( Node *c, Node *bol, Node *left, Node *right, const Type* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); } |
|
207 virtual int Opcode() const; |
|
208 }; |
|
209 |
|
210 //------------------------------ConstraintCastNode----------------------------- |
214 // cast to a different range |
211 // cast to a different range |
215 class ConstraintCastNode: public TypeNode { |
212 class ConstraintCastNode: public TypeNode { |
216 public: |
213 public: |
217 ConstraintCastNode (Node *n, const Type *t ): TypeNode(t,2) { |
214 ConstraintCastNode (Node *n, const Type *t ): TypeNode(t,2) { |
218 init_class_id(Class_ConstraintCast); |
215 init_class_id(Class_ConstraintCast); |
280 virtual int Opcode() const; |
277 virtual int Opcode() const; |
281 virtual Node *Identity( PhaseTransform *phase ); |
278 virtual Node *Identity( PhaseTransform *phase ); |
282 virtual const Type *Value( PhaseTransform *phase ) const; |
279 virtual const Type *Value( PhaseTransform *phase ) const; |
283 virtual uint ideal_reg() const { return Op_RegN; } |
280 virtual uint ideal_reg() const { return Op_RegN; } |
284 |
281 |
285 static Node* encode(PhaseGVN* phase, Node* value); |
282 static Node* encode(PhaseTransform* phase, Node* value); |
286 virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp ); |
283 virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp ); |
287 }; |
284 }; |
288 |
285 |
289 //------------------------------DecodeN-------------------------------- |
286 //------------------------------DecodeN-------------------------------- |
290 // Converts a narrow oop into a real oop ptr. |
287 // Converts a narrow oop into a real oop ptr. |
300 virtual int Opcode() const; |
297 virtual int Opcode() const; |
301 virtual Node *Identity( PhaseTransform *phase ); |
298 virtual Node *Identity( PhaseTransform *phase ); |
302 virtual const Type *Value( PhaseTransform *phase ) const; |
299 virtual const Type *Value( PhaseTransform *phase ) const; |
303 virtual uint ideal_reg() const { return Op_RegP; } |
300 virtual uint ideal_reg() const { return Op_RegP; } |
304 |
301 |
305 static Node* decode(PhaseGVN* phase, Node* value); |
302 static Node* decode(PhaseTransform* phase, Node* value); |
306 }; |
303 }; |
307 |
304 |
308 //------------------------------Conv2BNode------------------------------------- |
305 //------------------------------Conv2BNode------------------------------------- |
309 // Convert int/pointer to a Boolean. Map zero to zero, all else to 1. |
306 // Convert int/pointer to a Boolean. Map zero to zero, all else to 1. |
310 class Conv2BNode : public Node { |
307 class Conv2BNode : public Node { |