src/share/vm/opto/parse3.cpp
Print this page
@@ -330,17 +330,27 @@
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) {