mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8243491: Implementation of Foreign-Memory Access API (Second Incubator)
Upstream latest changes of the Foreign-Memory Access API Co-authored-by: Jorn Vernee <jorn.vernee@oracle.com> Co-authored-by: Mandy Chung <mandy.chung@oracle.com> Co-authored-by: Paul Sandoz <paul.sandoz@oracle.com> Co-authored-by: Peter Levart <peter.levart@gmail.com> Reviewed-by: chegar, psandoz
This commit is contained in:
parent
9b94b9d1a1
commit
f3eb44a94d
94 changed files with 7496 additions and 1388 deletions
|
@ -29,10 +29,12 @@ import jdk.internal.HotSpotIntrinsicCandidate;
|
|||
import jdk.internal.access.JavaNioAccess;
|
||||
import jdk.internal.access.SharedSecrets;
|
||||
import jdk.internal.access.foreign.MemorySegmentProxy;
|
||||
import jdk.internal.access.foreign.UnmapperProxy;
|
||||
import jdk.internal.misc.Unsafe;
|
||||
import jdk.internal.misc.VM.BufferPool;
|
||||
import jdk.internal.vm.annotation.ForceInline;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.util.Spliterator;
|
||||
|
||||
/**
|
||||
|
@ -768,6 +770,11 @@ public abstract class Buffer {
|
|||
return new DirectByteBuffer(addr, cap, obj, segment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer newMappedByteBuffer(UnmapperProxy unmapperProxy, long address, int cap, Object obj, MemorySegmentProxy segment) {
|
||||
return new DirectByteBuffer(address, cap, obj, unmapperProxy.fileDescriptor(), unmapperProxy.isSync(), segment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer newHeapByteBuffer(byte[] hb, int offset, int capacity, MemorySegmentProxy segment) {
|
||||
return new HeapByteBuffer(hb, offset, capacity, segment);
|
||||
|
@ -784,8 +791,37 @@ public abstract class Buffer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void checkSegment(Buffer buffer) {
|
||||
buffer.checkSegment();
|
||||
public UnmapperProxy unmapper(ByteBuffer bb) {
|
||||
if (bb instanceof MappedByteBuffer) {
|
||||
return ((MappedByteBuffer)bb).unmapper();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemorySegmentProxy bufferSegment(Buffer buffer) {
|
||||
return buffer.segment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void force(FileDescriptor fd, long address, boolean isSync, long offset, long size) {
|
||||
MappedMemoryUtils.force(fd, address, isSync, offset, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(long address, boolean isSync, long size) {
|
||||
MappedMemoryUtils.load(address, isSync, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unload(long address, boolean isSync, long size) {
|
||||
MappedMemoryUtils.unload(address, isSync, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLoaded(long address, boolean isSync, long size) {
|
||||
return MappedMemoryUtils.isLoaded(address, isSync, size);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue