final class com.oracle.svm.core.genscavenge.GreyObjectsWalker
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.core.genscavenge.GreyObjectsWalker
super_class: java.lang.Object
{
private com.oracle.svm.core.genscavenge.Space space;
descriptor: Lcom/oracle/svm/core/genscavenge/Space;
flags: (0x0002) ACC_PRIVATE
private com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader ;
descriptor: Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.word.Pointer alignedTop;
descriptor: Lorg/graalvm/word/Pointer;
flags: (0x0002) ACC_PRIVATE
private com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader ;
descriptor: Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
flags: (0x0002) ACC_PRIVATE
void <init>();
descriptor: ()V
flags: (0x0000)
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/GreyObjectsWalker;
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.Platforms(value = {Lorg/graalvm/nativeimage/Platform$HOSTED_ONLY;})
void setScanStart(com.oracle.svm.core.genscavenge.Space);
descriptor: (Lcom/oracle/svm/core/genscavenge/Space;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.log.Log.noopLog:()Lcom/oracle/svm/core/log/Log;
ldc "[Space.GreyObjectsWalker.setScanStart:"
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
ldc " s: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
invokevirtual com.oracle.svm.core.genscavenge.Space.getName:()Ljava/lang/String;
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
astore 2
start local 2 1: aload 0
aload 1
putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.space:Lcom/oracle/svm/core/genscavenge/Space;
2: aload 1
invokevirtual com.oracle.svm.core.genscavenge.Space.getLastAlignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 3
start local 3 3: aload 0
aload 3
putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
4: aload 2
ldc " alignedHeapChunk: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " isNull: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 3
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
invokevirtual com.oracle.svm.core.log.Log.bool:(Z)Lcom/oracle/svm/core/log/Log;
pop
5: aload 0
aload 3
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
ifeq 6
aload 3
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
goto 7
StackMap locals: com.oracle.svm.core.genscavenge.GreyObjectsWalker com.oracle.svm.core.genscavenge.Space com.oracle.svm.core.log.Log com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
StackMap stack: com.oracle.svm.core.genscavenge.GreyObjectsWalker
6: invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.word.Pointer
StackMap locals: com.oracle.svm.core.genscavenge.GreyObjectsWalker com.oracle.svm.core.genscavenge.Space com.oracle.svm.core.log.Log com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
StackMap stack: com.oracle.svm.core.genscavenge.GreyObjectsWalker org.graalvm.word.Pointer
7: putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedTop:Lorg/graalvm/word/Pointer;
8: aload 2
ldc " alignedTop: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedTop:Lorg/graalvm/word/Pointer;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
pop
9: aload 0
aload 1
invokevirtual com.oracle.svm.core.genscavenge.Space.getLastUnalignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.unalignedHeapChunk:Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
10: aload 2
ldc " unalignedChunkPointer: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.unalignedHeapChunk:Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
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;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/oracle/svm/core/genscavenge/GreyObjectsWalker;
0 12 1 s Lcom/oracle/svm/core/genscavenge/Space;
1 12 2 trace Lcom/oracle/svm/core/log/Log;
3 12 3 aChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
MethodParameters:
Name Flags
s
boolean haveGreyObjects();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.space:Lcom/oracle/svm/core/genscavenge/Space;
invokevirtual com.oracle.svm.core.genscavenge.Space.getLastAlignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.notEqual:(Lorg/graalvm/word/ComparableWord;)Z
ifne 3
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
ifeq 1
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedTop:Lorg/graalvm/word/Pointer;
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.notEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 3
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.unalignedHeapChunk:Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.space:Lcom/oracle/svm/core/genscavenge/Space;
invokevirtual com.oracle.svm.core.genscavenge.Space.getLastUnalignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.notEqual:(Lorg/graalvm/word/ComparableWord;)Z
ifne 3
2: iconst_0
ireturn
StackMap locals:
StackMap stack:
3: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/svm/core/genscavenge/GreyObjectsWalker;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.AlwaysInline(value = "GC performance")
void walkGreyObjects();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: goto 3
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.oracle.svm.core.genscavenge.GreyObjectsWalker.walkAlignedGreyObjects:()V
2: aload 0
invokevirtual com.oracle.svm.core.genscavenge.GreyObjectsWalker.walkUnalignedGreyObjects:()V
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.oracle.svm.core.genscavenge.GreyObjectsWalker.haveGreyObjects:()Z
ifne 1
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/svm/core/genscavenge/GreyObjectsWalker;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.NeverInline(value = "Split the GC into reasonable compilation units")
private void walkAlignedGreyObjects();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
ifeq 3
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedTop:Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.isNull:()Z
ifeq 3
1: aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.space:Lcom/oracle/svm/core/genscavenge/Space;
invokevirtual com.oracle.svm.core.genscavenge.Space.getFirstAlignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 1
start local 1 2: goto 4
end local 1 3: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
astore 1
start local 1 4: StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
StackMap stack:
invokestatic com.oracle.svm.core.genscavenge.GCImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
invokevirtual com.oracle.svm.core.genscavenge.GCImpl.getGreyToBlackObjectVisitor:()Lcom/oracle/svm/core/genscavenge/GreyToBlackObjectVisitor;
astore 2
start local 2 5: aload 1
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
ifeq 13
6: StackMap locals: com.oracle.svm.core.genscavenge.GreyToBlackObjectVisitor
StackMap stack:
aload 1
astore 3
start local 3 7: aload 1
aload 2
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.walkObjectsInline:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
ifne 9
8: invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
9: StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
StackMap stack:
aload 1
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 1
10: aload 1
invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
ifne 6
11: aload 0
aload 3
putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedHeapChunk:Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
12: aload 0
aload 3
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.alignedTop:Lorg/graalvm/word/Pointer;
end local 3 13: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/svm/core/genscavenge/GreyObjectsWalker;
2 3 1 aChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
4 14 1 aChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
5 14 2 visitor Lcom/oracle/svm/core/genscavenge/GreyToBlackObjectVisitor;
7 13 3 lastChunk Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.AlwaysInline(value = "GC performance")
private void walkUnalignedGreyObjects();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.unalignedHeapChunk:Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNull:()Z
ifeq 3
1: aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.space:Lcom/oracle/svm/core/genscavenge/Space;
invokevirtual com.oracle.svm.core.genscavenge.Space.getFirstUnalignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
astore 1
start local 1 2: goto 4
end local 1 3: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.unalignedHeapChunk:Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
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 1
start local 1 4: StackMap locals: com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
StackMap stack:
invokestatic com.oracle.svm.core.genscavenge.GCImpl.getGCImpl:()Lcom/oracle/svm/core/genscavenge/GCImpl;
invokevirtual com.oracle.svm.core.genscavenge.GCImpl.getGreyToBlackObjectVisitor:()Lcom/oracle/svm/core/genscavenge/GreyToBlackObjectVisitor;
astore 2
start local 2 5: aload 1
invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNonNull:()Z
ifeq 12
6: StackMap locals: com.oracle.svm.core.genscavenge.GreyToBlackObjectVisitor
StackMap stack:
aload 1
astore 3
start local 3 7: aload 1
aload 2
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.walkObjectsInline:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
ifne 9
8: invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
9: StackMap locals: com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
StackMap stack:
aload 1
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 1
10: aload 1
invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNonNull:()Z
ifne 6
11: aload 0
aload 3
putfield com.oracle.svm.core.genscavenge.GreyObjectsWalker.unalignedHeapChunk:Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
end local 3 12: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/svm/core/genscavenge/GreyObjectsWalker;
2 3 1 uChunk Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
4 13 1 uChunk Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
5 13 2 visitor Lcom/oracle/svm/core/genscavenge/GreyToBlackObjectVisitor;
7 12 3 lastChunk Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.AlwaysInline(value = "GC performance")
}
SourceFile: "GreyObjectsWalker.java"
InnerClasses:
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