149 CmpINode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
150 virtual int Opcode() const;
151 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
152 virtual const Type *sub( const Type *, const Type * ) const;
153 };
154
155 //------------------------------CmpUNode---------------------------------------
156 // Compare 2 unsigned values (integer or pointer), returning condition codes (-1, 0 or 1).
157 class CmpUNode : public CmpNode {
158 public:
159 CmpUNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
160 virtual int Opcode() const;
161 virtual const Type *sub( const Type *, const Type * ) const;
162 const Type *Value( PhaseTransform *phase ) const;
163 bool is_index_range_check() const;
164 };
165
166 //------------------------------CmpPNode---------------------------------------
167 // Compare 2 pointer values, returning condition codes (-1, 0 or 1).
168 class CmpPNode : public CmpNode {
169 private:
170 bool shenandoah_optimize_java_mirror_cmp(PhaseGVN *phase, bool can_reshape);
171
172 public:
173 CmpPNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
174 virtual int Opcode() const;
175 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
176 virtual const Type *sub( const Type *, const Type * ) const;
177 };
178
179 //------------------------------CmpNNode--------------------------------------
180 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
181 class CmpNNode : public CmpNode {
182 public:
183 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
184 virtual int Opcode() const;
185 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
186 virtual const Type *sub( const Type *, const Type * ) const;
187 };
188
189 //------------------------------CmpLNode---------------------------------------
190 // Compare 2 long values, returning condition codes (-1, 0 or 1).
191 class CmpLNode : public CmpNode {
|
149 CmpINode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
150 virtual int Opcode() const;
151 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
152 virtual const Type *sub( const Type *, const Type * ) const;
153 };
154
155 //------------------------------CmpUNode---------------------------------------
156 // Compare 2 unsigned values (integer or pointer), returning condition codes (-1, 0 or 1).
157 class CmpUNode : public CmpNode {
158 public:
159 CmpUNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
160 virtual int Opcode() const;
161 virtual const Type *sub( const Type *, const Type * ) const;
162 const Type *Value( PhaseTransform *phase ) const;
163 bool is_index_range_check() const;
164 };
165
166 //------------------------------CmpPNode---------------------------------------
167 // Compare 2 pointer values, returning condition codes (-1, 0 or 1).
168 class CmpPNode : public CmpNode {
169 public:
170 CmpPNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
171 virtual int Opcode() const;
172 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
173 virtual const Type *sub( const Type *, const Type * ) const;
174 };
175
176 //------------------------------CmpNNode--------------------------------------
177 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
178 class CmpNNode : public CmpNode {
179 public:
180 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
181 virtual int Opcode() const;
182 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
183 virtual const Type *sub( const Type *, const Type * ) const;
184 };
185
186 //------------------------------CmpLNode---------------------------------------
187 // Compare 2 long values, returning condition codes (-1, 0 or 1).
188 class CmpLNode : public CmpNode {
|