< prev index next >
src/share/vm/opto/connode.hpp
Print this page
*** 242,264 ****
// cast integer to integer (different range)
class CastIINode: public ConstraintCastNode {
private:
// Can this node be removed post CCP or does it carry a required dependency?
const bool _carry_dependency;
protected:
virtual uint cmp( const Node &n ) const;
virtual uint size_of() const;
public:
! CastIINode(Node *n, const Type *t, bool carry_dependency = false)
! : ConstraintCastNode(n,t), _carry_dependency(carry_dependency) {}
virtual int Opcode() const;
virtual uint ideal_reg() const { return Op_RegI; }
virtual Node *Identity( PhaseTransform *phase );
virtual const Type *Value( PhaseTransform *phase ) const;
virtual Node *Ideal_DU_postCCP( PhaseCCP * );
#ifndef PRODUCT
virtual void dump_spec(outputStream *st) const;
#endif
};
--- 242,276 ----
// cast integer to integer (different range)
class CastIINode: public ConstraintCastNode {
private:
// Can this node be removed post CCP or does it carry a required dependency?
const bool _carry_dependency;
+ // Is this node dependent on a range check?
+ const bool _range_check_dependency;
protected:
virtual uint cmp( const Node &n ) const;
virtual uint size_of() const;
public:
! CastIINode(Node *n, const Type *t, bool carry_dependency = false, bool range_check_dependency = false)
! : ConstraintCastNode(n,t), _carry_dependency(carry_dependency), _range_check_dependency(range_check_dependency) {
! init_class_id(Class_CastII);
! }
virtual int Opcode() const;
virtual uint ideal_reg() const { return Op_RegI; }
virtual Node *Identity( PhaseTransform *phase );
virtual const Type *Value( PhaseTransform *phase ) const;
virtual Node *Ideal_DU_postCCP( PhaseCCP * );
+ const bool has_range_check() {
+ #ifdef _LP64
+ return _range_check_dependency;
+ #else
+ assert(!_range_check_dependency, "Should not have range check dependency");
+ return false;
+ #endif
+ }
#ifndef PRODUCT
virtual void dump_spec(outputStream *st) const;
#endif
};
< prev index next >