Mercurial > hg > truffle
diff src/share/vm/opto/memnode.cpp @ 124:b130b98db9cf
6689060: Escape Analysis does not work with Compressed Oops
Summary: 64-bits VM crashes with -XX:+AggresiveOpts (Escape Analysis + Compressed Oops)
Reviewed-by: never, sgoldman
author | kvn |
---|---|
date | Wed, 23 Apr 2008 11:20:36 -0700 |
parents | d1a5218d7eaf |
children | a76240c8b133 |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.cpp Thu Apr 17 07:16:03 2008 -0700 +++ b/src/share/vm/opto/memnode.cpp Wed Apr 23 11:20:36 2008 -0700 @@ -754,13 +754,12 @@ 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); + return DecodeNNode::decode(&gvn, load); } else #endif { @@ -1841,15 +1840,7 @@ (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(); - } + Node* cp = EncodePNode::encode(&gvn, val); return new (C, 4) StoreNNode(ctl, mem, adr, adr_type, cp); } else #endif