public final class com.oracle.svm.core.genscavenge.ThreadLocalAllocation
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.core.genscavenge.ThreadLocalAllocation
super_class: java.lang.Object
{
private static final com.oracle.svm.core.threadlocal.FastThreadLocalBytes<com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor> regularTLAB;
descriptor: Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes<Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;>;
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
3: invokedynamic getAsInt()Ljava/util/function/IntSupplier;
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:
()I
com/oracle/svm/core/genscavenge/ThreadLocalAllocation.getRegularTLABSize()I (6)
()I
invokestatic com.oracle.svm.core.threadlocal.FastThreadLocalFactory.createBytes:(Ljava/util/function/IntSupplier;)Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
bipush 127
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalBytes.setMaxOffset:(I)Lcom/oracle/svm/core/threadlocal/FastThreadLocal;
checkcast com.oracle.svm.core.threadlocal.FastThreadLocalBytes
putstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.regularTLAB:Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation;
static com.oracle.svm.core.log.Log log();
descriptor: ()Lcom/oracle/svm/core/log/Log;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic com.oracle.svm.core.log.Log.noopLog:()Lcom/oracle/svm/core/log/Log;
areturn
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
org.graalvm.compiler.api.replacements.Fold()
private static int getRegularTLABSize();
descriptor: ()I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
ireturn
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.Platforms(value = {Lorg/graalvm/nativeimage/Platform$HOSTED_ONLY;})
public static org.graalvm.compiler.word.Word getTlabAddress();
descriptor: ()Lorg/graalvm/compiler/word/Word;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.regularTLAB:Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalBytes.getAddress:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.compiler.word.Word
areturn
LocalVariableTable:
Start End Slot Name Signature
private static com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor getTlab(org.graalvm.nativeimage.IsolateThread);
descriptor: (Lorg/graalvm/nativeimage/IsolateThread;)Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.regularTLAB:Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
aload 0
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalBytes.getAddress:(Lorg/graalvm/nativeimage/IsolateThread;)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 vmThread Lorg/graalvm/nativeimage/IsolateThread;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB", callerMustBe = true)
MethodParameters:
Name Flags
vmThread
private static com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor getTlab();
descriptor: ()Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.regularTLAB:Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalBytes.getAddress:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor
areturn
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB", callerMustBe = true)
private static java.lang.Object slowPathNewInstance(org.graalvm.compiler.word.Word);
descriptor: (Lorg/graalvm/compiler/word/Word;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.getObjectHeaderImpl:()Lcom/oracle/svm/core/genscavenge/ObjectHeaderImpl;
aload 0
invokevirtual com.oracle.svm.core.genscavenge.ObjectHeaderImpl.dynamicHubFromObjectHeader:(Lorg/graalvm/word/UnsignedWord;)Lcom/oracle/svm/core/hub/DynamicHub;
astore 1
start local 1 1: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
invokevirtual com.oracle.svm.core.genscavenge.GCImpl.possibleCollectionPrologue:()Lorg/graalvm/word/UnsignedWord;
astore 2
start local 2 2: aload 1
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.slowPathNewInstanceWithoutAllocating:(Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Object;
astore 3
start local 3 3: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
aload 2
invokevirtual com.oracle.svm.core.genscavenge.GCImpl.possibleCollectionEpilogue:(Lorg/graalvm/word/UnsignedWord;)V
4: invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.runSlowPathHooks:()V
5: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 objectHeader Lorg/graalvm/compiler/word/Word;
1 6 1 hub Lcom/oracle/svm/core/hub/DynamicHub;
2 6 2 gcEpoch Lorg/graalvm/word/UnsignedWord;
3 6 3 result Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.svm.core.snippets.SubstrateForeignCallTarget(stubCallingConvention = false)
MethodParameters:
Name Flags
objectHeader
private static void runSlowPathHooks();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=0, locals=0, args_size=0
0: invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.samplePhysicalMemorySize:()V
1: return
LocalVariableTable:
Start End Slot Name Signature
private static java.lang.Object slowPathNewInstanceWithoutAllocating(com.oracle.svm.core.hub.DynamicHub);
descriptor: (Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.disableDeoptTesting:()V
1: ldc "ThreadLocalAllocation.allocateNewInstance"
aload 0
invokestatic com.oracle.svm.core.hub.DynamicHub.toClass:(Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.exitIfAllocationDisallowed:(Ljava/lang/String;Ljava/lang/String;)V
2: invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.maybeCollectOnAllocation:()V
3: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getChunkProvider:()Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.produceAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 1
start local 1 4: aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.allocateInstanceInNewTlab:(Lcom/oracle/svm/core/hub/DynamicHub;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Ljava/lang/Object;
astore 3
5: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.enableDeoptTesting:()V
6: aload 3
areturn
end local 1 7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
8: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.enableDeoptTesting:()V
9: aload 2
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 hub Lcom/oracle/svm/core/hub/DynamicHub;
4 7 1 newTlab Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
Exception table:
from to target type
1 5 7 any
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.RestrictHeapAccess(access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.NO_ALLOCATION:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, reason = "Must not allocate in the implementation of allocation.")
MethodParameters:
Name Flags
hub
private static java.lang.Object slowPathNewArray(org.graalvm.compiler.word.Word, int);
descriptor: (Lorg/graalvm/compiler/word/Word;I)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: iload 1
ifge 2
1: new java.lang.NegativeArraySizeException
dup
invokespecial java.lang.NegativeArraySizeException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.getObjectHeaderImpl:()Lcom/oracle/svm/core/genscavenge/ObjectHeaderImpl;
aload 0
invokevirtual com.oracle.svm.core.genscavenge.ObjectHeaderImpl.dynamicHubFromObjectHeader:(Lorg/graalvm/word/UnsignedWord;)Lcom/oracle/svm/core/hub/DynamicHub;
astore 2
start local 2 3: aload 2
invokevirtual com.oracle.svm.core.hub.DynamicHub.getLayoutEncoding:()I
iload 1
invokestatic com.oracle.svm.core.hub.LayoutEncoding.getArraySize:(II)Lorg/graalvm/word/UnsignedWord;
astore 3
start local 3 4: aload 3
invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getMaximumHeapSize:()Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.UnsignedWord.aboveOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifeq 6
5: new java.lang.OutOfMemoryError
dup
ldc "Array allocation too large."
invokespecial java.lang.OutOfMemoryError.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: com.oracle.svm.core.hub.DynamicHub org.graalvm.word.UnsignedWord
StackMap stack:
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
invokevirtual com.oracle.svm.core.genscavenge.GCImpl.possibleCollectionPrologue:()Lorg/graalvm/word/UnsignedWord;
astore 4
start local 4 7: aload 2
iload 1
aload 3
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.slowPathNewArrayWithoutAllocating:(Lcom/oracle/svm/core/hub/DynamicHub;ILorg/graalvm/word/UnsignedWord;)Ljava/lang/Object;
astore 5
start local 5 8: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
aload 4
invokevirtual com.oracle.svm.core.genscavenge.GCImpl.possibleCollectionEpilogue:(Lorg/graalvm/word/UnsignedWord;)V
9: invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.runSlowPathHooks:()V
10: aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 objectHeader Lorg/graalvm/compiler/word/Word;
0 11 1 length I
3 11 2 hub Lcom/oracle/svm/core/hub/DynamicHub;
4 11 3 size Lorg/graalvm/word/UnsignedWord;
7 11 4 gcEpoch Lorg/graalvm/word/UnsignedWord;
8 11 5 result Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.svm.core.snippets.SubstrateForeignCallTarget(stubCallingConvention = false)
MethodParameters:
Name Flags
objectHeader
length
private static java.lang.Object slowPathNewArrayWithoutAllocating(com.oracle.svm.core.hub.DynamicHub, int, org.graalvm.word.UnsignedWord);
descriptor: (Lcom/oracle/svm/core/hub/DynamicHub;ILorg/graalvm/word/UnsignedWord;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.disableDeoptTesting:()V
1: ldc "Heap.allocateNewArray"
aload 0
invokestatic com.oracle.svm.core.hub.DynamicHub.toClass:(Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.exitIfAllocationDisallowed:(Ljava/lang/String;Ljava/lang/String;)V
2: invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.maybeCollectOnAllocation:()V
3: aload 2
invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getLargeArrayThreshold:()Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.UnsignedWord.aboveOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifeq 8
4: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getChunkProvider:()Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
aload 2
invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.produceUnalignedChunk:(Lorg/graalvm/word/UnsignedWord;)Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
astore 3
start local 3 5: aload 0
iload 1
aload 2
aload 3
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.allocateLargeArrayInNewTlab:(Lcom/oracle/svm/core/hub/DynamicHub;ILorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Ljava/lang/Object;
astore 5
6: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.enableDeoptTesting:()V
7: aload 5
areturn
end local 3 8: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getChunkProvider:()Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.produceAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 3
start local 3 9: aload 0
iload 1
aload 2
aload 3
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.allocateSmallArrayInNewTlab:(Lcom/oracle/svm/core/hub/DynamicHub;ILorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Ljava/lang/Object;
astore 5
10: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.enableDeoptTesting:()V
11: aload 5
areturn
end local 3 12: StackMap locals:
StackMap stack: java.lang.Throwable
astore 4
13: invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.enableDeoptTesting:()V
14: aload 4
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 hub Lcom/oracle/svm/core/hub/DynamicHub;
0 15 1 length I
0 15 2 size Lorg/graalvm/word/UnsignedWord;
5 8 3 newTlabChunk Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
9 12 3 newTlabChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
Exception table:
from to target type
1 6 12 any
8 10 12 any
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.RestrictHeapAccess(access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.NO_ALLOCATION:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, reason = "Must not allocate in the implementation of allocation.")
MethodParameters:
Name Flags
hub
length
size
private static java.lang.Object (com.oracle.svm.core.hub.DynamicHub, com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
descriptor: (Lcom/oracle/svm/core/hub/DynamicHub;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.svm.core.hub.DynamicHub.getLayoutEncoding:()I
invokestatic com.oracle.svm.core.hub.LayoutEncoding.getInstanceSize:(I)Lorg/graalvm/word/UnsignedWord;
astore 2
start local 2 1: aload 2
aload 1
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.allocateRawMemoryInNewTlab:(Lorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
astore 3
start local 3 2: aload 3
aload 0
invokestatic com.oracle.svm.core.hub.DynamicHub.toClass:(Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Class;
iconst_0
iconst_1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.graal.nodes.FormatObjectNode.formatObject:(Lorg/graalvm/word/Pointer;Ljava/lang/Class;ZZZ)Ljava/lang/Object;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 hub Lcom/oracle/svm/core/hub/DynamicHub;
0 3 1 newTlabChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
1 3 2 size Lorg/graalvm/word/UnsignedWord;
2 3 3 memory Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Holds uninitialized memory.")
MethodParameters:
Name Flags
hub
newTlabChunk
private static java.lang.Object (com.oracle.svm.core.hub.DynamicHub, int, org.graalvm.word.UnsignedWord, com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
descriptor: (Lcom/oracle/svm/core/hub/DynamicHub;ILorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
aload 3
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.allocateRawMemoryInNewTlab:(Lorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
astore 4
start local 4 1: aload 4
aload 0
invokestatic com.oracle.svm.core.hub.DynamicHub.toClass:(Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Class;
iload 1
iconst_0
iconst_0
iconst_1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.graal.nodes.FormatArrayNode.formatArray:(Lorg/graalvm/word/Pointer;Ljava/lang/Class;IZZZZ)Ljava/lang/Object;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 hub Lcom/oracle/svm/core/hub/DynamicHub;
0 2 1 length I
0 2 2 size Lorg/graalvm/word/UnsignedWord;
0 2 3 newTlabChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
1 2 4 memory Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Holds uninitialized memory.")
MethodParameters:
Name Flags
hub
length
size
newTlabChunk
private static java.lang.Object (com.oracle.svm.core.hub.DynamicHub, int, org.graalvm.word.UnsignedWord, com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader);
descriptor: (Lcom/oracle/svm/core/hub/DynamicHub;ILorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.getTlab:()Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
astore 4
start local 4 1: aload 3
aload 4
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getUnalignedChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
2: aload 4
aload 3
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setUnalignedChunk:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
3: aload 3
aload 2
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.allocateMemory:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
astore 5
start local 5 4: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 5
aload 5
invokeinterface org.graalvm.word.Pointer.isNonNull:()Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals: com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor org.graalvm.word.Pointer
StackMap stack:
aload 5
aload 0
invokestatic com.oracle.svm.core.hub.DynamicHub.toClass:(Lcom/oracle/svm/core/hub/DynamicHub;)Ljava/lang/Class;
iload 1
iconst_0
iconst_1
iconst_1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.graal.nodes.FormatArrayNode.formatArray:(Lorg/graalvm/word/Pointer;Ljava/lang/Class;IZZZZ)Ljava/lang/Object;
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 hub Lcom/oracle/svm/core/hub/DynamicHub;
0 6 1 length I
0 6 2 size Lorg/graalvm/word/UnsignedWord;
0 6 3 newTlabChunk Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
1 6 4 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
4 6 5 memory Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Holds uninitialized memory, modifies TLAB")
MethodParameters:
Name Flags
hub
length
size
newTlabChunk
private static org.graalvm.word.Pointer (org.graalvm.word.UnsignedWord, com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
descriptor: (Lorg/graalvm/word/UnsignedWord;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.getTlab:()Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
astore 2
start local 2 1: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 2
invokestatic com.oracle.svm.core.graal.snippets.DeoptTester.enabled:()Z
ifne 2
aload 2
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.availableTlabMemory:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)Lorg/graalvm/word/UnsignedWord;
aload 0
invokeinterface org.graalvm.word.UnsignedWord.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 2
new java.lang.AssertionError
dup
ldc "Slowpath allocation was used even though TLAB had sufficient space"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals: com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor
StackMap stack:
aload 2
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.retireCurrentAllocationChunk:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
3: aload 2
aload 1
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.registerNewAllocationChunk:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
4: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 5
aload 0
aload 2
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.availableTlabMemory:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.UnsignedWord.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 5
new java.lang.AssertionError
dup
ldc "Not enough TLAB space for allocation"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
aload 2
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationTop:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.nonNullPointer:(Lorg/graalvm/word/Pointer;)Lorg/graalvm/word/Pointer;
astore 3
start local 3 6: aload 2
aload 3
aload 0
invokeinterface org.graalvm.word.Pointer.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAllocationTop:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/LocationIdentity;)V
7: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 size Lorg/graalvm/word/UnsignedWord;
0 8 1 newTlabChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
1 8 2 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
6 8 3 top Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Returns uninitialized memory, modifies TLAB", callerMustBe = true)
MethodParameters:
Name Flags
size
newTlabChunk
private static org.graalvm.word.UnsignedWord availableTlabMemory(com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor);
descriptor: (Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)Lorg/graalvm/word/UnsignedWord;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationTop:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
astore 1
start local 1 1: aload 0
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_END_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationEnd:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
astore 2
start local 2 2: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 3
aload 1
aload 2
invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: org.graalvm.word.Pointer org.graalvm.word.Pointer
StackMap stack:
aload 1
invokeinterface org.graalvm.word.Pointer.isNull:()Z
ifne 4
aload 2
invokeinterface org.graalvm.word.Pointer.isNull:()Z
ifeq 5
4: StackMap locals:
StackMap stack:
iconst_0
invokestatic org.graalvm.word.WordFactory.unsigned:(I)Lorg/graalvm/word/UnsignedWord;
areturn
5: StackMap locals:
StackMap stack:
aload 2
aload 1
invokeinterface org.graalvm.word.Pointer.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 allocator Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
1 6 1 top Lorg/graalvm/word/Pointer;
2 6 2 end Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB")
MethodParameters:
Name Flags
allocator
static boolean isThreadLocalAllocationSpace(com.oracle.svm.core.genscavenge.Space);
descriptor: (Lcom/oracle/svm/core/genscavenge/Space;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getYoungGeneration:()Lcom/oracle/svm/core/genscavenge/YoungGeneration;
invokevirtual com.oracle.svm.core.genscavenge.YoungGeneration.getEden:()Lcom/oracle/svm/core/genscavenge/Space;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 space Lcom/oracle/svm/core/genscavenge/Space;
MethodParameters:
Name Flags
space
static void disableAndFlushForAllThreads();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=0
0: ldc "ThreadLocalAllocation.disableAndFlushForAllThreads"
invokestatic com.oracle.svm.core.thread.VMOperation.guaranteeInProgress:(Ljava/lang/String;)V
1: getstatic com.oracle.svm.core.SubstrateOptions.MultiThreaded:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 8
2: invokestatic com.oracle.svm.core.thread.VMThreads.firstThread:()Lorg/graalvm/nativeimage/IsolateThread;
astore 0
start local 0 3: goto 6
4: StackMap locals: org.graalvm.nativeimage.IsolateThread
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.disableAndFlushForThread:(Lorg/graalvm/nativeimage/IsolateThread;)V
5: aload 0
invokestatic com.oracle.svm.core.thread.VMThreads.nextThread:(Lorg/graalvm/nativeimage/IsolateThread;)Lorg/graalvm/nativeimage/IsolateThread;
astore 0
StackMap locals:
StackMap stack:
6: aload 0
invokeinterface org.graalvm.nativeimage.IsolateThread.isNonNull:()Z
ifne 4
end local 0 7: goto 9
8: StackMap locals:
StackMap stack:
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.nativeimage.IsolateThread
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.disableAndFlushForThread:(Lorg/graalvm/nativeimage/IsolateThread;)V
9: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
3 7 0 vmThread Lorg/graalvm/nativeimage/IsolateThread;
static void disableAndFlushForThread(org.graalvm.nativeimage.IsolateThread);
descriptor: (Lorg/graalvm/nativeimage/IsolateThread;)V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.getTlab:(Lorg/graalvm/nativeimage/IsolateThread;)Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getYoungGeneration:()Lcom/oracle/svm/core/genscavenge/YoungGeneration;
invokevirtual com.oracle.svm.core.genscavenge.YoungGeneration.getEden:()Lcom/oracle/svm/core/genscavenge/Space;
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.retireToSpace:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;Lcom/oracle/svm/core/genscavenge/Space;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 vmThread Lorg/graalvm/nativeimage/IsolateThread;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB")
MethodParameters:
Name Flags
vmThread
static void tearDown();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=0
0: invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.nativeimage.IsolateThread
astore 0
start local 0 1: getstatic com.oracle.svm.core.SubstrateOptions.MultiThreaded:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 4
2: invokestatic com.oracle.svm.core.thread.VMThreads.firstThreadUnsafe:()Lorg/graalvm/nativeimage/IsolateThread;
astore 0
3: aload 0
invokestatic com.oracle.svm.core.thread.VMThreads.nextThread:(Lorg/graalvm/nativeimage/IsolateThread;)Lorg/graalvm/nativeimage/IsolateThread;
invokeinterface org.graalvm.nativeimage.IsolateThread.isNull:()Z
ldc "Other isolate threads are still active"
invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
4: StackMap locals: org.graalvm.nativeimage.IsolateThread
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.getTlab:(Lorg/graalvm/nativeimage/IsolateThread;)Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.freeHeapChunks:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 6 0 thread Lorg/graalvm/nativeimage/IsolateThread;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
private static void freeHeapChunks(com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor);
descriptor: (Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeAlignedChunkList:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
1: aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getUnalignedChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeUnalignedChunkList:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
tlab
static void suspendInCurrentThread();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.getTlab:()Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.retireCurrentAllocationChunk:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
1: return
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB")
static void resumeInCurrentThread();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.getTlab:()Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.resumeAllocationInCurrentChunk:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
1: return
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB")
static void retireToSpace(com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor, com.oracle.svm.core.genscavenge.Space);
descriptor: (Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;Lcom/oracle/svm/core/genscavenge/Space;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: ldc "Otherwise, we wouldn't be allowed to access the space."
invokestatic com.oracle.svm.core.thread.VMThreads.guaranteeOwnsThreadMutex:(Ljava/lang/String;)V
1: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 2
aload 1
invokevirtual com.oracle.svm.core.genscavenge.Space.isOldSpace:()Z
ifeq 2
new java.lang.AssertionError
dup
ldc "must not be moved to the old gen - otherwise a remembered set would have to be constructed"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.retireCurrentAllocationChunk:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
3: aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 2
start local 2 4: aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getUnalignedChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
astore 3
start local 3 5: aload 0
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAlignedChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
6: aload 0
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setUnalignedChunk:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
7: goto 12
8: StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
StackMap stack:
aload 2
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
astore 4
start local 4 9: aload 2
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
10: aload 1
aload 2
invokevirtual com.oracle.svm.core.genscavenge.Space.appendAlignedHeapChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
11: aload 4
astore 2
end local 4 12: StackMap locals:
StackMap stack:
aload 2
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
ifne 8
13: goto 18
14: StackMap locals:
StackMap stack:
aload 3
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
astore 4
start local 4 15: aload 3
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
16: aload 1
aload 3
invokevirtual com.oracle.svm.core.genscavenge.Space.appendUnalignedHeapChunk:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
17: aload 4
astore 3
end local 4 18: StackMap locals:
StackMap stack:
aload 3
invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNonNull:()Z
ifne 14
19: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
0 20 1 space Lcom/oracle/svm/core/genscavenge/Space;
4 20 2 alignedChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
5 20 3 unalignedChunk Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
9 12 4 next Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
15 18 4 next Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Accesses TLAB")
MethodParameters:
Name Flags
tlab
space
private static void (com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor, com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
descriptor: (Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
1: aload 0
aload 1
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAlignedChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
2: aload 0
invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.resumeAllocationInCurrentChunk:(Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
0 4 1 newChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Modifies TLAB")
MethodParameters:
Name Flags
tlab
newChunk
private static void retireCurrentAllocationChunk(com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor);
descriptor: (Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationTop:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
astore 1
start local 1 1: aload 1
invokeinterface org.graalvm.word.Pointer.isNonNull:()Z
ifeq 8
2: aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 2
start local 2 3: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 4
aload 2
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.isNull:()Z
ifne 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: org.graalvm.word.Pointer com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 5
aload 2
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
aload 0
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_END_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationEnd:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
invokeinterface org.graalvm.word.Pointer.equal:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 2
aload 1
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
6: aload 0
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.word.Pointer
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAllocationTop:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/LocationIdentity;)V
7: aload 0
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.word.Pointer
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_END_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAllocationEnd:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/LocationIdentity;)V
end local 2 8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
1 9 1 allocationTop Lorg/graalvm/word/Pointer;
3 8 2 alignedChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Modifies TLAB")
MethodParameters:
Name Flags
tlab
static void resumeAllocationInCurrentChunk(com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor);
descriptor: (Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 1
aload 0
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationTop:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
invokevirtual org.graalvm.compiler.word.Word.isNull:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.$assertionsDisabled:Z
ifne 2
aload 0
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_END_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAllocationEnd:(Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
invokevirtual org.graalvm.compiler.word.Word.isNull:()Z
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.getAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 1
start local 1 3: aload 1
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
ifeq 7
4: aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_TOP_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAllocationTop:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/LocationIdentity;)V
5: aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
getstatic com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.TLAB_END_IDENTITY:Lorg/graalvm/word/LocationIdentity;
invokeinterface com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor.setAllocationEnd:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/LocationIdentity;)V
6: aload 1
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.word.Pointer
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
7: StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 tlab Lcom/oracle/svm/core/genscavenge/ThreadLocalAllocation$Descriptor;
3 8 1 alignedChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Modifies TLAB.")
MethodParameters:
Name Flags
tlab
}
SourceFile: "ThreadLocalAllocation.java"
NestMembers:
com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor
InnerClasses:
public final Access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access of com.oracle.svm.core.annotate.RestrictHeapAccess
public abstract AlignedHeader = com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader of com.oracle.svm.core.genscavenge.AlignedHeapChunk
public abstract Header = com.oracle.svm.core.genscavenge.HeapChunk$Header of com.oracle.svm.core.genscavenge.HeapChunk
public abstract Descriptor = com.oracle.svm.core.genscavenge.ThreadLocalAllocation$Descriptor of com.oracle.svm.core.genscavenge.ThreadLocalAllocation
public abstract UnalignedHeader = com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader of com.oracle.svm.core.genscavenge.UnalignedHeapChunk
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles