Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

OpenJDK
PowerPC/AIX - Port
Endgame

{goetz.lindenmaier,volker.simonis}@sap.com

We're in!

But seriously

1000 mails

biweekly telephon calls

300 changesets (65 reviewed)

70,000 lines of code

The PowerPC/AIX Port Project

State of the PowerPC/AIX Port

Why is this important?

Independent Reads of Independent Writes - IRIW

  thread 1            thread 2         thread 3          thread 4
   a = x               x = 1            y = 1             b = y       
   b = y                                                  a = x    
Forbidden:
a==1 && b==0                                            a==0 && b==1      

IRIW - standard HostSpot barriers

  thread 1            thread 2         thread 3          thread 4
   a = x               x = 1            y = 1             b = y       
   b = y              StoreLoad       StoreLoad           a = x    
Forbidden:

a==1 && b==0                                            a==0 && b==1      

IRIW - PPC solution

  thread 1            thread 2         thread 3          thread 4  
 StoreLoad                                              StoreLoad
   a = x               x = 1            y = 1             b = y       
 StoreLoad                                              StoreLoad
   b = y                                                  a = x    
See also A Tutorial Introduction to the ARM and POWER Relaxed Memory ModelsLuc Maranget, Susmit Sarkar, Peter Sewell

Initialize volatile fields in constructors

public class AtomicInteger {
    private volatile int value;

    public AtomicInteger(int initialValue) {
        value = initialValue;
    }
}

Thread 1:

AtomicInteger a = new AtomicInteger(42);

Thread 2:

if (a != null) return addAndGet(1); // May return 1

Returning "1" is legal Java code.

It will never happen on x86/sparc.

The ppc64 port avoids this, too, by adding an additional barrier.

Who we are - SAP and Java

x86amd64IA64PPC64zSeriesPARISCSparc
Linux
Windows
Solaris
MacOS
HPUX
AIX
AS/400

Java 1.4, 5, 6, 7 (and soon 8)