[foreign-abi] RFR: JDK-8244601: Cleanup support for upcall handles

Athijegannathan Sundararajan sundar at openjdk.java.net
Thu May 7 13:44:54 UTC 2020

On Thu, 7 May 2020 11:21:15 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> This patch removes the SystemABI::freeUpcallStub routine and, in its place, allows SystemABI::upcallHandle to return
> a *stub segment* which can be explicitly closed by the user.
> I think having one less method in SystemABI is cleaner - but I'm not 100% sure that using a segment as the return type
> is the way to go; I found myself split between returning MemoryAddress and MemorySegment while writing this patch. I
> ultimately went for MemorySegment because I think it makes idiomatic code a tad cleaner (look at StdLibTest).  When
> writing this I also wondered if we couldn't benefit from a separate abstraction for callbacks - something like:
> interface UpcallHandle extends AutoCloseable {
>    MethodHandle handle();
>    MemoryAddress address();
>    void close();
> }
> And then teach SystemABI about this carrier (the translation into a raw address should be relatively painless). But
> then we'd still need to support cases where the function pointer is obtained through another native call (in which case
> the carrier will just be MemoryAddress). So I'm not sure in the end having this additional abstraction will change
> things significantly compared to just having a segment and have the user calling `baseAddress`.  That said, I'm open to
> suggestions if people feel strongly one way or another.

Marked as reviewed by sundar (Committer).


PR: https://git.openjdk.java.net/panama-foreign/pull/154

More information about the panama-dev mailing list