src/share/vm/opto/parse3.cpp

Print this page

        

*** 330,346 **** --- 330,356 ---- if (is_field) { set_wrote_volatile(true); } } + if (is_field) { + set_wrote_fields(true); + } + // If the field is final, the rules of Java say we are in <init> or <clinit>. // Note the presence of writes to final non-static fields, so that we // can insert a memory barrier later on to keep the writes from floating // out of the constructor. // Any method can write a @Stable field; insert memory barriers after those also. if (is_field && (field->is_final() || field->is_stable())) { + if (field->is_final()) { set_wrote_final(true); + } + if (field->is_stable()) { + 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) {