1.1 --- a/src/share/vm/opto/connode.hpp Mon Jan 25 08:46:19 2016 +0000 1.2 +++ b/src/share/vm/opto/connode.hpp Wed Jan 27 09:02:51 2016 +0100 1.3 @@ -244,19 +244,31 @@ 1.4 private: 1.5 // Can this node be removed post CCP or does it carry a required dependency? 1.6 const bool _carry_dependency; 1.7 + // Is this node dependent on a range check? 1.8 + const bool _range_check_dependency; 1.9 1.10 protected: 1.11 virtual uint cmp( const Node &n ) const; 1.12 virtual uint size_of() const; 1.13 1.14 public: 1.15 - CastIINode(Node *n, const Type *t, bool carry_dependency = false) 1.16 - : ConstraintCastNode(n,t), _carry_dependency(carry_dependency) {} 1.17 + CastIINode(Node *n, const Type *t, bool carry_dependency = false, bool range_check_dependency = false) 1.18 + : ConstraintCastNode(n,t), _carry_dependency(carry_dependency), _range_check_dependency(range_check_dependency) { 1.19 + init_class_id(Class_CastII); 1.20 + } 1.21 virtual int Opcode() const; 1.22 virtual uint ideal_reg() const { return Op_RegI; } 1.23 virtual Node *Identity( PhaseTransform *phase ); 1.24 virtual const Type *Value( PhaseTransform *phase ) const; 1.25 virtual Node *Ideal_DU_postCCP( PhaseCCP * ); 1.26 + const bool has_range_check() { 1.27 + #ifdef _LP64 1.28 + return _range_check_dependency; 1.29 + #else 1.30 + assert(!_range_check_dependency, "Should not have range check dependency"); 1.31 + return false; 1.32 + #endif 1.33 + } 1.34 #ifndef PRODUCT 1.35 virtual void dump_spec(outputStream *st) const; 1.36 #endif