On Mon, 11 Sep 2023 15:37:11 GMT, Jorn Vernee 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