Release store in C2 putfield

Aleksey Shipilev aleksey.shipilev at
Wed Sep 3 16:49:14 UTC 2014

Hi Andrew,

On 09/03/2014 06:16 PM, Andrew Haley wrote:
> In Parse::do_put_xxx, I see
>   const MemNode::MemOrd mo =
>     is_vol ?
>     // Volatile fields need releasing stores.
>     MemNode::release :
>     // Non-volatile fields also need releasing stores if they hold an
>     // object reference, because the object reference might point to
>     // a freshly created object.
>     StoreNode::release_if_reference(bt);
> AArch64 doesn't need a release store here: its memory guarantees are
> strong enough that a simple store is sufficient.  But my question is
> not about that, but how to handle it properly.

I can't answer the question you posed, but let me challenge your premise.

Why is a simple store is sufficient here for AArch64? Do the stores
ordered on AArch64 (I thought not)? I thought the "RC" part in "RCsc"
only applies to explicit synchronization instructions.


More information about the hotspot-dev mailing list