RFR(S): 8225169: fix LongDoubleTest on AArch64

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Jun 14 12:35:25 UTC 2019


Looks good - well spotted!

Maurizio

On 14/06/2019 04:33, Nick Gasson wrote:
> Hi,
>
> LongDoubleTest fails on AArch64 when using the direct invoker but 
> passes with the universal invoker.
>
> DirectSignatureShuffler::isDirectBinding accepts vector arguments 
> where the argument size matches the storage size. On AArch64 a `long 
> double' argument is passed as a quad precision IEEE754-2008 floating 
> point number using all 128 bits of a vector register, whereas a 
> `double' argument uses the least significant 64 bits of a vector 
> register. But both are passed using the vector storage class which has 
> size 128 bits.
>
> The direct invoker only has specialisations for `double' so 
> isDirectBinding should only accept vector class arguments that are 
> exactly 64 bits wide.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8225169
> Webrev: http://cr.openjdk.java.net/~ngasson/foreign/8225169/webrev.0/
>
> There's also a trivial unrelated change to LayoutTypeImpl::pointerSize 
> to switch NativeTypes.LittleEndian.SysVABI to AArch64ABI that I missed 
> before.
>
> Tested jtreg jdk_foreign on x86 and AArch64.
>
> Thanks,
> Nick


More information about the panama-dev mailing list