--- old/src/share/vm/opto/castnode.hpp 2014-09-17 18:42:42.573371559 +0200 +++ new/src/share/vm/opto/castnode.hpp 2014-09-17 18:42:42.381075552 +0200 @@ -48,10 +48,23 @@ //------------------------------CastIINode------------------------------------- // 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 _required; + // Is the type of this CastII the best we can do or do we expect to + // improve it later on and so we shouldn't optimize it out? + const bool _inexact; public: - CastIINode (Node *n, const Type *t ): ConstraintCastNode(n,t) {} + CastIINode(Node *n, const Type *t, bool required = false, bool inexact = false) + : ConstraintCastNode(n,t), _required(required), _inexact(inexact) {} virtual int Opcode() const; virtual uint ideal_reg() const { return Op_RegI; } + virtual Node *Identity( PhaseTransform *phase ); + virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); + virtual Node *Ideal_DU_postCCP( PhaseCCP * ); +#ifndef PRODUCT + virtual void dump_spec(outputStream *st) const; +#endif }; //------------------------------CastPPNode-------------------------------------