[foreign] RFR duplicates in named layouts have to be reported as error
Sundararajan Athijegannathan
sundararajan.athijegannathan at oracle.com
Mon Jun 4 02:24:09 UTC 2018
Sorry I was on vacation. The link you provided seems to be the initial
named-layout implementation webrev. Will you please provide the correct
link?
-Sundar
On 28/05/18, 6:04 PM, Maurizio Cimadamore wrote:
> Sorry, wrong webrev link, here's the correct one:
>
> http://cr.openjdk.java.net/~mcimadamore/panama/layout_resolver/
>
> Maurizio
>
>
>
> On 28/05/18 13:32, Maurizio Cimadamore wrote:
>> Here's a stab at the current approach; I started with your patch and
>> tweaked in places.
>>
>> http://cr.openjdk.java.net/~mcimadamore/panama/panama-binder-v3.html
>>
>> I think the result is good; the problems you mention are resolved,
>> and all use cases are supported.
>>
>> Let me know what you think.
>>
>> Maurizio
>>
>>
>> On 28/05/18 11:02, Maurizio Cimadamore wrote:
>>>
>>>
>>> On 28/05/18 09:37, Maurizio Cimadamore wrote:
>>>>
>>>>
>>>> On 28/05/18 07:39, Sundararajan Athijegannathan wrote:
>>>>> Isolated Structs will work if there are no name definitions or
>>>>> references in its layout. If there are Unresolved name references
>>>>> in its layout, then there has to be a 'context' in which the names
>>>>> are defined/resolved. The context cannot be entire Java process as
>>>>> it currently is! Two issues with the current code:
>>>> I agree with all you say. The only thing I'm disagreeing with is
>>>> the fact that the context has to be the @NativeHeader annotation,
>>>> as that suggests an header-centric nature that was never intended
>>>> to be part of the design.
>>>>
>>>> Other, more explicit ways to define the context include an explicit
>>>> annotation which list all the classes where dependent layout can be
>>>> found. I think I'd like something like this better. Example (names
>>>> TBD):
>>>>
>>>> @NativeStruct("[$(b)](a)")
>>>> @Friends(B.class)
>>>> interface A {
>>>> B b();
>>>> }
>>>>
>>>> @NativeStruct("[$(a)](b)")
>>>> @Friends(A.class)
>>>> interface B {
>>>> A a();
>>>> }
>>> Now that I have expressed this more explicitly, another idea emerged
>>> - what if we assumed that, if no annotation is provided, the context
>>> is the outermost class? That will work neutrally with both struct
>>> and header interfaces...
>>>
>>> Maurizio
>>>>
>>>>
>>>> Maurizio
>>>>
>>>>
>>>>
>>>
>>
>
More information about the panama-dev
mailing list