public class jdk.internal.foreign.NativeMemorySegmentImpl extends jdk.internal.foreign.AbstractMemorySegmentImpl
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: jdk.internal.foreign.NativeMemorySegmentImpl
super_class: jdk.internal.foreign.AbstractMemorySegmentImpl
{
public static final jdk.incubator.foreign.MemorySegment EVERYTHING;
descriptor: Ljdk/incubator/foreign/MemorySegment;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final jdk.internal.misc.Unsafe unsafe;
descriptor: Ljdk/internal/misc/Unsafe;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long MAX_MALLOC_ALIGN;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean skipZeroMemory;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
final long min;
descriptor: J
flags: (0x0010) ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=0, args_size=0
0: getstatic jdk.incubator.foreign.MemoryAddress.NULL:Ljdk/incubator/foreign/MemoryAddress;
ldc 9223372036854775807
getstatic jdk.internal.foreign.MemoryScope.DUMMY_CLEANUP_ACTION:Ljava/lang/Runnable;
aconst_null
invokestatic jdk.internal.foreign.NativeMemorySegmentImpl.makeNativeSegmentUnchecked:(Ljdk/incubator/foreign/MemoryAddress;JLjava/lang/Runnable;Ljava/lang/Object;)Ljdk/incubator/foreign/MemorySegment;
1: invokeinterface jdk.incubator.foreign.MemorySegment.share:()Ljdk/incubator/foreign/MemorySegment;
2: iconst_3
invokeinterface jdk.incubator.foreign.MemorySegment.withAccessModes:(I)Ljdk/incubator/foreign/MemorySegment;
3: putstatic jdk.internal.foreign.NativeMemorySegmentImpl.EVERYTHING:Ljdk/incubator/foreign/MemorySegment;
4: invokestatic jdk.internal.misc.Unsafe.getUnsafe:()Ljdk/internal/misc/Unsafe;
putstatic jdk.internal.foreign.NativeMemorySegmentImpl.unsafe:Ljdk/internal/misc/Unsafe;
5: getstatic jdk.internal.misc.Unsafe.ADDRESS_SIZE:I
iconst_4
if_icmpne 6
bipush 8
goto 7
StackMap locals:
StackMap stack:
6: bipush 16
StackMap locals:
StackMap stack: int
7: i2l
putstatic jdk.internal.foreign.NativeMemorySegmentImpl.MAX_MALLOC_ALIGN:J
8: ldc "jdk.internal.foreign.skipZeroMemory"
invokestatic sun.security.action.GetBooleanAction.privilegedGetProperty:(Ljava/lang/String;)Z
putstatic jdk.internal.foreign.NativeMemorySegmentImpl.skipZeroMemory:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(long, long, int, jdk.internal.foreign.MemoryScope);
descriptor: (JJILjdk/internal/foreign/MemoryScope;)V
flags: (0x0000)
Code:
stack=5, locals=7, args_size=5
start local 0 start local 1 start local 3 start local 5 start local 6 0: aload 0
lload 3
iload 5
aload 6
invokespecial jdk.internal.foreign.AbstractMemorySegmentImpl.<init>:(JILjdk/internal/foreign/MemoryScope;)V
1: aload 0
lload 1
putfield jdk.internal.foreign.NativeMemorySegmentImpl.min:J
2: return
end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/internal/foreign/NativeMemorySegmentImpl;
0 3 1 min J
0 3 3 length J
0 3 5 mask I
0 3 6 scope Ljdk/internal/foreign/MemoryScope;
RuntimeVisibleAnnotations:
jdk.internal.vm.annotation.ForceInline()
MethodParameters:
Name Flags
min
length
mask
scope
jdk.internal.foreign.NativeMemorySegmentImpl dup(long, long, int, jdk.internal.foreign.MemoryScope);
descriptor: (JJILjdk/internal/foreign/MemoryScope;)Ljdk/internal/foreign/NativeMemorySegmentImpl;
flags: (0x0000)
Code:
stack=8, locals=7, args_size=5
start local 0 start local 1 start local 3 start local 5 start local 6 0: new jdk.internal.foreign.NativeMemorySegmentImpl
dup
aload 0
getfield jdk.internal.foreign.NativeMemorySegmentImpl.min:J
lload 1
ladd
lload 3
iload 5
aload 6
invokespecial jdk.internal.foreign.NativeMemorySegmentImpl.<init>:(JJILjdk/internal/foreign/MemoryScope;)V
areturn
end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/internal/foreign/NativeMemorySegmentImpl;
0 1 1 offset J
0 1 3 size J
0 1 5 mask I
0 1 6 scope Ljdk/internal/foreign/MemoryScope;
MethodParameters:
Name Flags
offset
size
mask
scope
java.nio.ByteBuffer makeByteBuffer();
descriptor: ()Ljava/nio/ByteBuffer;
flags: (0x0000)
Code:
stack=6, locals=1, args_size=1
start local 0 0: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.nioAccess:Ljdk/internal/access/JavaNioAccess;
aload 0
invokevirtual jdk.internal.foreign.NativeMemorySegmentImpl.min:()J
aload 0
getfield jdk.internal.foreign.NativeMemorySegmentImpl.length:J
l2i
aconst_null
aload 0
invokeinterface jdk.internal.access.JavaNioAccess.newDirectByteBuffer:(JILjava/lang/Object;Ljdk/internal/access/foreign/MemorySegmentProxy;)Ljava/nio/ByteBuffer;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/internal/foreign/NativeMemorySegmentImpl;
long min();
descriptor: ()J
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield jdk.internal.foreign.NativeMemorySegmentImpl.min:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/internal/foreign/NativeMemorySegmentImpl;
java.lang.Object base();
descriptor: ()Ljava/lang/Object;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/internal/foreign/NativeMemorySegmentImpl;
public static jdk.incubator.foreign.MemorySegment makeNativeSegment(long, long);
descriptor: (JJ)Ljdk/incubator/foreign/MemorySegment;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=14, args_size=2
start local 0 start local 2 0: invokestatic jdk.internal.misc.VM.isDirectMemoryPageAligned:()Z
ifeq 2
1: lload 2
getstatic jdk.internal.foreign.NativeMemorySegmentImpl.nioAccess:Ljdk/internal/access/JavaNioAccess;
invokeinterface jdk.internal.access.JavaNioAccess.pageSize:()I
i2l
invokestatic java.lang.Math.max:(JJ)J
lstore 2
2: StackMap locals:
StackMap stack:
lload 2
getstatic jdk.internal.foreign.NativeMemorySegmentImpl.MAX_MALLOC_ALIGN:J
lcmp
ifle 4
3: lload 0
lload 2
lconst_1
lsub
ladd
goto 5
4: StackMap locals:
StackMap stack:
lload 0
5: StackMap locals:
StackMap stack: long
lstore 4
start local 4 6: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.nioAccess:Ljdk/internal/access/JavaNioAccess;
lload 4
lload 0
invokeinterface jdk.internal.access.JavaNioAccess.reserveMemory:(JJ)V
7: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.unsafe:Ljdk/internal/misc/Unsafe;
lload 4
invokevirtual jdk.internal.misc.Unsafe.allocateMemory:(J)J
lstore 6
start local 6 8: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.skipZeroMemory:Z
ifne 10
9: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.unsafe:Ljdk/internal/misc/Unsafe;
lload 6
lload 4
iconst_0
invokevirtual jdk.internal.misc.Unsafe.setMemory:(JJB)V
10: StackMap locals: long long
StackMap stack:
lload 6
lload 2
invokestatic jdk.internal.foreign.Utils.alignUp:(JJ)J
lstore 8
start local 8 11: aconst_null
lload 6
lload 4
lload 0
invokedynamic run(JJJ)Ljava/lang/Runnable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()V
jdk/internal/foreign/NativeMemorySegmentImpl.lambda$0(JJJ)V (6)
()V
12: aconst_null
13: invokestatic jdk.internal.foreign.MemoryScope.createConfined:(Ljava/lang/Object;Ljava/lang/Runnable;Ljava/lang/ref/Cleaner;)Ljdk/internal/foreign/MemoryScope;
astore 10
start local 10 14: new jdk.internal.foreign.NativeMemorySegmentImpl
dup
lload 6
lload 4
15: lload 4
invokestatic jdk.internal.foreign.NativeMemorySegmentImpl.defaultAccessModes:(J)I
aload 10
16: invokespecial jdk.internal.foreign.NativeMemorySegmentImpl.<init>:(JJILjdk/internal/foreign/MemoryScope;)V
astore 11
start local 11 17: lload 4
lload 0
lcmp
ifeq 20
18: lload 8
lload 6
lsub
lstore 12
start local 12 19: aload 11
lload 12
lload 0
invokeinterface jdk.incubator.foreign.MemorySegment.asSlice:(JJ)Ljdk/incubator/foreign/MemorySegment;
astore 11
end local 12 20: StackMap locals: long jdk.internal.foreign.MemoryScope jdk.incubator.foreign.MemorySegment
StackMap stack:
aload 11
areturn
end local 11 end local 10 end local 8 end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 bytesSize J
0 21 2 alignmentBytes J
6 21 4 alignedSize J
8 21 6 buf J
11 21 8 alignedBuf J
14 21 10 scope Ljdk/internal/foreign/MemoryScope;
17 21 11 segment Ljdk/incubator/foreign/MemorySegment;
19 20 12 delta J
MethodParameters:
Name Flags
bytesSize
alignmentBytes
public static jdk.incubator.foreign.MemorySegment makeNativeSegmentUnchecked(jdk.incubator.foreign.MemoryAddress, long, java.lang.Runnable, java.lang.Object);
descriptor: (Ljdk/incubator/foreign/MemoryAddress;JLjava/lang/Runnable;Ljava/lang/Object;)Ljdk/incubator/foreign/MemorySegment;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=10, locals=5, args_size=4
start local 0 start local 1 start local 3 start local 4 0: new jdk.internal.foreign.NativeMemorySegmentImpl
dup
aload 0
invokeinterface jdk.incubator.foreign.MemoryAddress.toRawLongValue:()J
lload 1
lload 1
invokestatic jdk.internal.foreign.NativeMemorySegmentImpl.defaultAccessModes:(J)I
1: aload 4
aload 3
ifnonnull 2
getstatic jdk.internal.foreign.MemoryScope.DUMMY_CLEANUP_ACTION:Ljava/lang/Runnable;
goto 3
StackMap locals: jdk.incubator.foreign.MemoryAddress long java.lang.Runnable java.lang.Object
StackMap stack: new 0 new 0 long long int java.lang.Object
2: aload 3
StackMap locals: jdk.incubator.foreign.MemoryAddress long java.lang.Runnable java.lang.Object
StackMap stack: new 0 new 0 long long int java.lang.Object java.lang.Runnable
3: aconst_null
invokestatic jdk.internal.foreign.MemoryScope.createConfined:(Ljava/lang/Object;Ljava/lang/Runnable;Ljava/lang/ref/Cleaner;)Ljdk/internal/foreign/MemoryScope;
4: invokespecial jdk.internal.foreign.NativeMemorySegmentImpl.<init>:(JJILjdk/internal/foreign/MemoryScope;)V
areturn
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 min Ljdk/incubator/foreign/MemoryAddress;
0 5 1 bytesSize J
0 5 3 cleanupAction Ljava/lang/Runnable;
0 5 4 ref Ljava/lang/Object;
MethodParameters:
Name Flags
min
bytesSize
cleanupAction
ref
jdk.internal.foreign.AbstractMemorySegmentImpl dup(long, long, int, jdk.internal.foreign.MemoryScope);
descriptor: (JJILjdk/internal/foreign/MemoryScope;)Ljdk/internal/foreign/AbstractMemorySegmentImpl;
flags: (0x1040) ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=7, locals=7, args_size=5
0: aload 0
lload 1
lload 3
iload 5
aload 6
invokevirtual jdk.internal.foreign.NativeMemorySegmentImpl.dup:(JJILjdk/internal/foreign/MemoryScope;)Ljdk/internal/foreign/NativeMemorySegmentImpl;
areturn
LocalVariableTable:
Start End Slot Name Signature
private static void lambda$0(long, long, long);
descriptor: (JJJ)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=5, locals=6, args_size=3
0: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.unsafe:Ljdk/internal/misc/Unsafe;
lload 0
invokevirtual jdk.internal.misc.Unsafe.freeMemory:(J)V
1: getstatic jdk.internal.foreign.NativeMemorySegmentImpl.nioAccess:Ljdk/internal/access/JavaNioAccess;
lload 2
lload 4
invokeinterface jdk.internal.access.JavaNioAccess.unreserveMemory:(JJ)V
2: return
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "NativeMemorySegmentImpl.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles