[foreign-memaccess+abi] RFR: 8301801: Implement arena-centric API
    Maurizio Cimadamore 
    mcimadamore at openjdk.org
       
    Tue Feb  7 14:56:36 UTC 2023
    
    
  
On Tue, 7 Feb 2023 14:32:46 GMT, Maurizio Cimadamore <mcimadamore 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/
src/java.base/share/classes/jdk/internal/foreign/NativeMemorySegmentImpl.java line 57:
> 55:     NativeMemorySegmentImpl(long min, long length, boolean readOnly, MemorySessionImpl scope) {
> 56:         super(length, readOnly, scope);
> 57:         this.min = (Unsafe.ADDRESS_SIZE == 4)
Strangely, using the instance method here causes initialization failures when doing stuff like:
Arena.ofAuto().allocate(...)
-------------
PR: https://git.openjdk.org/panama-foreign/pull/781
    
    
More information about the panama-dev
mailing list