On Fri, 4 Jun 2021 15:10:18 GMT, Nick Gasson <ngas...@openjdk.org> wrote:

>> macOS on Apple silicon uses slightly different ABI conventions to the
>> standard AArch64 ABI.  The differences are outlined in [1].  In
>> particular in the standard (AAPCS) ABI, variadic arguments may be passed
>> in either registers or on the stack following the normal calling
>> convention.  To handle this, va_list is a struct containing separate
>> pointers for arguments located in integer registers, floating point
>> registers, and on the stack.  Apple's ABI simplifies this by passing all
>> variadic arguments on the stack and the va_list type becomes a simple
>> char* pointer.
>> 
>> This patch adds a new MacOsAArch64 CABI type and MacOsAArch64Linker to
>> represent the new ABI variant on macOS.  StackVaList is based on
>> WinVaList lightly modified to handle the different TypeClasses on
>> AArch64.  The original AArch64Linker is renamed to AapcsLinker and is
>> currently used for all non-Mac platforms.  I think we also need to add a
>> WinAArch64 CABI but I haven't yet been able to test on a Windows system
>> so will do that later.
>> 
>> The macOS ABI also uses a different method of spilling arguments to the
>> stack (the standard ABI pads each argument to a multiple of 8 byte stack
>> slots, but the Mac ABI packs arguments according to their natural
>> alignment).  None of the existing tests exercise this so I'll open a new
>> JBS issue and work on that separately.
>> 
>> Tested jdk_foreign on macOS AArch64, Linux AArch64, and Linux X86_64.
>> 
>> [1] 
>> https://developer.apple.com/documentation/xcode/writing_arm64_code_for_apple_platforms
>
> Nick Gasson has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains ten commits:
> 
>  - Fix build after merge
>  - Merge master
>  - Redundant cast to long
>  - Merge master
>    
>    Change-Id: I49bef0437b4c47bef8bf74d192299d06b25e1555
>    CustomizedGitHooks: yes
>  - Update test/jdk/java/foreign/valist/VaListTest.java
>    
>    Co-authored-by: Jorn Vernee <jornver...@users.noreply.github.com>
>  - No variadic upcalls
>    
>    Change-Id: Ibf91c570c88be2587e9e23240477c4a5cc56b4c5
>    CustomizedGitHooks: yes
>  - Fixes after JEP integratioN
>    
>    Change-Id: Iaa13b3869522c8814c3f7ef4c1eac8e8267657e6
>    CustomizedGitHooks: yes
>  - merge master
>    
>    Change-Id: Ic06fec084099ff2053dd251a255cbbf4a64a59d7
>    CustomizedGitHooks: yes
>  - 8263512: [macos_aarch64] issues with calling va_args functions from 
> invoke_native
>    
>    macOS on Apple silicon uses slightly different ABI conventions to the
>    standard AArch64 ABI.  The differences are outlined in [1].  In
>    particular in the standard (AAPCS) ABI, variadic arguments may be passed
>    in either registers or on the stack following the normal calling
>    convention.  To handle this, va_list is a struct containing separate
>    pointers for arguments located in integer registers, floating point
>    registers, and on the stack.  Apple's ABI simplifies this by passing all
>    variadic arguments on the stack and the va_list type becomes a simple
>    char* pointer.
>    
>    This patch adds a new MacOsAArch64 CABI type and MacOsAArch64Linker to
>    represent the new ABI variant on macOS.  StackVaList is based on
>    WinVaList lightly modified to handle the different TypeClasses on
>    AArch64.  The original AArch64Linker is renamed to AapcsLinker and is
>    currently used for all non-Mac platforms.  I think we also need to add a
>    WinAArch64 CABI but I haven't yet been able to test on a Windows system
>    so will do that later.
>    
>    The macOS ABI also uses a different method of spilling arguments to the
>    stack (the standard ABI pads each argument to a multiple of 8 byte stack
>    slots, but the Mac ABI packs arguments according to their natural
>    alignment).  None of the existing tests exercise this so I'll open a new
>    JBS issue and work on that separately.
>    
>    Tested jdk_foreign on macOS AArch64, Linux AArch64, and Linux X86_64.

Marked as reviewed by jvernee (Reviewer).

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

PR: https://git.openjdk.java.net/jdk/pull/3617

Reply via email to