--- old/src/share/vm/opto/parse3.cpp 2015-10-24 22:17:10.832410421 -0700 +++ new/src/share/vm/opto/parse3.cpp 2015-10-24 22:17:10.704410416 -0700 @@ -313,9 +313,8 @@ // 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) { + // can't bind stable with its allocation, only record allocation for final field. + if (field->is_final() && AllocateNode::Ideal_allocation(obj, &_gvn) != NULL) { set_alloc_with_final(obj); } }