Webrev of Oracle ARM & AARCH64 Sources

Bob Vandette bob.vandette at oracle.com
Wed Sep 28 18:46:21 UTC 2016

> On Sep 28, 2016, at 1:55 PM, Volker Simonis <volker.simonis at gmail.com> wrote:
> Hi Bob,
> congratulations! I'm pretty sure this was a pretty huge amount of
> paper and programming work to reach this point :)
> My general question is how is this code contribution supposed to work
> together with the current ARM ports in the OpenJDK. Currently we have
> a full-blown, supported arm64 bit port in the jdk9 main-line
> (contributed and maintained by RedHat). The aarch32 project has a
> full-blown implementation for arm32 for jdk8u contributed by Azul.
I didn’t think the arm32 project had a C2 server VM yet?
> Is your new port intended to live and be maintained alongside these
> already available ports?
At this point we are simply offering to contribute our ARM implementations to the
community and no decisions on consolidation of ports has been decided.

> Where does your port differ from the available ports in terms of
> functionality and performance?
The primary reason for putting the webrev out in the open is to allow for the
review of our implementation by the aarch32 project team.


Our 32-bit ARM port is very mature and has been around for over 8 years.
These sources support several 32-bit ARM architecture versions including
ARMv5, ARMv6 and ARMv7 with VFP hard-float, soft-fp and full soft-float
floating point support.

Both 32 and 64 bit ARM ports support the building of the minimal, client and server 
hotspot VMs.

We also support the compilation of native binaries with thumb2.


Our AARCH64 bit port is fully functional and supports the same three VM combinations.


As you can see from the sources, we designed the ARM ports to share as much of 
the sources for 32 and 64 bit ARM support as possible making it easier to maintain 
and add CPU specific features to hotspot.  This design philosophy is consistent with
our sparc and x86 ports.


I have not done a performance comparison of the existing open ports. 

Note: Some of the Oracle commercial features may not be fully supported on some of the ARM platforms.

> Is Oracle committed to support the new ports?
Oracle is committed to producing 32 & 64 bit ARM binaries for at least the
JDK 9 product life cycle.  We will be producing our ARM binaries from our
closed sources for JDK 9.0.  

> And finally, do you expect to integrate these ports into JDK 9 mainline?
I would like to work with the aarch32 project team towards that goal.


> Thanks a lot and best regards,
> Volker
> On Wed, Sep 28, 2016 at 4:07 PM, Bob Vandette <bob.vandette at oracle.com> wrote:
>> I’m am please to announce that I have completed our internal reviews and can now
>> open up the sources to our ARM 32 & 64 bit implementations of JDK9.
>> Here is a webrev that includes a patch that can be applied on top of the
>> (http://hg.openjdk.java.net/aarch32-port/jdk9-arm3264/ <http://hg.openjdk.java.net/aarch32-port/jdk9-arm3264/>) forest.
>>     http://cr.openjdk.java.net/~bobv/arm3264/webrev <http://cr.openjdk.java.net/~bobv/arm3264/webrev>
>> Notes:
>> 1. Counter to my initial email announcing the open sourcing effort,  the
>> pregenerated interpreter is not included in the provided patch.  AOT is
>> our long term solution for increased performance on Mobile and it was decided
>> that we do not want to support the static interpreter beyond JDK 8.
>> 2. In order to allow building the two different 64-bit ARM sources, I overloaded
>> a new configure option —abi-profile to allow for the selection of the Oracle
>> 64-bit ARM port.  We need a better solution before this support can be
>> integrated into the mainline.  To use the Oracle sources for an aarch64 build,
>> select —abi-profile=arm64.
>> 3. The scripts provided below allows for the creation of the minimal, client and
>> server VMs for the Oracle aarch64 build, however, the jvm.cfg file is not
>> automatically updated during the build.  To run a non server VM, this file
>> will need to be updated.
>> 4. In order to make it easier to keep the new open sources up to date with
>> their closed counterparts in jdk9, I have added a comment in
>> hotspot/src/cpu/arm/vm/vm_version_ext_arm.hpp which contains the mercurial
>> revision that I last merged with.  This will make it easier to produce patches
>> to bring the new open files up to the latest version.
>> /* ARM sources Merged up to hotspot/src/closed changeset 2316:b247a2ea70e4 */
>> Build Scripts:
>> Here are a set of scripts that demonstrate how to build the three ARM
>> configurations.  We typically cross compile our ARM builds so these
>> scripts will have to be adjusted in order to build natively on an ARM system.
>> http://cr.openjdk.java.net/~bobv/arm3264/scripts/ <http://cr.openjdk.java.net/~bobv/arm3264/scripts/>
>>  aarch64.csh   Builds the current open version of aarch64 binaries
>>  arm64.csh     Builds the Oracle aarch64 binaries
>>  arm.csh       Builds 32-bit ARM binaries
>> My next step is to push this changeset into the jdk9-arm3264 forest assuming I
>> achieve committer status for the aarch32 project this week.
>> Bob Vandette

More information about the aarch32-port-dev mailing list