Hi Monica,

All build system changes must be sent to build-dev for review by the build team, and you are doing quite a lot of build changes. (I'm cc:ing build-dev now.)

I did a quick scan and found some changes that looked odd enough to draw my attention.

I will need some time to fully understand what you are trying to accomplish here, before I can give a full review.

/Magnus


On 2020-06-24 18:40, 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

Reply via email to