[foreign-abi] RFR: 8253796: Consider making CValueLayout public. [v3]
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Tue Sep 29 17:09:19 UTC 2020
On Tue, 29 Sep 2020 16:47:51 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> Hi,
>>
>> This PR makes CValueLayout a public nested class of CLinker, meant to be extended. To quote the motivation from the JBS
>> issue:
>>> Jextract uses an attribute to attach temporary information to layouts regarding the canonical layout field in CLinker
>>> they correspond to.
>>> But, creating a dynamic constant out of these layouts is a complex process, since we need to recursively filter out
>>> this internal jextract attribute, which requires us to recreate GroupLayouts, SequenceLayouts, FunctionDescriptors, and
>>> ValueLayouts. It would be easier if we could extend CValueLayout with a custom jextract layout class, which has an
>>> extract field to indicate which CLinker constant they correspond to. In that case e.g. SourceConstantHelper can cast to
>>> this custom class and retrieve this extra field, removing the need to use attributes, and the difficulties associated
>>> with them.
>>
>> Thanks,
>> Jorn
>
> Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:
>
> Move CValueLayout factories to PlatformLayouts
Good moves - I missed the fact that exposing factories was not super desirable. Added some minor comments around the
javadoc
src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java line 710:
> 708:
> 709: /**
> 710: * Subclass of ValueLayout that contains information needed when linking
Use `@link` ?
src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java line 715:
> 713: class CValueLayout extends ValueLayout {
> 714: /**
> 715: * The kind of CValueLayout. Each kind corresponds to a particular
Use `@link` ?
-------------
Marked as reviewed by mcimadamore (Committer).
PR: https://git.openjdk.java.net/panama-foreign/pull/359
More information about the panama-dev
mailing list