[foreign-jextract] RFR: 8247678: StdLibTest fails to create an empty VaList on Windows

Jorn Vernee jvernee at openjdk.java.net
Tue Jun 16 15:14:35 UTC 2020


Hi,

This patch addresses a test failure in StdLibTest, caused by trying to allocate an empty VaList in the Windows
implementation.

(After some discussion with Maurizio) this is fixed by special casing empty va lists in the implementation.
VaList.Builder.build() now returns a special empty va list constant when the VaList is empty. There's also an added
VaList.empty() method, to directly create an empty VaList.

To implement this I removed the getSegment methods in the VaList implementation classes, and instead rely on
VaList::address for unboxing a VaList. This works better with the spacial case empty VaList. Along with that I moved
some of the shared code for handling VaList in the linkers to SharedUtils.

I added tests for the empty() API to verify that the returned VaList is non-closeable, and also updated StdLibTest to
close the VaLists it creates (it wasn't doing this yet).

Thanks,
Jorn

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

Commit messages:
 - - Add VaList.empty
 - Work around test failures where the test tries to create an empty VaList, by allocating a 1 byte dummy segment in that case.

Changes: https://git.openjdk.java.net/panama-foreign/pull/208/files
 Webrev: https://webrevs.openjdk.java.net/panama-foreign/208/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8247678
  Stats: 281 lines in 8 files changed: 183 ins; 76 del; 22 mod
  Patch: https://git.openjdk.java.net/panama-foreign/pull/208.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/208/head:pull/208

PR: https://git.openjdk.java.net/panama-foreign/pull/208


More information about the panama-dev mailing list