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