RFR: 8303409: Add Windows AArch64 ABI support to the Foreign Function & Memory API

Jorn Vernee jvernee at openjdk.org
Wed Mar 1 23:21:18 UTC 2023


On Mon, 27 Feb 2023 17:04:28 GMT, Saint Wesonga <duke at openjdk.org> wrote:

> There are 2 primary differences between the Windows ARM64 ABI and the macOS/Linux ARM64 ABI: variadic floating point arguments are passed in general purpose registers on Windows (instead of the vector registers). In addition to this, up to 64 bytes of a struct being passed to a variadic function can be placed in general purpose registers. This happens regardless of the type of struct (HFA or other generic struct). This means that a struct can be split across registers and the stack when invoking a variadic function. The Windows ARM64 ABI conventions are documented at https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions
> 
> For details about the Foreign Function & Memory API, see JEP 434 at https://openjdk.org/jeps/434
> 
> This change is a cherry pick of https://github.com/openjdk/panama-foreign/commit/d379ca1c and https://github.com/openjdk/panama-foreign/commit/08225e4f from https://github.com/openjdk/panama-foreign/pull/754 and includes an additional commit that introduces a VaList implementation for Windows on AArch64.

All still looks good (including the VaList impl, though that is less important now since we plan to remove VaList in 21)

I'm running tier 1-4 before giving a checkmark.

Tests came back green

@swesonga I've filed a new issue here: https://bugs.openjdk.org/browse/JDK-8303409

Please use that issue number in the PR title (the name should already be correct).

-------------

PR: https://git.openjdk.org/jdk/pull/12773Marked as reviewed by jvernee (Reviewer).


More information about the hotspot-compiler-dev mailing list