RFR(S): 8225169: fix LongDoubleTest on AArch64
Nick Gasson
nick.gasson at arm.com
Fri Jun 14 03:33:23 UTC 2019
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