[foreign] RFR 8217380: LayoutType::ofStruct should try to resolve Struct layout
Jorn Vernee
jbvernee at xs4all.nl
Mon Jan 21 11:11:55 UTC 2019
Ok thanks,
FWIW, I thought it was best to try to do the resolution as early as
possible to avoid having to do it multiple times later on. We need the
carrier type (which has the annotations) to do the resolution, and the
earliest time carrier and layout come together seems to be in
LayoutType.
The other place where we could try and resolve the layout is in Scope,
right before the allocation, since that's when resolution is needed.
After sending the RFR email I have been thinking that we might want to
have some check there either way to see if the type being allocated is
actually complete. e.g.:
if(type.isPartial()) {
throw new IllegalArgumentException("Can not allocate incomplete
type: " + type);
}
However, the `isPartial()` check does not only check if a type is
incomplete. For instance for a pointer; the Address layout isPartial()
method is inherited from Value which delegates to it's `content`, if it
has one, to do the `isPartial()` check [1]. This makes sense if we have
just a Value, but imho Address should override isPartial() to always
return `true`, since we can always allocate a pointer (just maybe not
what it points to).
What do you think?
Jorn
[1] :
http://hg.openjdk.java.net/panama/dev/file/tip/src/java.base/share/classes/java/foreign/layout/Value.java#l100
Maurizio Cimadamore schreef op 2019-01-21 11:52:
> Hi,
> I've been wanting to solve this in the past, but I stumbled upon the
> fact that we could not always ensure 'eager' resolution when calling
> LayoutType.ofStruct. This is something that eventually should be fixed
> - the situations where such resolution cannot happen are always caused
> by the fact that jextract is generating cross-header symbolic
> references - this is another problem that could be addressed by
> switching to a library-per-extraction approach, where then all
> symbolic references will become self-contained.
>
> In the meantime, your idea of adding a 'tryResolve' is a good one;
> I'll do some more tests on my side, to make sure that everything is
> ok, and then I'll approve
>
> Cheers
> Maurizio
>
> On 19/01/2019 15:16, Jorn Vernee wrote:
>> Hi,
>>
>> Please review the following patch.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8217380
>> Webrev:
>> http://cr.openjdk.java.net/~jvernee/panama/webrevs/8217380/webrev.00/
>>
>> Thanks,
>> Jorn
More information about the panama-dev
mailing list