[foreign-abi] RFR: 8248560: Specify the behaviour of the ForeignLinker returned by CSupport::getSystemLinker [v2]
Michael Ennen
mennen at openjdk.java.net
Wed Sep 16 03:21:29 UTC 2020
On Tue, 15 Sep 2020 16:53:38 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> Hi,
>>
>> This patch creates a new class called CLinker, which extends ForeignLinker. The new class documents how linking works
>> in the class's javadoc. This is done in a separate class since the specification is only relevant to linkers that
>> support the C ABI. With the new class there was no more need to have CSupport, so the contents of CSupport has all
>> been move to CLinker.
>> After some offline discussion with Maurizio, we realized that it doesn't make much sense to expose platform specific
>> layout constants, since it is not possible to combine them with a platform specific linker any way, so for a particular
>> platform, there is only one set of layouts that can be used, namely the ones that are dynamically picked based on the
>> current platform. For that reason, all platform specific layouts have instead been moved to an internal PlatformLayouts
>> class. In order for downstream APIs (like jextract) to be able to filter out the ABI attributes from layouts, I've
>> added a String constant to CLinker that is used as a name prefix for all the ABI attribute names, so clients can for
>> instance filter attribute names using `.startsWith(ABI_ATTR_NAME)`. The ForeignLinker::name method has been dropped in
>> favor of an internal enum. The rest of the patch is just mechanical CSupport -> CLinker renames. Thanks, Jorn
>
> Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:
>
> Review comments:
> - remove C_BOOL
> - CLinker javadoc changes
> - rename CLinker::getSystemLinker to CLinker::getInstance()
src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java line 73:
> 71: *
> 72: * <li>If the carrier type is {@code MemoryAddress}, then the corresponding memory layout must be a
> 73: * {@code ValueLayout}, and its bit size must match the platform's address size (see {@link
> MemoryLayouts#ADDRESS}).
super minor grammatical thing, I think "and its bit size" is more correct as "and its' bit size"
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/327
More information about the panama-dev
mailing list