mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8339686: java/foreign/TestMappedHandshake.java fails with assert(depth < max_critical_stack_depth) failed: can't have more than 10 critical frames
8339780: TestByteBuffer fails on AIX after 8339285 Reviewed-by: alanb, jvernee
This commit is contained in:
parent
0b3f2e64e8
commit
5977888500
7 changed files with 99 additions and 57 deletions
|
@ -27,6 +27,7 @@ package java.nio;
|
|||
|
||||
import jdk.internal.access.JavaNioAccess;
|
||||
import jdk.internal.access.SharedSecrets;
|
||||
import jdk.internal.access.foreign.MappedMemoryUtilsProxy;
|
||||
import jdk.internal.access.foreign.UnmapperProxy;
|
||||
import jdk.internal.foreign.AbstractMemorySegmentImpl;
|
||||
import jdk.internal.foreign.MemorySessionImpl;
|
||||
|
@ -804,6 +805,7 @@ public abstract sealed class Buffer
|
|||
}
|
||||
|
||||
static {
|
||||
|
||||
// setup access to this package in SharedSecrets
|
||||
SharedSecrets.setJavaNioAccess(
|
||||
new JavaNioAccess() {
|
||||
|
@ -886,23 +888,8 @@ public abstract sealed class Buffer
|
|||
}
|
||||
|
||||
@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);
|
||||
public MappedMemoryUtilsProxy mappedMemoryUtils() {
|
||||
return MappedMemoryUtils.PROXY;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -31,6 +31,7 @@ import java.lang.foreign.MemorySegment;
|
|||
import java.lang.ref.Reference;
|
||||
import java.util.Objects;
|
||||
|
||||
import jdk.internal.access.foreign.MappedMemoryUtilsProxy;
|
||||
import jdk.internal.access.foreign.UnmapperProxy;
|
||||
import jdk.internal.misc.ScopedMemoryAccess;
|
||||
import jdk.internal.misc.Unsafe;
|
||||
|
@ -194,7 +195,7 @@ public abstract sealed class MappedByteBuffer
|
|||
if (fd == null) {
|
||||
return true;
|
||||
}
|
||||
return SCOPED_MEMORY_ACCESS.isLoaded(session(), address, isSync, capacity());
|
||||
return SCOPED_MEMORY_ACCESS.isLoaded(session(), MappedMemoryUtils.PROXY, address, isSync, capacity());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -212,7 +213,7 @@ public abstract sealed class MappedByteBuffer
|
|||
return this;
|
||||
}
|
||||
try {
|
||||
SCOPED_MEMORY_ACCESS.load(session(), address, isSync, capacity());
|
||||
SCOPED_MEMORY_ACCESS.load(session(), MappedMemoryUtils.PROXY, address, isSync, capacity());
|
||||
} finally {
|
||||
Reference.reachabilityFence(this);
|
||||
}
|
||||
|
@ -312,7 +313,7 @@ public abstract sealed class MappedByteBuffer
|
|||
if ((address != 0) && (capacity != 0)) {
|
||||
// check inputs
|
||||
Objects.checkFromIndexSize(index, length, capacity);
|
||||
SCOPED_MEMORY_ACCESS.force(session(), fd, address, isSync, index, length);
|
||||
SCOPED_MEMORY_ACCESS.force(session(), MappedMemoryUtils.PROXY, fd, address, isSync, index, length);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@ package java.nio;
|
|||
import java.io.FileDescriptor;
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
|
||||
import jdk.internal.access.foreign.MappedMemoryUtilsProxy;
|
||||
import jdk.internal.misc.Blocker;
|
||||
import jdk.internal.misc.Unsafe;
|
||||
|
||||
|
@ -125,7 +127,6 @@ import jdk.internal.misc.Unsafe;
|
|||
private static native void registerNatives();
|
||||
static {
|
||||
registerNatives();
|
||||
isLoaded0(0, 0, 0);
|
||||
}
|
||||
|
||||
// utility methods
|
||||
|
@ -176,4 +177,26 @@ import jdk.internal.misc.Unsafe;
|
|||
// pageSize must be a power of 2
|
||||
return address & ~(pageSize - 1);
|
||||
}
|
||||
|
||||
static final MappedMemoryUtilsProxy PROXY = new MappedMemoryUtilsProxy() {
|
||||
@Override
|
||||
public boolean isLoaded(long address, boolean isSync, long size) {
|
||||
return MappedMemoryUtils.isLoaded(address, isSync, 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 void force(FileDescriptor fd, long address, boolean isSync, long index, long length) {
|
||||
MappedMemoryUtils.force(fd, address, isSync, index, length);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue