160
161 //------------------------------CmpUNode---------------------------------------
162 // Compare 2 unsigned values (integer or pointer), returning condition codes (-1, 0 or 1).
163 class CmpUNode : public CmpNode {
164 public:
165 CmpUNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
166 virtual int Opcode() const;
167 virtual const Type *sub( const Type *, const Type * ) const;
168 const Type* Value(PhaseGVN* phase) const;
169 bool is_index_range_check() const;
170 };
171
172 //------------------------------CmpPNode---------------------------------------
173 // Compare 2 pointer values, returning condition codes (-1, 0 or 1).
174 class CmpPNode : public CmpNode {
175 public:
176 CmpPNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
177 virtual int Opcode() const;
178 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
179 virtual const Type *sub( const Type *, const Type * ) const;
180 Node* has_perturbed_operand() const;
181 };
182
183 //------------------------------CmpNNode--------------------------------------
184 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
185 class CmpNNode : public CmpNode {
186 public:
187 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
188 virtual int Opcode() const;
189 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
190 virtual const Type *sub( const Type *, const Type * ) const;
191 };
192
193 //------------------------------CmpLNode---------------------------------------
194 // Compare 2 long values, returning condition codes (-1, 0 or 1).
195 class CmpLNode : public CmpNode {
196 public:
197 CmpLNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
198 virtual int Opcode() const;
199 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
200 virtual const Type* Value(PhaseGVN* phase) const;
|
160
161 //------------------------------CmpUNode---------------------------------------
162 // Compare 2 unsigned values (integer or pointer), returning condition codes (-1, 0 or 1).
163 class CmpUNode : public CmpNode {
164 public:
165 CmpUNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
166 virtual int Opcode() const;
167 virtual const Type *sub( const Type *, const Type * ) const;
168 const Type* Value(PhaseGVN* phase) const;
169 bool is_index_range_check() const;
170 };
171
172 //------------------------------CmpPNode---------------------------------------
173 // Compare 2 pointer values, returning condition codes (-1, 0 or 1).
174 class CmpPNode : public CmpNode {
175 public:
176 CmpPNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
177 virtual int Opcode() const;
178 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
179 virtual const Type *sub( const Type *, const Type * ) const;
180 };
181
182 //------------------------------CmpNNode--------------------------------------
183 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
184 class CmpNNode : public CmpNode {
185 public:
186 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
187 virtual int Opcode() const;
188 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
189 virtual const Type *sub( const Type *, const Type * ) const;
190 };
191
192 //------------------------------CmpLNode---------------------------------------
193 // Compare 2 long values, returning condition codes (-1, 0 or 1).
194 class CmpLNode : public CmpNode {
195 public:
196 CmpLNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
197 virtual int Opcode() const;
198 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
199 virtual const Type* Value(PhaseGVN* phase) const;
|