RFR: 8349146: [REDO] Implement a better allocator for downcalls [v6]
Maurizio Cimadamore
mcimadamore at openjdk.org
Thu May 1 10:24:47 UTC 2025
On Thu, 1 May 2025 09:22:57 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
>> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Improve on comments
>
> src/java.base/share/classes/jdk/internal/foreign/BufferStack.java line 163:
>
>> 161: lock.unlock();
>> 162: }
>> 163: Reference.reachabilityFence(arena);
>
> I'm not sure this is enough to keep the automatic arena alive. If the client lets the Frame arena go out of scope w/o calling close, then `arena` will become unreachable, but some segments created by the Frame arena might still be reachable. To be more correct, I think `Frame` should add a "close action" to its confined arena which keeps the outer automatic arena alive. This can be done, for instance, by passing a close action to the `reinterpret` call:
>
>
> frame = new SlicingAllocator(frameSegment.reinterpret(confinedArena, () -> Reference.reachabilityFence(arena)));
>
>
> The close action is installed in the `MemorySession` object of `confinedArena` -- which is then attached to all segments returned by `Frame` -- thus keeping the automatic arena alive.
(if you agree with this analysis, perhaps adding an extra stress test, or tweaking one of the existing stress tests to check this could also be useful)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24829#discussion_r2070128504
More information about the core-libs-dev
mailing list