--- old/src/java.base/share/classes/jdk/internal/access/JavaNioAccess.java 2019-12-09 18:15:15.563742032 +0000 +++ new/src/java.base/share/classes/jdk/internal/access/JavaNioAccess.java 2019-12-09 18:15:15.095733680 +0000 @@ -25,6 +25,8 @@ package jdk.internal.access; +import jdk.internal.access.foreign.MemorySegmentProxy; + import java.nio.Buffer; import java.nio.ByteBuffer; @@ -39,4 +41,34 @@ long getMemoryUsed(); } BufferPool getDirectBufferPool(); + + /** + * Constructs a direct ByteBuffer referring to the block of memory starting + * at the given memory address and extending {@code cap} bytes. + * The {@code ob} parameter is an arbitrary object that is attached + * to the resulting buffer. + * Used by {@code jdk.internal.foreignMemorySegmentImpl}. + */ + ByteBuffer newDirectByteBuffer(long addr, int cap, Object obj, MemorySegmentProxy segment); + + /** + * Constructs an heap ByteBuffer with given backing array, offset, capacity and segment. + * Used by {@code jdk.internal.foreignMemorySegmentImpl}. + */ + ByteBuffer newHeapByteBuffer(byte[] hb, int offset, int capacity, MemorySegmentProxy segment); + + /** + * Used by {@code jdk.internal.foreign.Utils}. + */ + Object getBufferBase(ByteBuffer bb); + + /** + * Used by {@code jdk.internal.foreign.Utils}. + */ + long getBufferAddress(ByteBuffer bb); + + /** + * Used by byte buffer var handle views. + */ + void checkSegment(Buffer buffer); }