[foreign-abi] RFR 8237545: Merge C layout constant classes with SystemABI implementations
Jorn Vernee
jorn.vernee at oracle.com
Tue Jan 21 15:17:06 UTC 2020
Hi,
Thanks for the comments.
Update webrev:
http://cr.openjdk.java.net/~jvernee/panama/webrevs/8237545/webrev.01
- Moved layout constants into a nested Layout interface
- Moved asVarArg(ValueLayout) to SystemABI (as suggested offline)
- Cleaned up some of the import noise
Thanks,
Jorn
On 21/01/2020 14:26, Maurizio Cimadamore wrote:
> Hi Jorn,
> generally looks good - I have one question: since constants are
> defined in both SystemABI and also in the subclasses, one potential
> problem is that, since static constants in Java are inherited, if the
> set of constants should eer diverge - you will start to see e.g. in
> WindowsABI both SystemABI dynamic constants *and* WindowsABI-specific
> constants; while probably this is not an issue right now, I'm
> concerned about the inherent fragility of such a system.
>
> A possible way to avoid this would be to add an indirection - e.g.
> have constants inside an interface SystemABI.Layouts - and then
> WindowsABI.Layouts - and so forth. This way the set of constants would
> be completely disjoint.
>
> Maurizio
>
>
> On 21/01/2020 12:05, Jorn Vernee wrote:
>> Hi,
>>
>> Please review the following patch that merges the internal SystemABI
>> implementations (which were very minimal) with the layout constant
>> classes we already had in the public API, and puts the resulting
>> classes under SystemABI. I've also added (back) some dynamic
>> constants that get initialized based on the platform we are running
>> on (which saw some immediate use in the tests).
>>
>> It is a good place to house any platform-specific code that is still
>> needed in the public API. For instance, should we decide to make
>> layout annotations a part of the public API, we can move the
>> different ArgumentClassImpl enums here as well.
>>
>> Moving the SystemABI implementations into the public space also
>> allows users to check which platform they are running on by checking
>> the value returned by SystemABI::getInstance against one of the
>> implementation types (which we've seen some need for in
>> cross-platform code).
>>
>> As the implementation classes grow, we might want to put them into
>> their own source files as well, and create a public `abi` package for
>> them, but I've held off on that for now.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8237545
>> Webrev:
>> http://cr.openjdk.java.net/~jvernee/panama/webrevs/8237545/webrev.00/
>>
>> Thanks,
>> Jorn
>>
More information about the panama-dev
mailing list