956 if (method()->is_initializer() && |
956 if (method()->is_initializer() && |
957 (wrote_final() || |
957 (wrote_final() || |
958 PPC64_ONLY(wrote_volatile() ||) |
958 PPC64_ONLY(wrote_volatile() ||) |
959 (AlwaysSafeConstructors && wrote_fields()))) { |
959 (AlwaysSafeConstructors && wrote_fields()))) { |
960 _exits.insert_mem_bar(Op_MemBarRelease, alloc_with_final()); |
960 _exits.insert_mem_bar(Op_MemBarRelease, alloc_with_final()); |
961 #ifndef PRODUCT |
|
962 if (PrintOpto && (Verbose || WizardMode)) { |
961 if (PrintOpto && (Verbose || WizardMode)) { |
963 method()->print_name(); |
962 method()->print_name(); |
964 tty->print_cr(" writes finals and needs a memory barrier"); |
963 tty->print_cr(" writes finals and needs a memory barrier"); |
965 } |
964 } |
966 #endif |
|
967 } |
965 } |
968 |
966 |
969 // Any method can write a @Stable field; insert memory barriers after |
967 // Any method can write a @Stable field; insert memory barriers after |
970 // those also. If there is a predecessor allocation node, bind the |
968 // those also. If there is a predecessor allocation node, bind the |
971 // barrier there. |
969 // barrier there. |
972 if (wrote_stable()) { |
970 if (wrote_stable()) { |
973 _exits.insert_mem_bar(Op_MemBarRelease, alloc_with_final()); |
971 _exits.insert_mem_bar(Op_MemBarRelease, alloc_with_final()); |
974 #ifndef PRODUCT |
|
975 if (PrintOpto && (Verbose || WizardMode)) { |
972 if (PrintOpto && (Verbose || WizardMode)) { |
976 method()->print_name(); |
973 method()->print_name(); |
977 tty->print_cr(" writes @Stable and needs a memory barrier"); |
974 tty->print_cr(" writes @Stable and needs a memory barrier"); |
978 } |
975 } |
979 #endif |
|
980 } |
976 } |
981 |
977 |
982 for (MergeMemStream mms(_exits.merged_memory()); mms.next_non_empty(); ) { |
978 for (MergeMemStream mms(_exits.merged_memory()); mms.next_non_empty(); ) { |
983 // transform each slice of the original memphi: |
979 // transform each slice of the original memphi: |
984 mms.set_memory(_gvn.transform(mms.memory())); |
980 mms.set_memory(_gvn.transform(mms.memory())); |