src/share/vm/opto/macro.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/macro.cpp	Fri Jun 20 14:33:58 2008
--- new/src/share/vm/opto/macro.cpp	Fri Jun 20 14:33:57 2008

*** 596,606 **** --- 596,606 ---- assert(field_type != NULL, "field singleton type must be consistent"); } else { field_type = TypeOopPtr::make_from_klass(elem_type->as_klass()); } if (UseCompressedOops) { - field_type = field_type->is_oopptr()->make_narrowoop(); basic_elem_type = T_NARROWOOP; } } else { field_type = Type::get_const_basic_type(basic_elem_type); }
*** 664,677 **** --- 664,679 ---- return false; } if (UseCompressedOops && field_type->isa_narrowoop()) { // Enable "DecodeN(EncodeP(Allocate)) --> Allocate" transformation // to be able scalar replace the allocation. _igvn.set_delay_transform(false); ! field_val = DecodeNNode::decode(&_igvn, field_val); _igvn.set_delay_transform(true); + if (field_val->is_EncodeP()) { ! field_val = field_val->in(1); + } else { + field_val = transform_later(new (C, 2) DecodeNNode(field_val, field_val->bottom_type()->make_ptr())); } + } sfpt->add_req(field_val); } JVMState *jvms = sfpt->jvms(); jvms->set_endoff(sfpt->req()); // Now make a pass over the debug information replacing any references

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