[foreign-memaccess] RFR: JDK-8243284: Remove Foreign class

Maurizio Cimadamore mcimadamore at openjdk.java.net
Tue Apr 21 16:36:42 UTC 2020


The Foreign class is currently used for 3 methods:

* withSize, which takes an unchecked address and gives it a size
* asUnconfined, which takes an existing segment and turns it into an unconfined segment
* asMallocSegment, which takes an unchecked address and converts that into a segment which can be closed, and where
  closed is mapped into "free"

This patch replaces all these with this method:

static MemorySegment ofNativeUnsafe(MemoryAddress addr, long bytesSize, Thread owner, AutoCloseable cleanup, Object
attachment)

Which is then moved directly into MemorySegment - so that we can garbage-collect the Foreign class.

I've also made some changes on the JDK property - new name is simply "jdk.foreign" and I now made sure that it cannot
be bypassed with a simple static initializer.

-------------

Commit messages:
 - Remove Foreign, and add new method on MemorySegment to create unsafe native segments.

Changes: https://git.openjdk.java.net/panama-foreign/pull/122/files
 Webrev: https://webrevs.openjdk.java.net/panama-foreign/122/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JDK-JDK-8243284
  Stats: 393 lines in 10 files changed: 132 ins; 241 del; 20 mod
  Patch: https://git.openjdk.java.net/panama-foreign/pull/122.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/122/head:pull/122

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


More information about the panama-dev mailing list