[foreign-memaccess+abi] RFR: 8301801: Implement arena-centric API
Jorn Vernee
jvernee at openjdk.org
Thu Feb 9 23:08:07 UTC 2023
On Thu, 9 Feb 2023 17:42:59 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> This patch implements the API proposal described here:
>>
>> https://cr.openjdk.java.net/~mcimadamore/panama/scoped_arenas.html
>>
>> The main changes are:
>>
>> * Static factories `MemorySegment::allocateNative` are gone;
>> * The static factory `SegmentAllocator::nativeAllocator` is also gone;
>> * `SegmentScope` moved as nested class in `MemorySegment` (e.g. `MemorySegment.Scope`);
>> * Tweak methods accepting `SegmentScope` to accept `Arena` instead;
>> * Simplify `Arena` API, by removing predicates (`isCloseable`/`isAccessibleBy`) and by dropping `whileAlive`;
>> * Change arena factories to use `of` prefix instead of `open` - and rename `auto()` to `ofAuto()`.
>>
>> The API changes are rather straightforward, but they lead to several shallow test and microbenchmark changes, so the number of affected file is quite big (mostly because of the rename `openConfined` -> `ofConfined`).
>>
>> A javadoc of the proposed changes is available here:
>>
>> http://cr.openjdk.java.net/~mcimadamore/panama/scoped_arena_interface_lump_predicates/
>
> test/micro/org/openjdk/bench/java/lang/foreign/StrLenTest.java line 198:
>
>> 196: public MemorySegment allocate(long byteSize, long byteAlignment) {
>> 197: MemorySegment segment = slicing.allocate(byteSize, byteAlignment);
>> 198: return MemorySegment.ofAddress(segment.address(), byteSize, arena);
>
> I don't think the re-wrapping is needed here? The returned slice should already have the same arena, right?
Ah, actually I'm misreading this. This is re-wrapping under the allocator's shorter-lived arena.
-------------
PR: https://git.openjdk.org/panama-foreign/pull/781
More information about the panama-dev
mailing list