src/share/vm/opto/connode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/connode.cpp	Thu Jun 19 18:14:54 2008
--- new/src/share/vm/opto/connode.cpp	Thu Jun 19 18:14:53 2008

*** 563,576 **** --- 563,578 ---- } return this; } const Type *DecodeNNode::Value( PhaseTransform *phase ) const { if (phase->type( in(1) ) == TypeNarrowOop::NULL_PTR) { ! return TypePtr::NULL_PTR; } return bottom_type(); + const Type *t = phase->type( in(1) ); ! if (t == Type::TOP) return Type::TOP; + if (t == TypeNarrowOop::NULL_PTR) return TypePtr::NULL_PTR; + + assert(t->isa_narrowoop(), "only narrowoop here"); + return t->is_narrowoop()->make_oopptr(); } Node* DecodeNNode::decode(PhaseTransform* phase, Node* value) { if (value->is_EncodeP()) { // (DecodeN (EncodeP p)) -> p
*** 597,610 **** --- 599,614 ---- } return this; } const Type *EncodePNode::Value( PhaseTransform *phase ) const { if (phase->type( in(1) ) == TypePtr::NULL_PTR) { ! return TypeNarrowOop::NULL_PTR; } return bottom_type(); + const Type *t = phase->type( in(1) ); ! if (t == Type::TOP) return Type::TOP; + if (t == TypePtr::NULL_PTR) return TypeNarrowOop::NULL_PTR; + + assert(t->isa_oopptr(), "only oopptr here"); + return t->is_oopptr()->make_narrowoop(); } Node* EncodePNode::encode(PhaseTransform* phase, Node* value) { if (value->is_DecodeN()) { // (EncodeP (DecodeN p)) -> p

src/share/vm/opto/connode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File