# HG changeset patch # User kvn # Date 1229551779 28800 # Node ID 6c345e1c5992a773ebf995b5c408ca030ae40e92 # Parent 2494ab195856ea3a31a2e89b0bfe465795a0da93# Parent dd70dd4c91ded3f4b74ffe60526ea2f9c168c901 Merge diff -r 2494ab195856 -r 6c345e1c5992 src/share/vm/opto/compile.cpp --- a/src/share/vm/opto/compile.cpp Mon Dec 15 13:58:57 2008 -0800 +++ b/src/share/vm/opto/compile.cpp Wed Dec 17 14:09:39 2008 -0800 @@ -2192,6 +2192,7 @@ case Op_DecodeN: assert(!n->in(1)->is_EncodeP(), "should be optimized out"); + assert(n->in(0) == NULL, "no control"); break; case Op_EncodeP: { diff -r 2494ab195856 -r 6c345e1c5992 src/share/vm/opto/macro.cpp --- a/src/share/vm/opto/macro.cpp Mon Dec 15 13:58:57 2008 -0800 +++ b/src/share/vm/opto/macro.cpp Wed Dec 17 14:09:39 2008 -0800 @@ -1724,6 +1724,13 @@ if (klass_node == NULL) { Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes()); klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) ); +#ifdef _LP64 + if (UseCompressedOops && klass_node->is_DecodeN()) { + assert(klass_node->in(1)->Opcode() == Op_LoadNKlass, "sanity"); + klass_node->in(1)->init_req(0, ctrl); + } else +#endif + klass_node->init_req(0, ctrl); } Node *proto_node = make_load(ctrl, mem, klass_node, Klass::prototype_header_offset_in_bytes() + sizeof(oopDesc), TypeX_X, TypeX_X->basic_type());