-
Bug
-
Resolution: Fixed
-
P4
-
port-stage-ppc-aix
-
None
-
master
-
ppc
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8033050 | 9 | Goetz Lindenmaier | P4 | Closed | Fixed | b04 |
JDK-8045354 | 8u25 | Goetz Lindenmaier | P4 | Resolved | Fixed | b01 |
JDK-8038552 | 8u20 | Goetz Lindenmaier | P4 | Closed | Fixed | b08 |
JDK-8053462 | emb-8u26 | Goetz Lindenmaier | P4 | Resolved | Fixed | b17 |
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
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
- backported by
-
JDK-8045354 PPC64 (part 211): ordering of Independent Reads of Independent Writes
- Resolved
-
JDK-8053462 PPC64 (part 211): ordering of Independent Reads of Independent Writes
- Resolved
-
JDK-8033050 PPC64 (part 211): ordering of Independent Reads of Independent Writes
- Closed
-
JDK-8038552 PPC64 (part 211): ordering of Independent Reads of Independent Writes
- Closed
- blocks
-
JDK-8032366 Implement C1 support for IRIW conformance on non-multiple-copy-atomic platforms
- Closed
- relates to
-
JDK-8138894 C1: Support IRIW on weak memory platforms
- Resolved
(1 relates to)