Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8029101

PPC64 (part 211): ordering of Independent Reads of Independent Writes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • port-stage-ppc-aix
    • port-stage-ppc-aix
    • hotspot
    • None
    • master
    • ppc

        Implementation of memory ordering on PPC for volatile/unsafe accesses.
        This supports ordering of "Independent Reads of Independent Writes"
        as tested by VolatileIRIWTest of the torture test suite:

         Example: volatile x=0, y=0
        _________ __________ __________ __________
         | Thread 0 | | Thread 1 | | Thread 2 | | Thread 3 |

           write(x=1) read(x) write(y=1) read(y)
                         read(y) read(x)

         Disallowed: x=1, y=0 y=1, x=0

        Solution: This example requires multiple-copy-atomicity. This is only
        assured by the sync instruction and if it is executed in the thread
        doing the load. Thus we implement volatile read as sync-load-acquire
        and omit the sync/MemBarVolatile after the volatile store, as
        MemBarVolatile happens to be implemented by sync.

        This addresses a similar issue as fix "8012144: multiple SIGSEGVs
        fails on staxf" for taskqueue.hpp.

        Further this change contains a fix that assures that volatile fields
        written in constructors are visible before the reference gets
        published.


        ---------------------------------

        This is preparation for PPC64 integration: http://openjdk.java.net/jeps/175
        This and following ppc64 changes will go into staging repository first and tested there: http://hg.openjdk.java.net/ppc-aix-port/stage/

        http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/file/09f97b967480/ppc_patches/0211_rt-order_reads_of_writes.patch

              goetz Goetz Lindenmaier
              goetz Goetz Lindenmaier
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: