ppc64le changes for jdk8u
Hiroshi H Horii
HORII at jp.ibm.com
Sat Apr 1 10:33:50 UTC 2017
Dear all,
In advance, I apologize that this mail has various mixed contents. I may
need to simplify this mail by dividing to several mails for
ease-of-discussion.
I would like to introduce changes of jdk8u for ppc64le, which Michi and I
created. We are attempting to publish a research document about
performance evaluation of POWER systems based on these changes. Under the
license of OpenJDK, which is based on GPL, we would like to open these
changes.
Some are only for jdk8u. Some are under discussion. Please give your
comments if you are interested in our changes. All of changesets are
generated based on jdk8u152-b01.
1. Enabled ppc64le as the default os.arch
When we built jdk8u on ppc64le with the latest jdk8u repository, the
default os.arch was ppc64. This change set ppc64le as the default value of
os.arch.
http://cr.openjdk.java.net/~horii/jdk8u_support_ppc64le/webrev/
http://cr.openjdk.java.net/~horii/jdk8u_support_ppc64le/hotspot/
http://cr.openjdk.java.net/~horii/jdk8u_support_ppc64le/jdk/
2. backport of CRC32 intrinsics (JDK-8131048, JDK-8164920)
CRC32 intrinsics was implemented and enhanced in jdk9 for ppc64le. We
backported these optimizations to jdk8u. There are few changed in shared
codes. I'm now trying to eliminate them.
http://cr.openjdk.java.net/~horii/8166784/webrev.00/
3. Elimination of memory fences before and after CAS
We are discussing to eliminate memory fences in ParallelGC for
JDK-8154736. We found that the same patterns in CMS (Probably, we will be
able to find them in G1). We provided changes for jdk9 in the previous
discussion with many supports from the community. The below changes are
for jdk8u for ParallelGC and CMS.
http://cr.openjdk.java.net/~horii/jdk8u_gcopt/webrev/
4. Volatile access optimization
In the current implementation, sync is called for each volatile read and
lwsync for each volatile write. With this optimization, isync is called
for each volatile read and lwsync and sync are called for each volatile
write. I'm now writing a proof
to validate these implementation.
http://cr.openjdk.java.net/~horii/jdk8u_volatilereadopt/webrev/
5. Tiered Compilation
Tiered Compilation will be introduced in jdk9 for ppc64le. We backported
Tiered Compilation to jdk8u. The following url includes all of the above
changes because we backported this feature after applying them. Michi is
now working to isolate dependencies in them.
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/webrev/
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/hotspot/webrev/
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/jdk/webrev/
The above includes many changes in shared codes. We just want to add
tiered compilation only for ppc64le. Michi is now minimizing changes in
shared codes. Here is the current status.
http://cr.openjdk.java.net/~horii/c1backport/webrev.01/
6. Some bypath in JCL
We experimentally implemented caches of java.util.Pattern, efficient
String.format for a typical date format, and TreeMap optimization to work
around typical mistakes for not-optimized Java codes. They do not
guarantee specifications, I think.
http://cr.openjdk.java.net/~horii/jdk8u_jcl_cheat/webrev/
I tested 5 and 6 on Ubuntu 16.04 as follows.
$ sudo apt-get install openjdk-8-jdk openjdk-8-dbg mercurial zip bzip2
unzip tar curl libnuma-dev libasound2-dev libxtst-dev libfreetype6-dev
libxrender-dev libcups2-dev libfreetype6-dev -y
$ hg clone http://hg.openjdk.java.net/jdk8u/jdk8u
$ cd jdk8u
$ sh ./get_source.sh
$ curl -o jdk8u.patch
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/webrev/jdk8u-dev.patch
$ patch -p1 < jdk8u.patch
$ cd hotspot
$ curl -o hotspot.patch
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/hotspot/webrev/hotspot.patch
$ patch -p1 < hotspot.patch
$ curl -o jdk1.patch
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/jdk/webrev/jdk.patch
$ curl -o jdk2.patch
http://cr.openjdk.java.net/~horii/jdk8u_jcl_cheat/webrev/jdk.patch
$ patch -p1 < jdk1.patch
$ patch -p1 < jdk2.patch
$ cd ../
$ sh ./configure --with-freetype-include=/usr/include/freetype2/
--with-freetype-lib=/usr/lib/powerpc64le-linux-gnu/
$ make all
Regards,
Hiroshi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/attachments/20170401/342c79f4/attachment-0001.html>
More information about the ppc-aix-port-dev
mailing list