public final class com.oracle.svm.core.genscavenge.PathExhibitor
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.core.genscavenge.PathExhibitor
super_class: java.lang.Object
{
private static final com.oracle.svm.core.genscavenge.PathExhibitor$FrameSlotVisitor frameSlotVisitor;
descriptor: Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameSlotVisitor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor stackFrameVisitor;
descriptor: Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapObjRefVisitor bootImageHeapObjRefVisitor;
descriptor: Lcom/oracle/svm/core/genscavenge/PathExhibitor$BootImageHeapObjRefVisitor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjRefVisitor heapObjRefVisitor;
descriptor: Lcom/oracle/svm/core/genscavenge/PathExhibitor$HeapObjRefVisitor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjectVisitor heapObjectVisitor;
descriptor: Lcom/oracle/svm/core/genscavenge/PathExhibitor$HeapObjectVisitor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.ArrayList<com.oracle.svm.core.genscavenge.PathExhibitor$PathElement> path;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;>;
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/PathExhibitor;
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.PathExhibitor.$assertionsDisabled:Z
3: new com.oracle.svm.core.genscavenge.PathExhibitor$FrameSlotVisitor
dup
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$FrameSlotVisitor.<init>:()V
putstatic com.oracle.svm.core.genscavenge.PathExhibitor.frameSlotVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameSlotVisitor;
4: new com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor
dup
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor.<init>:()V
putstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
5: new com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapObjRefVisitor
dup
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapObjRefVisitor.<init>:()V
putstatic com.oracle.svm.core.genscavenge.PathExhibitor.bootImageHeapObjRefVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$BootImageHeapObjRefVisitor;
6: new com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjRefVisitor
dup
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjRefVisitor.<init>:()V
putstatic com.oracle.svm.core.genscavenge.PathExhibitor.heapObjRefVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$HeapObjRefVisitor;
7: new com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjectVisitor
dup
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjectVisitor.<init>:()V
putstatic com.oracle.svm.core.genscavenge.PathExhibitor.heapObjectVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$HeapObjectVisitor;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
public boolean hasPath();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
if_icmple 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
public com.oracle.svm.core.genscavenge.PathExhibitor$PathElement[] getPath();
descriptor: ()[Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
iconst_0
anewarray com.oracle.svm.core.genscavenge.PathExhibitor$PathElement
invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast com.oracle.svm.core.genscavenge.PathExhibitor$PathElement[]
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
public void findPathToRange(org.graalvm.word.Pointer, org.graalvm.word.Pointer);
descriptor: (Lorg/graalvm/word/Pointer;Lorg/graalvm/word/Pointer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.core.genscavenge.PathExhibitor.$assertionsDisabled:Z
ifne 1
invokestatic com.oracle.svm.core.thread.VMOperation.isInProgressAtSafepoint:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.graalvm.word.Pointer.isNull:()Z
ifne 2
aload 1
aload 2
invokeinterface org.graalvm.word.Pointer.aboveThan:(Lorg/graalvm/word/UnsignedWord;)Z
ifeq 3
2: StackMap locals:
StackMap stack:
return
3: StackMap locals:
StackMap stack:
new com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge
dup
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.<init>:()V
astore 3
start local 3 4: new com.oracle.svm.core.genscavenge.PathExhibitor$RangeTargetMatcher
dup
aload 1
aload 2
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$RangeTargetMatcher.<init>:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/Pointer;)V
aload 3
invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.readCallerStackPointer:()Lorg/graalvm/word/Pointer;
invokestatic com.oracle.svm.core.genscavenge.PathExhibitor.findPathToTarget:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
5: aload 3
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.isFilled:()Z
ifeq 10
6: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
aload 3
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.getTo:()Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
7: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
aload 3
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.getFrom:()Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
8: aload 3
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.getFrom:()Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathElement.getObject:()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 4
start local 4 9: aload 0
aload 4
aload 3
invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.readCallerStackPointer:()Lorg/graalvm/word/Pointer;
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor.findPathToRoot:(Ljava/lang/Object;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
end local 4 10: StackMap locals: com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
0 11 1 rangeBegin Lorg/graalvm/word/Pointer;
0 11 2 rangeEnd Lorg/graalvm/word/Pointer;
4 11 3 edge Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;
9 10 4 fromObj Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.NeverInline(value = "Starting a stack walk in the caller frame")
MethodParameters:
Name Flags
rangeBegin
rangeEnd
public void toLog(com.oracle.svm.core.log.Log);
descriptor: (Lcom/oracle/svm/core/log/Log;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: com.oracle.svm.core.genscavenge.PathExhibitor com.oracle.svm.core.log.Log top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.svm.core.genscavenge.PathExhibitor$PathElement
astore 2
start local 2 2: aload 1
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
3: aload 2
aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathElement.toLog:(Lcom/oracle/svm/core/log/Log;)Lcom/oracle/svm/core/log/Log;
pop
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
0 6 1 log Lcom/oracle/svm/core/log/Log;
2 4 2 element Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
MethodParameters:
Name Flags
log
private void findPathToRoot(java.lang.Object, com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge, org.graalvm.word.Pointer);
descriptor: (Ljava/lang/Object;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.oracle.svm.core.genscavenge.PathExhibitor.$assertionsDisabled:Z
ifne 1
invokestatic com.oracle.svm.core.thread.VMOperation.isInProgressAtSafepoint:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
ifnonnull 3
2: return
3: StackMap locals:
StackMap stack:
aload 1
astore 4
start local 4 4: StackMap locals: java.lang.Object
StackMap stack:
aload 2
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.reset:()V
5: new com.oracle.svm.core.genscavenge.PathExhibitor$ObjectTargetMatcher
dup
aload 4
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$ObjectTargetMatcher.<init>:(Ljava/lang/Object;)V
aload 2
aload 3
invokestatic com.oracle.svm.core.genscavenge.PathExhibitor.findPathToTarget:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
6: aconst_null
astore 5
start local 5 7: aload 2
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.isFilled:()Z
ifeq 11
8: aload 2
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.getFrom:()Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
astore 5
9: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.isEmpty:()Z
ifeq 11
10: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
aload 2
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.getTo:()Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
11: StackMap locals: com.oracle.svm.core.genscavenge.PathExhibitor$PathElement
StackMap stack:
aload 5
ifnonnull 13
12: goto 23
13: StackMap locals:
StackMap stack:
aload 5
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathElement.getObject:()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 4
14: aload 4
ifnonnull 17
15: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
aload 5
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
16: goto 23
17: StackMap locals:
StackMap stack:
aload 0
aload 4
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor.checkForCycles:(Ljava/lang/Object;)Z
ifeq 21
18: new com.oracle.svm.core.genscavenge.PathExhibitor$CyclicElement
dup
aload 4
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$CyclicElement.<init>:(Ljava/lang/Object;)V
astore 6
start local 6 19: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
aload 6
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
20: goto 23
end local 6 21: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
aload 5
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 5 22: goto 4
23: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
0 24 1 leaf Ljava/lang/Object;
0 24 2 currentEdge Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;
0 24 3 currentThreadWalkStackPointer Lorg/graalvm/word/Pointer;
4 24 4 currentTargetObj Ljava/lang/Object;
7 22 5 currentElement Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
19 21 6 cyclic Lcom/oracle/svm/core/genscavenge/PathExhibitor$CyclicElement;
MethodParameters:
Name Flags
leaf
currentEdge
currentThreadWalkStackPointer
private static void findPathToTarget(com.oracle.svm.core.genscavenge.PathExhibitor$TargetMatcher, com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge, org.graalvm.word.Pointer);
descriptor: (Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.core.genscavenge.PathExhibitor.$assertionsDisabled:Z
ifne 2
aload 0
ifnull 1
aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.isFilled:()Z
ifeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.PathExhibitor.findPathInHeap:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
3: aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.PathExhibitor.findPathInImageHeap:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
4: aload 0
aload 1
aload 2
invokestatic com.oracle.svm.core.genscavenge.PathExhibitor.findPathInStack:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 target Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;
0 6 1 edge Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;
0 6 2 currentThreadWalkStackPointer Lorg/graalvm/word/Pointer;
MethodParameters:
Name Flags
target
edge
currentThreadWalkStackPointer
private static void findPathInStack(com.oracle.svm.core.genscavenge.PathExhibitor$TargetMatcher, com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge, org.graalvm.word.Pointer);
descriptor: (Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lorg/graalvm/word/Pointer;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.isFilled:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
aload 0
aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor.initialize:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
3: aload 2
getstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
invokestatic com.oracle.svm.core.stack.JavaStackWalker.walkCurrentThread:(Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/stack/StackFrameVisitor;)Z
pop
4: getstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor.reset:()V
5: 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 14
6: invokestatic com.oracle.svm.core.thread.VMThreads.firstThread:()Lorg/graalvm/nativeimage/IsolateThread;
astore 3
start local 3 7: goto 13
8: StackMap locals: org.graalvm.nativeimage.IsolateThread
StackMap stack:
aload 3
invokestatic org.graalvm.nativeimage.CurrentIsolate.getCurrentThread:()Lorg/graalvm/nativeimage/IsolateThread;
invokeinterface org.graalvm.nativeimage.IsolateThread.notEqual:(Lorg/graalvm/word/ComparableWord;)Z
ifeq 12
9: getstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
aload 0
aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor.initialize:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
10: aload 3
getstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
invokestatic com.oracle.svm.core.stack.JavaStackWalker.walkThread:(Lorg/graalvm/nativeimage/IsolateThread;Lcom/oracle/svm/core/stack/StackFrameVisitor;)Z
pop
11: getstatic com.oracle.svm.core.genscavenge.PathExhibitor.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$FrameVisitor;
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor.reset:()V
12: StackMap locals:
StackMap stack:
aload 3
invokestatic com.oracle.svm.core.thread.VMThreads.nextThread:(Lorg/graalvm/nativeimage/IsolateThread;)Lorg/graalvm/nativeimage/IsolateThread;
astore 3
13: StackMap locals:
StackMap stack:
aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.isFilled:()Z
ifne 14
aload 3
invokeinterface org.graalvm.nativeimage.IsolateThread.isNonNull:()Z
ifne 8
end local 3 14: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 target Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;
0 15 1 edge Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;
0 15 2 currentThreadWalkStackPointer Lorg/graalvm/word/Pointer;
7 14 3 thread Lorg/graalvm/nativeimage/IsolateThread;
MethodParameters:
Name Flags
target
edge
currentThreadWalkStackPointer
private static void findPathInImageHeap(com.oracle.svm.core.genscavenge.PathExhibitor$TargetMatcher, com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge);
descriptor: (Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.heap.Heap.getHeap:()Lcom/oracle/svm/core/heap/Heap;
new com.oracle.svm.core.genscavenge.PathExhibitor$1
dup
aload 1
aload 0
invokespecial com.oracle.svm.core.genscavenge.PathExhibitor$1.<init>:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;)V
invokevirtual com.oracle.svm.core.heap.Heap.walkImageHeapObjects:(Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 target Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;
0 2 1 result Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;
MethodParameters:
Name Flags
target
result
private static void findPathInHeap(com.oracle.svm.core.genscavenge.PathExhibitor$TargetMatcher, com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge);
descriptor: (Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge.isFilled:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.PathExhibitor.heapObjectVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$HeapObjectVisitor;
aload 0
aload 1
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjectVisitor.initialize:(Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;)V
3: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
getstatic com.oracle.svm.core.genscavenge.PathExhibitor.heapObjectVisitor:Lcom/oracle/svm/core/genscavenge/PathExhibitor$HeapObjectVisitor;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.walkObjects:(Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 target Lcom/oracle/svm/core/genscavenge/PathExhibitor$TargetMatcher;
0 5 1 result Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathEdge;
MethodParameters:
Name Flags
target
result
private boolean checkForCycles(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=6, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
getfield com.oracle.svm.core.genscavenge.PathExhibitor.path:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 4
goto 7
StackMap locals: com.oracle.svm.core.genscavenge.PathExhibitor java.lang.Object int top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.svm.core.genscavenge.PathExhibitor$PathElement
astore 3
start local 3 3: aload 3
invokevirtual com.oracle.svm.core.genscavenge.PathExhibitor$PathElement.getObject:()Ljava/lang/Object;
astore 5
start local 5 4: aload 1
aload 5
if_acmpne 7
5: iconst_1
istore 2
6: goto 8
end local 5 end local 3 7: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
8: StackMap locals: com.oracle.svm.core.genscavenge.PathExhibitor java.lang.Object int
StackMap stack:
iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/svm/core/genscavenge/PathExhibitor;
0 9 1 currentObject Ljava/lang/Object;
1 9 2 result Z
3 7 3 seen Lcom/oracle/svm/core/genscavenge/PathExhibitor$PathElement;
4 7 5 seenObject Ljava/lang/Object;
MethodParameters:
Name Flags
currentObject
}
SourceFile: "PathExhibitor.java"
NestMembers:
com.oracle.svm.core.genscavenge.PathExhibitor$1 com.oracle.svm.core.genscavenge.PathExhibitor$AbstractVisitor com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapElement com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapObjRefVisitor com.oracle.svm.core.genscavenge.PathExhibitor$CyclicElement com.oracle.svm.core.genscavenge.PathExhibitor$FindPathToObjectOperation com.oracle.svm.core.genscavenge.PathExhibitor$FrameSlotVisitor com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor com.oracle.svm.core.genscavenge.PathExhibitor$HeapElement com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjRefVisitor com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjectVisitor com.oracle.svm.core.genscavenge.PathExhibitor$LeafElement com.oracle.svm.core.genscavenge.PathExhibitor$ObjectTargetMatcher com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge com.oracle.svm.core.genscavenge.PathExhibitor$PathElement com.oracle.svm.core.genscavenge.PathExhibitor$RangeTargetMatcher com.oracle.svm.core.genscavenge.PathExhibitor$StackElement com.oracle.svm.core.genscavenge.PathExhibitor$TargetMatcher com.oracle.svm.core.genscavenge.PathExhibitor$TestingBackDoor
InnerClasses:
com.oracle.svm.core.genscavenge.PathExhibitor$1
AbstractVisitor = com.oracle.svm.core.genscavenge.PathExhibitor$AbstractVisitor of com.oracle.svm.core.genscavenge.PathExhibitor
public BootImageHeapElement = com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapElement of com.oracle.svm.core.genscavenge.PathExhibitor
private BootImageHeapObjRefVisitor = com.oracle.svm.core.genscavenge.PathExhibitor$BootImageHeapObjRefVisitor of com.oracle.svm.core.genscavenge.PathExhibitor
public CyclicElement = com.oracle.svm.core.genscavenge.PathExhibitor$CyclicElement of com.oracle.svm.core.genscavenge.PathExhibitor
private final FindPathToObjectOperation = com.oracle.svm.core.genscavenge.PathExhibitor$FindPathToObjectOperation of com.oracle.svm.core.genscavenge.PathExhibitor
private FrameSlotVisitor = com.oracle.svm.core.genscavenge.PathExhibitor$FrameSlotVisitor of com.oracle.svm.core.genscavenge.PathExhibitor
public FrameVisitor = com.oracle.svm.core.genscavenge.PathExhibitor$FrameVisitor of com.oracle.svm.core.genscavenge.PathExhibitor
public HeapElement = com.oracle.svm.core.genscavenge.PathExhibitor$HeapElement of com.oracle.svm.core.genscavenge.PathExhibitor
private HeapObjRefVisitor = com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjRefVisitor of com.oracle.svm.core.genscavenge.PathExhibitor
private HeapObjectVisitor = com.oracle.svm.core.genscavenge.PathExhibitor$HeapObjectVisitor of com.oracle.svm.core.genscavenge.PathExhibitor
public LeafElement = com.oracle.svm.core.genscavenge.PathExhibitor$LeafElement of com.oracle.svm.core.genscavenge.PathExhibitor
ObjectTargetMatcher = com.oracle.svm.core.genscavenge.PathExhibitor$ObjectTargetMatcher of com.oracle.svm.core.genscavenge.PathExhibitor
public PathEdge = com.oracle.svm.core.genscavenge.PathExhibitor$PathEdge of com.oracle.svm.core.genscavenge.PathExhibitor
public abstract PathElement = com.oracle.svm.core.genscavenge.PathExhibitor$PathElement of com.oracle.svm.core.genscavenge.PathExhibitor
RangeTargetMatcher = com.oracle.svm.core.genscavenge.PathExhibitor$RangeTargetMatcher of com.oracle.svm.core.genscavenge.PathExhibitor
public StackElement = com.oracle.svm.core.genscavenge.PathExhibitor$StackElement of com.oracle.svm.core.genscavenge.PathExhibitor
abstract TargetMatcher = com.oracle.svm.core.genscavenge.PathExhibitor$TargetMatcher of com.oracle.svm.core.genscavenge.PathExhibitor
public final TestingBackDoor = com.oracle.svm.core.genscavenge.PathExhibitor$TestingBackDoor of com.oracle.svm.core.genscavenge.PathExhibitor