155 CmpINode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
156 virtual int Opcode() const;
157 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
158 virtual const Type *sub( const Type *, const Type * ) const;
159 };
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 private:
176 #if INCLUDE_SHENANDOAHGC
177 bool shenandoah_optimize_java_mirror_cmp(PhaseGVN *phase, bool can_reshape);
178 #endif
179
180 public:
181 CmpPNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
182 virtual int Opcode() const;
183 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
184 virtual const Type *sub( const Type *, const Type * ) const;
185 };
186
187 //------------------------------CmpNNode--------------------------------------
188 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
189 class CmpNNode : public CmpNode {
190 public:
191 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
192 virtual int Opcode() const;
193 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
194 virtual const Type *sub( const Type *, const Type * ) const;
195 };
196
197 //------------------------------CmpLNode---------------------------------------
198 // Compare 2 long values, returning condition codes (-1, 0 or 1).
199 class CmpLNode : public CmpNode {
|
155 CmpINode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
156 virtual int Opcode() const;
157 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
158 virtual const Type *sub( const Type *, const Type * ) const;
159 };
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 {
|