This is a fairly huge backport from Shenandoah's dev line (then jdk9) to shenandoah/jdk8u and from there to aarch64-port/jdk8u-shenandoah. It brings: - bunch of new features (e.g. a separate update-refs phase, parallel and concurrent code cache scanning, etc) - much improved performance (both macro- and micro-performance) - much improved stability (we did test this fairly extensively, and added many regression tests) - much improved usability (e.g. better option handling, much more useful output) - many bugfixes and tests and code improvements - lesser diff compared to upstream All of this has baked considerably in shenandoah/jdk8u for a while, gone through testing and testing and testing (also, testing by interested early adopters) and fixing. I simply transplanted all relevant changesets from shenandoah/jdk8u to aarch64-port/jdk8u-shenandoah with no fuzz or any problems. It's then been tested again by running the hotspot_gc_shenandoah jtreg test group (i.e. the whole Shenandoah jtreg test suite), again without issues. A list of all changesets can be found here: http://cr.openjdk.java.net/~rkennke/aarch64-import-2017-07-24/out.txt <http://cr.openjdk.java.net/%7Erkennke/aarch64-import-2017-07-24/out.txt> The full webrev: http://cr.openjdk.java.net/~rkennke/aarch64-import-2017-07-24/webrev.00/ <http://cr.openjdk.java.net/%7Erkennke/aarch64-import-2017-07-24/webrev.00/> Ok to push?