Integrated: 8275063: Implementation of Foreign Function & Memory API (Second incubator)
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Nov 24 16:25:09 UTC 2021
I think this discussion should go either on core-libs or on panama-dev.
build-dev is not the place for it. I'm addding panama-dev - and then
I'll reply from there.
Maurizio
On 24/11/2021 16:15, Ty Young wrote:
> Was this code actually reviewed or even used/tested at all? All "Java"
> ValueLayouts have an 8-bit alignment, even if they are 2-byte, 4-byte,
> or 8-byte in size:
>
>
> https://github.com/openjdk/jdk/blob/cf7adae6333c7446048ef0364737927337631f63/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java#L563
>
>
> https://github.com/openjdk/jdk/blob/cf7adae6333c7446048ef0364737927337631f63/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java#L573
>
>
> https://github.com/openjdk/jdk/blob/cf7adae6333c7446048ef0364737927337631f63/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java#L583
>
>
> https://github.com/openjdk/jdk/blob/cf7adae6333c7446048ef0364737927337631f63/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java#L594
>
>
> https://github.com/openjdk/jdk/blob/cf7adae6333c7446048ef0364737927337631f63/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java#L604
>
>
>
> The doc for ValueLayout says:
>
>
> "The layout constants in this class make implicit alignment and
> byte-ordering assumption: all layout
> constants in this class are byte-aligned"
>
>
> Which is not true in the code itself. All of the docs for the
> constants aren't correct, either. This results in a struct that
> *should* have a byte alignment of 8 actually have 1:
>
>
> GroupLayout layout = MemoryLayout.structLayout(
> ValueLayout.JAVA_INT,
> MemoryLayout.paddingLayout(32),
> ValueLayout.JAVA_LONG);
>
> System.out.println(layout.byteAlignment()); // prints 1!
>
>
> Git blame shows that these issues were introduced a whole 2 months ago
> as part of the "beautiful" and "perfect" API changes:
>
>
> https://github.com/openjdk/panama-foreign/blame/c15cb9c11e03c7552d2143273959acac30969db7/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java#L560
>
>
>
> and no one noticed? There should probably be alignment validation
> checks in place to catch this. The fact that constants are declared at
> the bottom instead of the top probably didn't help in making this
> issue more noticeable.
>
>
> While I'm here, is passing ByteOrder.nativeOrder() to every
> constructor needed?
>
>
> On 11/24/21 5:55 AM, Maurizio Cimadamore wrote:
>> On Tue, 12 Oct 2021 11:16:51 GMT, Maurizio Cimadamore
>> <mcimadamore at openjdk.org> wrote:
>>
>>> This PR contains the API and implementation changes for JEP-419 [1].
>>> A more detailed description of such changes, to avoid repetitions
>>> during the review process, is included as a separate comment.
>>>
>>> [1] - https://openjdk.java.net/jeps/419
>> This pull request has now been integrated.
>>
>> Changeset: 96e36071
>> Author: Maurizio Cimadamore <mcimadamore at openjdk.org>
>> URL:
>> https://git.openjdk.java.net/jdk/commit/96e36071b63b624d56739b014b457ffc48147c4f
>> Stats: 14700 lines in 193 files changed: 6958 ins; 5126 del; 2616
>> mod
>>
>> 8275063: Implementation of Foreign Function & Memory API (Second
>> incubator)
>>
>> Reviewed-by: erikj, psandoz, jvernee, darcy
>>
>> -------------
>>
>> PR: https://git.openjdk.java.net/jdk/pull/5907
More information about the build-dev
mailing list