<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I realize that we don’t officially support G1GC for ARM but here’s a crash running<div class="">the test harness using G1GC on a 32-bit ARM server VM in case anyone has</div><div class="">any insights.</div><div class=""><br class=""></div><div class="">Bob.</div><div class=""><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">Begin forwarded message:</div><br class="Apple-interchange-newline"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">From: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Bob Vandette <<a href="mailto:bob.vandette@oracle.com" class="">bob.vandette@oracle.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">Subject: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">Re: Webrev of Oracle ARM & AARCH64 Sources</b><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">Date: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">September 30, 2016 at 9:58:55 AM EDT<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">To: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">David Holmes <<a href="mailto:David.Holmes@oracle.com" class="">David.Holmes@oracle.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">Cc: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><a href="mailto:edward.nevill@gmail.com" class="">edward.nevill@gmail.com</a>, <a href="mailto:aarch32-port-dev@openjdk.java.net" class="">aarch32-port-dev@openjdk.java.net</a>, "<a href="mailto:hotspot-dev@openjdk.java.net" class="">hotspot-dev@openjdk.java.net</a> developers" <<a href="mailto:hotspot-dev@openjdk.java.net" class="">hotspot-dev@openjdk.java.net</a>>, <a href="mailto:aarch64-port-dev@openjdk.java.net" class="">aarch64-port-dev@openjdk.java.net</a><br class=""></span></div><br class=""><div class=""><div class=""><br class=""><blockquote type="cite" class="">On Sep 30, 2016, at 7:23 AM, David Holmes <<a href="mailto:David.Holmes@oracle.com" class="">David.Holmes@oracle.com</a>> wrote:<br class=""><br class="">Hi Ed,<br class=""><br class="">On 30/09/2016 8:32 PM, Edward Nevill wrote:<br class=""><blockquote type="cite" class="">Hi Bob,<br class=""><br class="">On Wed, 2016-09-28 at 10:07 -0400, Bob Vandette wrote:<br class=""><blockquote type="cite" class="">I’m am please to announce that I have completed our internal reviews and can now<br class="">open up the sources to our ARM 32 & 64 bit implementations of JDK9.<br class=""></blockquote><br class="">Great news.<br class=""><br class=""><blockquote type="cite" class=""><br class="">Here is a webrev that includes a patch that can be applied on top of the<br class="">(<a href="http://hg.openjdk.java.net/aarch32-port/jdk9-arm3264/" class="">http://hg.openjdk.java.net/aarch32-port/jdk9-arm3264/</a> ) forest.<br class=""><br class=""> <a href="http://cr.openjdk.java.net/~bobv/arm3264/webrev" class="">http://cr.openjdk.java.net/~bobv/arm3264/webrev</a> <<a href="http://cr.openjdk.java.net/~bobv/arm3264/webrev" class="">http://cr.openjdk.java.net/~bobv/arm3264/webrev</a>><br class=""></blockquote><br class="">I have built this natively on armv7 and aarch64 without problems. In both cases I built the minimal,client,server combination.<br class=""><br class="">I have also tested the server build with JTreg hotspot & langtools.<br class=""><br class="">On aarch64 I got the following results:-<br class=""><br class="">hotspot: Test results: passed: 1,280; failed: 8; error: 43<br class="">langtools: Test results: passed: 3,700; failed: 1; error: 29<br class=""><br class="">This is fairly typical, for example, using the Linaro 1609 build I get<br class=""><br class="">hotspot: Test results: passed: 1,271; failed: 17; error: 43<br class="">langtools: Test results: passed: 3,715; failed: 3; error: 12<br class=""></blockquote><br class="">So most of the "errors" are probably tests that are ignored.<br class=""><br class=""><blockquote type="cite" class="">On armv7 I first of all had to pin the jvm.cfg to use -server as it kept on using the client as I was not running on a 'server class machine' (since my armv7 device is a Samsung Chromebook this is fair enough).<br class=""><br class="">However, I then had problems with the test harness crashing with the error<br class=""><br class=""># Internal Error (synchronizer.cpp:1576), pid=6533, tid=6542<br class=""># guarantee(mid->header()->is_neutral()) failed: invariant<br class=""><br class="">(hs_err here <a href="http://cr.openjdk.java.net/~enevill/aarch32/hs_err_pid6533.log" class="">http://cr.openjdk.java.net/~enevill/aarch32/hs_err_pid6533.log</a>)<br class=""></blockquote><br class="">Strange - that looks like our closed bug:<br class=""><br class=""><a href="https://bugs.openjdk.java.net/browse/JDK-8071540" class="">https://bugs.openjdk.java.net/browse/JDK-8071540</a><br class=""><br class="">which should be fixed. It was a missing memory barrier issue.<br class=""></blockquote><br class="">I checked and this fix was applied but later a newer implementation<br class="">was added. The memory barriers were moved to cas_for_lock_acquire<br class="">with optimized versions for aarch64.<br class=""><br class="">Be aware that G1 support on 32-bit ARM is not fully supported by the GC team.<br class="">It’s experimental. This means that there was an attempt to implement it but it<br class="">has not undergone the same level of testing as other platforms. I’ll forward this<br class="">issue to the GC team.<br class=""><br class="">Bob.<br class=""><br class=""><br class=""><blockquote type="cite" class=""><br class="">Aside: we're going to have to figure out how to deal with currently closed bug reports.<br class=""><br class="">David<br class="">-----<br class=""><br class=""><blockquote type="cite" class="">On a subsequent run the test harness locked up after 85 tests.<br class=""><br class="">It looks like there might be a problem with locks breaking with G1GC. I will keep investigating.<br class=""><br class="">I ran it again using the template interpreter for the test harness and the server for the jdk under test and it ran successfully.<br class=""><br class="">On armv7 I got<br class=""><br class="">hotspot: Test results: passed: 1,202; failed: 11; error: 36<br class="">langtools: Test results: passed: 3,718; failed: 5; error: 8<br class=""><br class="">I also did some limited benchmarking which I am not going to share on a public forum. Lets just say the performance of the server JIT on armv7 was pleasing.<br class=""><br class="">Thanks for all your work getting to this stage. It looks good to push and you should shortly have committeer rights, if you don't get them within a few days ping me and I will give ops a nudge.<br class=""><br class="">All the best,<br class="">Ed.<br class=""><br class=""><br class=""></blockquote></blockquote><br class=""></div></div></blockquote></div><br class=""></body></html>