OpenJDK extension to AArch64 and Windows

David Holmes david.holmes at oracle.com
Wed Jun 24 22:34:19 UTC 2020


Hi Monica,

Are you proposing a new project to introduce this new port into the 
OpenJDK some time in the future?

Thanks,
David
-----

On 25/06/2020 2:40 am, Monica Beckwith wrote:
> Hello OpenJDK community,
> 
> As the project lead here @Microsoft, I am pleased to share that we have been working towards a Windows addition to the OpenJDK AArch64 port. We are very thankful to all that have contributed to the Linux+aarch64 and Windows+x86-64. Both these codebases came to our rescue on numerous occasions.
> 
> Support status: We have successfully ported C2 and can build the server release (cross-compiled environment)
> Test coverage: C2 + ParallelGC (No AOT, JVMCI, ZGC, ShenandoahGC, G1GC)
> Tests and benchmarks covered [1]: JTReg [2], JCStress, jmh-jdk-microbenchmarks, SPEC SERT, SPECJBB2015 [3], SPEC JVM2008, Scimark2, SPEC JBB2005.
> Umbrella Bug ID: https://bugs.openjdk.java.net/browse/JDK-8248238
> Webrevs:
> `Webrev P1`: http://cr.openjdk.java.net/~burban/winarm64_p1_llp64/  &
> `Webrev P2`: http://cr.openjdk.java.net/~burban/winarm64_p2_new-target/
> 
> The first patch `Webrev P1` (patch 1 aka P1 in our tests) helps integrate support for Windows (LLP64) on Linux + AArch64
> The second patch `Webrev P2` (patch 2 aka P2 in our tests) adds the 'windows-aarch64' support in `os_cpu`. We also had to modify shared code, and I am highlighting a few details here:
> 	* In windows_x86 such as the `get_frame_at_stack_banging_point` in `os_windows_x86.cpp`,
> 	* In `os/windows os_windows.cpp` to make it aware of Windows + Arm64
> 	* `os/windows` in `threadCritical_windows.cpp`,
> 	* Windbg support
> 	* `globalDefinitions_visCPP.hpp` in `share/utilities`
> 	* We also added Vectored Exception Handling (VEH) to P2, as it is a requirement on Windows + Arm64 (due to ABI specifications).
> Also, in `Webrev P2`, you will find that we have made some significant changes to `cpu/aarch64` around register usage since on Windows + Arm64, register R18 points to TEB [4]. We have discussed this with Andrew Haley and Andrew Dinn, and they are helping us with a cleaner implementation of the same. Their constant support and guidance have humbled me.
> 
> I'd also like to recognize the great work done by Ludovic Henry (our resident runtime expert) in driving the C2 support and by Bernhard Urban-Forster, (who recently joined our team) in helping expand the coverage to G1 GC.
> 
> As a part of this project, we have also worked on two additional patches:
> 	* Expanding VEH on Windows to x86-64 (patch 3 aka P3 in our tests). Details here: https://bugs.openjdk.java.net/browse/JDK-8247941
> 	* Improvements in the shared cross-platform code on Windows (patch 4 aka P4 in our tests) - We will send out a separate patch soon.
> 
> We welcome any feedback and comments from the community and are looking forward to working together.
> 
> Regards,
> Monica
> 
> [1] https://github.com/microsoft/openjdk-aarch64/blob/master/wkload-status-on-Win%2BArm64.md
> [2] https://github.com/microsoft/openjdk-aarch64/blob/master/JTRegtests.md
> [3] https://github.com/microsoft/openjdk-aarch64/blob/master/SPECJBB2015-test-matrices.md
> [4] https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=vs-2019#integer-registers
> 


More information about the hotspot-runtime-dev mailing list