[foreign-memaccess+abi] RFR: 8274602: Generalize UpcallStub into NativeSymbol [v2]

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Oct 6 11:13:23 UTC 2021


Hi Duncan,
we're in the middle of some housekeeping and, as you noticed, the build 
for jextract is broken.

We'll restore it very shortly.

Thanks
Maurizio

On 06/10/2021 11:44, Duncan Gittins wrote:
> I've just run "git pull" on panama-foreign ("git branch" shows
> foreign-jextract) - it looks like jextract is missing the changes for
> removal of CLinker.UpcallStub:
>
> c:\jdk\panama-foreign\src\jdk.incubator.jextract\share\classes\jdk\internal\clang\libclang\CXCursorVisitor.java:38:
> error: cannot find symbol
>      static CLinker.UpcallStub allocate(CXCursorVisitor fi) {
>                            ^
>
> Am I basing my builds off the right branch if I just want to occasionally
> refresh with Panama changes?
>
> Kind regards
>
> Duncan
>
> On Tue, 5 Oct 2021 at 18:09, Jorn Vernee <jvernee at openjdk.java.net> wrote:
>
>> On Tue, 5 Oct 2021 14:34:55 GMT, Maurizio Cimadamore <
>> mcimadamore at openjdk.org> wrote:
>>
>>>> It might sometimes be useful to define a custom symbol lookup which
>> returns symbols backed by a library that can be unloaded dynamically (e.g.
>> using dlopen).
>>>> We indeed have all the pieces to get there, except that symbnol lookup
>> returns a memory address, which is not a scoped entity.
>>>> To address this, I propose that we add a new sealed interface/final
>> class (`NativeSymbol`) which implements `Addressable` and is used in two
>> places:
>>>> * as a return value for a symbol lookup
>>>> * as a proxy for an upcall stub
>>>>
>>>> In other words, `NativeSymbol` is used to reference to some symbol in
>> some library, where the library can have a given scope. Upcall stubs are
>> just a special case where the upcall symbol is synthetized on the fly by
>> the VM. With this in place, I think we can drop `CLinker.UpcallStub` and
>> just use an "anonymous` NativeSymbol to represent upcall stubs.
>>>> With this, it should be possible to define a dlopen-based lookup such
>> as the one below:
>> https://github.com/sundararajana/panama-jextract-samples/blob/master/dlopen/Dlopen.java
>>>> In a way that is completely *safe* - that is, so that it is not
>> possible for a library to be unloaded while a function is being executed
>> (even when the scope  associated to the native symbol is shared).
>>> Maurizio Cimadamore has updated the pull request with a new target base
>> due to a merge or a rebase. The incremental webrev excludes the unrelated
>> changes brought in by the merge/rebase. The pull request contains ten
>> additional commits since the last revision:
>>>   - Merge branch 'foreign-memaccess+abi' into native_symbol
>>>   - Use NativeSymbol in downcallHandle
>>>   - Merge branch 'foreign-memaccess+abi' into native_symbol
>>>   - Add missing copyright headers
>>>   - Merge branch 'foreign-memaccess+abi' into native_symbol
>>>   - Fix QSort benchmark
>>>   - Add scope check
>>>     Add test
>>>   - Merge branch 'foreign-memaccess+abi' into native_symbol
>>>   - Initial push
>> Marked as reviewed by jvernee (Committer).
>>
>> Latest changes look very good! Thanks.
>>
>> -------------
>>
>> PR: https://git.openjdk.java.net/panama-foreign/pull/589
>>


More information about the panama-dev mailing list