< prev index next >

src/share/vm/opto/parse3.cpp

Print this page

        

*** 311,325 **** set_wrote_stable(true); } // Preserve allocation ptr to create precedent edge to it in membar // generated on exit from constructor. ! if (C->eliminate_boxing() && ! adr_type->isa_oopptr() && adr_type->is_oopptr()->is_ptr_to_boxed_value() && ! AllocateNode::Ideal_allocation(obj, &_gvn) != NULL) { set_alloc_with_final(obj); } } } //============================================================================= void Parse::do_anewarray() { --- 311,334 ---- set_wrote_stable(true); } // Preserve allocation ptr to create precedent edge to it in membar // generated on exit from constructor. ! if (AllocateNode::Ideal_allocation(obj, &_gvn) != NULL) { ! if (field->is_final()) { set_alloc_with_final(obj); } + if (field->is_stable()) { + set_alloc_with_stable(obj); + } + } + else if (field->is_stable()) { + // stable field doesn't have allocation, set alloc_with_stable as NULL + // because its initialize vlaue is NodeSentinel. If not set NULL, + // next set_alloc_with_stable call might set none-NULL value successfully. + set_alloc_with_stable(NULL); + } } } //============================================================================= void Parse::do_anewarray() {
< prev index next >