src/share/vm/opto/memnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6689060 Cdiff src/share/vm/opto/memnode.cpp
src/share/vm/opto/memnode.cpp
Print this page
*** 752,768 ****
#ifdef _LP64
if (adr->bottom_type()->is_narrow()) {
const TypeNarrowOop* narrowtype;
if (rt->isa_narrowoop()) {
narrowtype = rt->is_narrowoop();
- rt = narrowtype->make_oopptr();
} else {
narrowtype = rt->is_oopptr()->make_narrowoop();
}
Node* load = gvn.transform(new (C, 3) LoadNNode(ctl, mem, adr, adr_type, narrowtype));
! return new (C, 2) DecodeNNode(load, rt);
} else
#endif
{
assert(!adr->bottom_type()->is_narrow(), "should have got back a narrow oop");
return new (C, 3) LoadPNode(ctl, mem, adr, adr_type, rt->is_oopptr());
--- 752,767 ----
#ifdef _LP64
if (adr->bottom_type()->is_narrow()) {
const TypeNarrowOop* narrowtype;
if (rt->isa_narrowoop()) {
narrowtype = rt->is_narrowoop();
} else {
narrowtype = rt->is_oopptr()->make_narrowoop();
}
Node* load = gvn.transform(new (C, 3) LoadNNode(ctl, mem, adr, adr_type, narrowtype));
! return DecodeNNode::decode(&gvn, load);
} else
#endif
{
assert(!adr->bottom_type()->is_narrow(), "should have got back a narrow oop");
return new (C, 3) LoadPNode(ctl, mem, adr, adr_type, rt->is_oopptr());
*** 1839,1857 ****
#ifdef _LP64
if (adr->bottom_type()->is_narrow() ||
(UseCompressedOops && val->bottom_type()->isa_klassptr() &&
adr->bottom_type()->isa_rawptr())) {
const TypePtr* type = val->bottom_type()->is_ptr();
! Node* cp;
! if (type->isa_oopptr()) {
! const TypeNarrowOop* etype = type->is_oopptr()->make_narrowoop();
! cp = gvn.transform(new (C, 2) EncodePNode(val, etype));
! } else if (type == TypePtr::NULL_PTR) {
! cp = gvn.transform(new (C, 1) ConNNode(TypeNarrowOop::NULL_PTR));
! } else {
! ShouldNotReachHere();
! }
return new (C, 4) StoreNNode(ctl, mem, adr, adr_type, cp);
} else
#endif
{
return new (C, 4) StorePNode(ctl, mem, adr, adr_type, val);
--- 1838,1848 ----
#ifdef _LP64
if (adr->bottom_type()->is_narrow() ||
(UseCompressedOops && val->bottom_type()->isa_klassptr() &&
adr->bottom_type()->isa_rawptr())) {
const TypePtr* type = val->bottom_type()->is_ptr();
! Node* cp = EncodePNode::encode(&gvn, val);
return new (C, 4) StoreNNode(ctl, mem, adr, adr_type, cp);
} else
#endif
{
return new (C, 4) StorePNode(ctl, mem, adr, adr_type, val);
src/share/vm/opto/memnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File