< prev index next >

src/hotspot/share/opto/parse1.cpp

Print this page
rev 56016 : 8229422: Taskqueue: Outdated selection of weak memory model platforms
Reviewed-by:

*** 978,988 **** // than wait for the publication, we simply block the writes here. // Rather than put a barrier on only those writes which are required // to complete, we force all writes to complete. // // 2. On PPC64, also add MemBarRelease for constructors which write ! // volatile fields. As support_IRIW_for_not_multiple_copy_atomic_cpu // is set on PPC64, no sync instruction is issued after volatile // stores. We want to guarantee the same behavior as on platforms // with total store order, although this is not required by the Java // memory model. So as with finals, we add a barrier here. // --- 978,988 ---- // than wait for the publication, we simply block the writes here. // Rather than put a barrier on only those writes which are required // to complete, we force all writes to complete. // // 2. On PPC64, also add MemBarRelease for constructors which write ! // volatile fields. As SUPPORT_IRIW_FOR_NOT_MULTI_COPY_ATOMIC_CPU // is set on PPC64, no sync instruction is issued after volatile // stores. We want to guarantee the same behavior as on platforms // with total store order, although this is not required by the Java // memory model. So as with finals, we add a barrier here. //
*** 994,1005 **** // such unusual early publications. But no barrier is needed on // exceptional returns, since they cannot publish normally. // if (method()->is_initializer() && (wrote_final() || ! PPC64_ONLY(wrote_volatile() ||) ! (AlwaysSafeConstructors && wrote_fields()))) { _exits.insert_mem_bar(Op_MemBarRelease, alloc_with_final()); // If Memory barrier is created for final fields write // and allocation node does not escape the initialize method, // then barrier introduced by allocation node can be removed. --- 994,1009 ---- // such unusual early publications. But no barrier is needed on // exceptional returns, since they cannot publish normally. // if (method()->is_initializer() && (wrote_final() || ! (AlwaysSafeConstructors && wrote_fields()) || ! (SUPPORT_IRIW_FOR_NOT_MULTI_COPY_ATOMIC_CPU && ! IRIW_WITH_RELEASE_VOLATILE_IN_CONSTRUCTOR && ! wrote_volatile()) ! ) ! ) { _exits.insert_mem_bar(Op_MemBarRelease, alloc_with_final()); // If Memory barrier is created for final fields write // and allocation node does not escape the initialize method, // then barrier introduced by allocation node can be removed.
< prev index next >