public final class com.oracle.svm.core.genscavenge.ImageHeapWalker
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.core.genscavenge.ImageHeapWalker
super_class: java.lang.Object
{
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> READ_ONLY_PRIMITIVE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> READ_ONLY_REFERENCE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> READ_ONLY_RELOCATABLE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> WRITABLE_PRIMITIVE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> WRITABLE_REFERENCE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> WRITABLE_HUGE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
private static final com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess<com.oracle.svm.core.genscavenge.ImageHeapInfo> READ_ONLY_HUGE_WALKER;
descriptor: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess<Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;>;
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/ImageHeapWalker;
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.ImageHeapWalker.$assertionsDisabled:Z
3: new com.oracle.svm.core.genscavenge.ReadOnlyPrimitiveMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.ReadOnlyPrimitiveMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_PRIMITIVE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
4: new com.oracle.svm.core.genscavenge.ReadOnlyReferenceMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.ReadOnlyReferenceMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_REFERENCE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
5: new com.oracle.svm.core.genscavenge.ReadOnlyRelocatableMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.ReadOnlyRelocatableMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_RELOCATABLE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
6: new com.oracle.svm.core.genscavenge.WritablePrimitiveMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.WritablePrimitiveMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.WRITABLE_PRIMITIVE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
7: new com.oracle.svm.core.genscavenge.WritableReferenceMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.WritableReferenceMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.WRITABLE_REFERENCE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
8: new com.oracle.svm.core.genscavenge.WritableHugeMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.WritableHugeMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.WRITABLE_HUGE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
9: new com.oracle.svm.core.genscavenge.ReadOnlyHugeMemoryWalkerAccess
dup
invokespecial com.oracle.svm.core.genscavenge.ReadOnlyHugeMemoryWalkerAccess.<init>:()V
putstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_HUGE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
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/ImageHeapWalker;
public static boolean walkRegions(com.oracle.svm.core.genscavenge.ImageHeapInfo, com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor);
descriptor: (Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;Lcom/oracle/svm/core/MemoryWalker$ImageHeapRegionVisitor;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_PRIMITIVE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
1: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_REFERENCE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
2: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_RELOCATABLE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
3: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.WRITABLE_PRIMITIVE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
4: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.WRITABLE_REFERENCE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
5: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.WRITABLE_HUGE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
6: aload 1
aload 0
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.READ_ONLY_HUGE_WALKER:Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;
invokeinterface com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor.visitNativeImageHeapRegion:(Ljava/lang/Object;Lcom/oracle/svm/core/MemoryWalker$NativeImageHeapRegionAccess;)Z
ifeq 8
7: iconst_1
ireturn
StackMap locals:
StackMap stack:
8: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 heapInfo Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
0 9 1 visitor Lcom/oracle/svm/core/MemoryWalker$ImageHeapRegionVisitor;
MethodParameters:
Name Flags
heapInfo
visitor
public static boolean walkImageHeapObjects(com.oracle.svm.core.genscavenge.ImageHeapInfo, com.oracle.svm.core.heap.ObjectVisitor);
descriptor: (Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyPrimitiveObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyPrimitiveObject:Ljava/lang/Object;
aload 1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
1: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyReferenceObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyReferenceObject:Ljava/lang/Object;
aload 1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
2: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyRelocatableObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyRelocatableObject:Ljava/lang/Object;
aload 1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
3: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstWritablePrimitiveObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastWritablePrimitiveObject:Ljava/lang/Object;
aload 1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
4: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstWritableReferenceObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastWritableReferenceObject:Ljava/lang/Object;
aload 1
iconst_1
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
5: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstWritableHugeObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastWritableHugeObject:Ljava/lang/Object;
aload 1
iconst_0
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
6: aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyHugeObject:Ljava/lang/Object;
aload 0
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyHugeObject:Ljava/lang/Object;
aload 1
iconst_0
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartition:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
ifeq 8
7: iconst_1
ireturn
StackMap locals:
StackMap stack:
8: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 heapInfo Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
0 9 1 visitor Lcom/oracle/svm/core/heap/ObjectVisitor;
MethodParameters:
Name Flags
heapInfo
visitor
static boolean walkPartition(java.lang.Object, java.lang.Object, com.oracle.svm.core.heap.ObjectVisitor, boolean);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
iload 3
iconst_0
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartitionInline:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;ZZ)Z
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 firstObject Ljava/lang/Object;
0 1 1 lastObject Ljava/lang/Object;
0 1 2 visitor Lcom/oracle/svm/core/heap/ObjectVisitor;
0 1 3 alignedChunks Z
MethodParameters:
Name Flags
firstObject
lastObject
visitor
alignedChunks
static boolean walkPartitionInline(java.lang.Object, java.lang.Object, com.oracle.svm.core.heap.ObjectVisitor, boolean);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;Z)Z
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
iload 3
iconst_1
invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkPartitionInline:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;ZZ)Z
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 firstObject Ljava/lang/Object;
0 1 1 lastObject Ljava/lang/Object;
0 1 2 visitor Lcom/oracle/svm/core/heap/ObjectVisitor;
0 1 3 alignedChunks Z
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.AlwaysInline(value = "GC performance")
MethodParameters:
Name Flags
firstObject
lastObject
visitor
alignedChunks
private static boolean walkPartitionInline(java.lang.Object, java.lang.Object, com.oracle.svm.core.heap.ObjectVisitor, boolean, boolean);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectVisitor;ZZ)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
ifnull 1
aload 1
ifnonnull 4
1: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.ImageHeapWalker.$assertionsDisabled:Z
ifne 3
aload 0
ifnonnull 2
aload 1
ifnull 3
StackMap locals:
StackMap stack:
2: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
4: StackMap locals:
StackMap stack:
aload 0
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
astore 5
start local 5 5: aload 1
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
astore 6
start local 6 6: aload 5
astore 7
start local 7 7: invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.HeapChunk$Header
astore 8
start local 8 8: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.usesImageHeapChunks:()Z
ifeq 17
9: invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
checkcast org.graalvm.word.Pointer
astore 9
start local 9 10: invokestatic com.oracle.svm.core.os.CommittedMemoryProvider.get:()Lcom/oracle/svm/core/os/CommittedMemoryProvider;
invokeinterface com.oracle.svm.core.os.CommittedMemoryProvider.guaranteesHeapPreferredAddressSpaceAlignment:()Z
ifne 12
11: invokestatic org.graalvm.nativeimage.CurrentIsolate.getIsolate:()Lorg/graalvm/nativeimage/Isolate;
invokestatic com.oracle.svm.core.Isolates.getHeapBase:(Lorg/graalvm/nativeimage/Isolate;)Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.word.Pointer
astore 9
12: StackMap locals: java.lang.Object java.lang.Object com.oracle.svm.core.heap.ObjectVisitor int int org.graalvm.word.Pointer org.graalvm.word.Pointer org.graalvm.word.Pointer com.oracle.svm.core.genscavenge.HeapChunk$Header org.graalvm.word.Pointer
StackMap stack:
aload 7
aload 9
invokeinterface org.graalvm.word.Pointer.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
astore 10
start local 10 13: iload 3
ifeq 14
aload 10
invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkAlignment:()Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.util.UnsignedUtils.roundDown:(Lorg/graalvm/word/UnsignedWord;Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
goto 15
14: StackMap locals: org.graalvm.word.Pointer
StackMap stack:
aload 10
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getObjectStartOffset:()Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.Pointer.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
15: StackMap locals:
StackMap stack: org.graalvm.word.UnsignedWord
astore 11
start local 11 16: aload 11
aload 9
invokeinterface org.graalvm.word.UnsignedWord.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
checkcast com.oracle.svm.core.genscavenge.HeapChunk$Header
astore 8
end local 11 end local 10 end local 9 17: StackMap locals:
StackMap stack:
aload 6
astore 9
start local 9 18: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.usesImageHeapChunks:()Z
ifeq 30
19: aload 8
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
astore 10
start local 10 20: aload 6
aload 10
invokeinterface org.graalvm.word.Pointer.aboveThan:(Lorg/graalvm/word/UnsignedWord;)Z
ifeq 30
21: aload 10
iconst_1
invokeinterface org.graalvm.word.Pointer.subtract:(I)Lorg/graalvm/word/Pointer;
astore 9
end local 10 22: goto 30
23: StackMap locals: org.graalvm.word.Pointer
StackMap stack:
aload 7
invokeinterface org.graalvm.word.Pointer.toObject:()Ljava/lang/Object;
ldc Ljava/lang/Object;
invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.convertUnknownValue:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
astore 10
start local 10 24: iload 4
ifeq 27
25: aload 2
aload 10
invokeinterface com.oracle.svm.core.heap.ObjectVisitor.visitObjectInline:(Ljava/lang/Object;)Z
ifne 29
26: iconst_0
ireturn
27: StackMap locals: java.lang.Object
StackMap stack:
aload 2
aload 10
invokeinterface com.oracle.svm.core.heap.ObjectVisitor.visitObject:(Ljava/lang/Object;)Z
ifne 29
28: iconst_0
ireturn
29: StackMap locals:
StackMap stack:
aload 7
invokeinterface org.graalvm.word.Pointer.toObject:()Ljava/lang/Object;
invokestatic com.oracle.svm.core.hub.LayoutEncoding.getObjectEnd:(Ljava/lang/Object;)Lorg/graalvm/word/Pointer;
astore 7
end local 10 30: StackMap locals:
StackMap stack:
aload 7
aload 9
invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 23
31: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.usesImageHeapChunks:()Z
ifeq 36
aload 7
aload 6
invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
ifeq 36
32: aload 8
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
astore 8
33: iload 3
ifeq 34
aload 8
checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStart:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
goto 35
34: StackMap locals:
StackMap stack:
aload 8
checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getObjectStart:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/Pointer;
35: StackMap locals:
StackMap stack: org.graalvm.word.Pointer
astore 7
end local 9 36: StackMap locals:
StackMap stack:
aload 7
aload 6
invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 17
37: iconst_1
ireturn
end local 8 end local 7 end local 6 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 38 0 firstObject Ljava/lang/Object;
0 38 1 lastObject Ljava/lang/Object;
0 38 2 visitor Lcom/oracle/svm/core/heap/ObjectVisitor;
0 38 3 alignedChunks Z
0 38 4 inlineObjectVisit Z
5 38 5 firstPointer Lorg/graalvm/word/Pointer;
6 38 6 lastPointer Lorg/graalvm/word/Pointer;
7 38 7 current Lorg/graalvm/word/Pointer;
8 38 8 currentChunk Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
10 17 9 base Lorg/graalvm/word/Pointer;
13 17 10 offset Lorg/graalvm/word/Pointer;
16 17 11 chunkOffset Lorg/graalvm/word/UnsignedWord;
18 36 9 limit Lorg/graalvm/word/Pointer;
20 22 10 chunkTop Lorg/graalvm/word/Pointer;
24 30 10 currentObject Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.AlwaysInline(value = "GC performance")
MethodParameters:
Name Flags
firstObject
lastObject
visitor
alignedChunks
inlineObjectVisit
static void logPartitionBoundaries(com.oracle.svm.core.log.Log, com.oracle.svm.core.genscavenge.ImageHeapInfo);
descriptor: (Lcom/oracle/svm/core/log/Log;Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;)V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
ldc "ReadOnly Primitives: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyPrimitiveObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
1: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyPrimitiveObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
2: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
3: invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
4: aload 0
ldc "ReadOnly References: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyReferenceObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
5: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyReferenceObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
6: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
7: invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
8: aload 0
ldc "ReadOnly Relocatables: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyRelocatableObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
9: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyRelocatableObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
10: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
11: invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
12: aload 0
ldc "Writable Primitives: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstWritablePrimitiveObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
13: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastWritablePrimitiveObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
14: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
15: invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
16: aload 0
ldc "Writable References: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstWritableReferenceObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
17: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastWritableReferenceObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
18: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
19: invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
20: aload 0
ldc "Writable Huge: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstWritableHugeObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
21: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastWritableHugeObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
22: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
23: invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
24: aload 0
ldc "ReadOnly Huge: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.firstReadOnlyHugeObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " .. "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
25: aload 1
getfield com.oracle.svm.core.genscavenge.ImageHeapInfo.lastReadOnlyHugeObject:Ljava/lang/Object;
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
26: invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
pop
27: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 log Lcom/oracle/svm/core/log/Log;
0 28 1 imageHeapInfo Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
MethodParameters:
Name Flags
log
imageHeapInfo
}
SourceFile: "ImageHeapWalker.java"
InnerClasses:
public abstract ImageHeapRegionVisitor = com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor of com.oracle.svm.core.MemoryWalker
public abstract NativeImageHeapRegionAccess = com.oracle.svm.core.MemoryWalker$NativeImageHeapRegionAccess of com.oracle.svm.core.MemoryWalker
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 UnalignedHeader = com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader of com.oracle.svm.core.genscavenge.UnalignedHeapChunk