RFR: AArch64 -- patch to make volatile reads and stores use ldar/stlr

Andrew Dinn adinn at redhat.com
Mon Apr 20 09:03:40 UTC 2015

The following webrev is submitted for review (n.b. I am not an OpenJDK
committer so the patch does not yet have an associated JIRA).


The patch modifies the AArch64 ad file rules to implement volatile loads
and stores using load acquire (ldar<x>) and store release (stlr<x>)
instructions. The memory barriers normally associated with volatile
loads and stores are elided in these cases.


Just to summarise what is happening here:

The patch employs rule predicates to detect specific sequences of membar
and memory nodes which are unique to volatile loads and stores.

  Two predicates control generation of normal vs acquiring loads and
normal vs releasing stores.

  Three predicates control generation vs elision of memory barriers.

The comments documenting these predicates provides a full explanation of
which node sequences may arise as a result of a volatile load or store,
how they can be detected and what alternative instruction encodings may
be generated.

The patch has successfully passed jcstress on two different AArch64
platforms. It has also successfully run javac and netbeans.


Andrew Dinn
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Matt Parson (USA), Charlie Peters
(USA), Michael O'Neill (Ireland)

More information about the hotspot-dev mailing list