1.1 --- a/src/share/vm/opto/connode.hpp Wed Apr 23 06:35:28 2008 -0400 1.2 +++ b/src/share/vm/opto/connode.hpp Mon Apr 28 08:08:12 2008 -0700 1.3 @@ -239,10 +239,7 @@ 1.4 // cast pointer to pointer (different type) 1.5 class CastPPNode: public ConstraintCastNode { 1.6 public: 1.7 - CastPPNode (Node *n, const Type *t ): ConstraintCastNode(n, t) { 1.8 - // Only CastPP is safe. CastII can cause optimizer loops. 1.9 - init_flags(Flag_is_dead_loop_safe); 1.10 - } 1.11 + CastPPNode (Node *n, const Type *t ): ConstraintCastNode(n, t) {} 1.12 virtual int Opcode() const; 1.13 virtual uint ideal_reg() const { return Op_RegP; } 1.14 virtual Node *Ideal_DU_postCCP( PhaseCCP * ); 1.15 @@ -254,10 +251,10 @@ 1.16 public: 1.17 CheckCastPPNode( Node *c, Node *n, const Type *t ) : TypeNode(t,2) { 1.18 init_class_id(Class_CheckCastPP); 1.19 - init_flags(Flag_is_dead_loop_safe); 1.20 init_req(0, c); 1.21 init_req(1, n); 1.22 } 1.23 + 1.24 virtual Node *Identity( PhaseTransform *phase ); 1.25 virtual const Type *Value( PhaseTransform *phase ) const; 1.26 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 1.27 @@ -282,6 +279,7 @@ 1.28 } 1.29 virtual int Opcode() const; 1.30 virtual Node *Identity( PhaseTransform *phase ); 1.31 + virtual const Type *Value( PhaseTransform *phase ) const; 1.32 virtual uint ideal_reg() const { return Op_RegN; } 1.33 1.34 static Node* encode(PhaseGVN* phase, Node* value); 1.35 @@ -300,7 +298,10 @@ 1.36 } 1.37 virtual int Opcode() const; 1.38 virtual Node *Identity( PhaseTransform *phase ); 1.39 + virtual const Type *Value( PhaseTransform *phase ) const; 1.40 virtual uint ideal_reg() const { return Op_RegP; } 1.41 + 1.42 + static Node* decode(PhaseGVN* phase, Node* value); 1.43 }; 1.44 1.45 //------------------------------Conv2BNode-------------------------------------