[foreign] RFR: jextract should emit toplevel annotations
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Thu May 31 11:52:36 UTC 2018
Hit send too fast :-)
I've also pushed this.
Thanks for the review
Maurizio
On 31/05/18 12:52, Maurizio Cimadamore wrote:
> Hi,
> I've fixed both comments:
>
> * added a space separator between the header declaration
>
> * fixed support for undefined structs; I also did some cleanup in this
> area as jextract was attempting to generate an interface for the
> undefined struct, which I think was wrong, since there was no
> declaration (we can of course revise this as discussed in a separate
> thread).
>
> Maurizio
>
>
> On 30/05/18 19:32, Henry Jen wrote:
>> Look good to me.
>>
>> Functional wise, I think it’s fine at this point. The big declaration
>> on the top annotation is hard to read without separator though.
>>
>> One potential issue is that, for undefined struct, the layout has a
>> symbolic reference to an Annotation class, which won’t have any
>> layout, is that working?
>>
>> Cheers,
>> Henry
>>
>>
>>> On May 28, 2018, at 11:07 AM, Maurizio Cimadamore
>>> <maurizio.cimadamore at oracle.com> wrote:
>>>
>>> Hi,
>>> this patch fixes jextract so that it generates the toplevel
>>> annotations described in [1] - which are also the one understood by
>>> the binder in the foreign branch.
>>>
>>> I've garbage collected the unused annotations (NativeType, Array and
>>> Offset).
>>>
>>> The general tactic to generate the new layout strings is to parse a
>>> clang type into a Layout API object. Then use the toString method of
>>> the layout to generate the string description.
>>>
>>> There are few subtleties in the code that does the parsing:
>>>
>>> * there are two paths that generate record layouts: one is from
>>> Utils.getLayout, which generates a symbolic reference to the layout
>>> (e.g. $(Foo)). Another from Utils.getRecordLayout, which generates
>>> the full record layout description.
>>>
>>> * getRecordLayout must recursively call getRecordLayout in case of
>>> nested anonymous struct, whose layout is inlined with the enclosing
>>> struct
>>>
>>> * inside getRecordLayout padding is added to the layout, as needed,
>>> so as to respect the offset returned by clang
>>>
>>> Webrev:
>>>
>>> http://cr.openjdk.java.net/~mcimadamore/panama/jextract_toplevel/
>>>
>>> Cheers
>>> Maurizio
>>>
>>> [1] -
>>> http://cr.openjdk.java.net/~mcimadamore/panama/panama-binder-v3.html
>>>
>>>
>
More information about the panama-dev
mailing list