On Mon, 11 Sep 2023 15:37:11 GMT, Jorn Vernee <jver...@openjdk.org> wrote:
>> This patch contains the implementation of the foreign linker & memory API >> JEP for Java 22. The initial patch is composed of commits brought over >> directly from the [panama-foreign >> repo](https://github.com/openjdk/panama-foreign). The main changes found in >> this patch come from the following PRs: >> >> 1. https://github.com/openjdk/panama-foreign/pull/836 Where previous >> iterations supported converting Java strings to and from native strings in >> the UTF-8 encoding, we've extended the supported encoding to all the >> encodings found in the `java.nio.charset.StandardCharsets` class. >> 2. https://github.com/openjdk/panama-foreign/pull/838 We dropped the >> `MemoryLayout::sequenceLayout` factory method which inferred the size of the >> sequence to be `Long.MAX_VALUE`, as this led to confusion among clients. A >> client is now required to explicitly specify the sequence size. >> 3. https://github.com/openjdk/panama-foreign/pull/839 A new API was added: >> `Linker::canonicalLayouts`, which exposes a map containing the >> platform-specific mappings of common C type names to memory layouts. >> 4. https://github.com/openjdk/panama-foreign/pull/840 Memory access >> varhandles, as well as byte offset and slice handles derived from memory >> layouts, now feature an additional 'base offset' coordinate that is added to >> the offset computed by the handle. This allows composing these handles with >> other offset computation strategies that may not be based on the same memory >> layout. This addresses use-cases where clients are working with 'dynamic' >> layouts, whose size might not be known statically, such as variable length >> arrays, or variable size matrices. >> 5. https://github.com/openjdk/panama-foreign/pull/841 Remove this now >> redundant API. Clients can simply use the difference between the base >> address of two memory segments. >> 6. https://github.com/openjdk/panama-foreign/pull/845 Disambiguate uses of >> `SegmentAllocator::allocateArray`, by renaming methods that both allocate + >> initialize memory segments to `allocateFrom`. (see the original PR for the >> problematic case) >> 7. https://github.com/openjdk/panama-foreign/pull/846 Improve the >> documentation for variadic functions. >> 8. https://github.com/openjdk/panama-foreign/pull/849 Several test fixes to >> make sure the `jdk_foreign` tests can pass on 32-bit machines, taking >> linux-x86 as a test bed. >> 9. https://github.com/openjdk/panama-foreign/pull/850 Make the linker API >> required. The `Linker::nativeLinker` method is not longer allowed to throw >> an `UnsupportedO... > > Jorn Vernee has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains 43 commits: > > - 8315917: Passing struct by values seems under specified > > Reviewed-by: mcimadamore > - Merge branch 'master' into JEP22 > - Merge branch 'master' into JEP22 > - add code snippet > - Split long throws clauses in `MemorySegment` javadoc > > Reviewed-by: jvernee > - Add support for sliced allocation > - add name of SysV ABI > - Fix javadoc issues in MemorySegment::copy > > Reviewed-by: jvernee > - remove reference to allocateArray > - PPC linker changes > - ... and 33 more: https://git.openjdk.org/jdk/compare/35bccacb...0e702f06 src/java.base/share/classes/java/lang/foreign/Linker.java line 573: > 571: * The returned method handle will throw an {@link > IllegalArgumentException} if the {@link MemorySegment} > 572: * representing the target address of the foreign function is the > {@link MemorySegment#NULL} address. If an argument > 573: * is a {@link MemorySegment},whose corresponding layout is an > {@linkplain GroupLayout group layout}, the linker might attempt to access the > contents of the segment. As such, one of the exceptions specified by the **Nit:** Suggestion: * is a {@link MemorySegment},whose corresponding layout is a {@linkplain GroupLayout group layout}, the linker might attempt to access the contents of the segment. As such, one of the exceptions specified by the ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/15103#discussion_r1322081045