public final class org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder
super_class: java.lang.Object
{
private final java.util.Deque<org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>> worklist;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
private final java.util.BitSet processed;
descriptor: Ljava/util/BitSet;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.core.common.alloc.Trace[] blockToTrace;
descriptor: [Lorg/graalvm/compiler/core/common/alloc/Trace;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
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=1, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
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 org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public static org.graalvm.compiler.core.common.alloc.TraceBuilderResult computeTraces(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>[], org.graalvm.compiler.core.common.alloc.TraceBuilderResult$TrivialTracePredicate);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;)Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder
dup
aload 2
invokespecial org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.<init>:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
aload 0
aload 1
aload 2
aload 3
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.build:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;)Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 debug Lorg/graalvm/compiler/debug/DebugContext;
0 1 1 startBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 1 2 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
0 1 3 pred Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;
Signature: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;)Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
MethodParameters:
Name Flags
debug
startBlock
blocks
pred
private void <init>(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>[]);
descriptor: ([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.BitSet
dup
aload 1
arraylength
invokespecial java.util.BitSet.<init>:(I)V
putfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.processed:Ljava/util/BitSet;
2: aload 0
aload 1
invokestatic org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.createQueue:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/Deque;
putfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.worklist:Ljava/util/Deque;
3: aload 0
aload 1
arraylength
anewarray org.graalvm.compiler.core.common.alloc.Trace
putfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.blockToTrace:[Lorg/graalvm/compiler/core/common/alloc/Trace;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 5 1 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
Signature: ([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
MethodParameters:
Name Flags
blocks
private static java.util.Deque<org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>> createQueue(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>[]);
descriptor: ([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/Deque;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: new java.util.ArrayList
dup
aload 0
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
astore 1
start local 1 1: aload 1
invokedynamic compare()Ljava/util/Comparator;
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:
(Ljava/lang/Object;Ljava/lang/Object;)I
org/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder.compare(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I (6)
(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
invokevirtual java.util.ArrayList.sort:(Ljava/util/Comparator;)V
2: new java.util.ArrayDeque
dup
aload 1
invokespecial java.util.ArrayDeque.<init>:(Ljava/util/Collection;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
1 3 1 queue Ljava/util/ArrayList<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
Signature: ([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Ljava/util/Deque<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
MethodParameters:
Name Flags
blocks
private static int compare(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
aload 0
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
invokestatic java.lang.Double.compare:(DD)I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 a Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 1 1 b Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)I
MethodParameters:
Name Flags
a
b
private boolean processed(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.processed:Ljava/util/BitSet;
aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokevirtual java.util.BitSet.get:(I)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 1 1 b Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Z
MethodParameters:
Name Flags
b
private org.graalvm.compiler.core.common.alloc.TraceBuilderResult build(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>[], org.graalvm.compiler.core.common.alloc.TraceBuilderResult$TrivialTracePredicate);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;)Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aconst_null
astore 5
aconst_null
astore 6
1: aload 1
ldc "BiDirectionalTraceBuilder: start trace building"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 2: aload 0
aload 1
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.buildTraces:(Lorg/graalvm/compiler/debug/DebugContext;)Ljava/util/ArrayList;
astore 8
start local 8 3: getstatic org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.$assertionsDisabled:Z
ifne 4
aload 8
iconst_0
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.core.common.alloc.Trace
invokevirtual org.graalvm.compiler.core.common.alloc.Trace.getBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
iconst_0
aaload
aload 2
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 4
new java.lang.AssertionError
dup
ldc "The first traces always contains the start block"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.core.common.alloc.TraceBuilderResult$TrivialTracePredicate java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.ArrayList
StackMap stack:
aload 1
aload 3
aload 8
aload 0
getfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.blockToTrace:[Lorg/graalvm/compiler/core/common/alloc/Trace;
aload 4
invokestatic org.graalvm.compiler.core.common.alloc.TraceBuilderResult.create:(Lorg/graalvm/compiler/debug/DebugContext;[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/ArrayList;[Lorg/graalvm/compiler/core/common/alloc/Trace;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;)Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
5: aload 7
ifnull 6
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
6: StackMap locals:
StackMap stack: org.graalvm.compiler.core.common.alloc.TraceBuilderResult
areturn
end local 8 StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.core.common.alloc.TraceBuilderResult$TrivialTracePredicate java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
7: astore 5
8: aload 7
ifnull 9
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
9: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 6
aload 5
ifnonnull 11
aload 6
astore 5
goto 12
StackMap locals:
StackMap stack:
11: aload 5
aload 6
if_acmpeq 12
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
12: aload 5
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 13 1 debug Lorg/graalvm/compiler/debug/DebugContext;
0 13 2 startBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 13 3 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
0 13 4 pred Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;
2 9 7 indent Lorg/graalvm/compiler/debug/Indent;
3 7 8 traces Ljava/util/ArrayList<Lorg/graalvm/compiler/core/common/alloc/Trace;>;
Exception table:
from to target type
2 5 7 any
1 6 10 any
7 10 10 any
Signature: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult$TrivialTracePredicate;)Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
MethodParameters:
Name Flags
debug
startBlock
blocks
pred
protected java.util.ArrayList<org.graalvm.compiler.core.common.alloc.Trace> buildTraces(org.graalvm.compiler.debug.DebugContext);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;)Ljava/util/ArrayList;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=9, args_size=2
start local 0 start local 1 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 1: goto 13
2: StackMap locals: java.util.ArrayList
StackMap stack:
aload 0
getfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.worklist:Ljava/util/Deque;
invokeinterface java.util.Deque.pollFirst:()Ljava/lang/Object;
checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase
astore 3
start local 3 3: getstatic org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.$assertionsDisabled:Z
ifne 4
aload 3
ifnonnull 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 0
aload 3
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.processed:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifne 13
5: new org.graalvm.compiler.core.common.alloc.Trace
dup
aload 0
aload 1
aload 3
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.startTrace:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/Collection;
invokespecial org.graalvm.compiler.core.common.alloc.Trace.<init>:(Ljava/util/Collection;)V
astore 4
start local 4 6: aload 4
invokevirtual org.graalvm.compiler.core.common.alloc.Trace.getBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 10
StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext java.util.ArrayList org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.alloc.Trace top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
7: aload 8
iload 6
aaload
astore 5
start local 5 8: aload 0
getfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.blockToTrace:[Lorg/graalvm/compiler/core/common/alloc/Trace;
aload 5
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 4
aastore
end local 5 9: iinc 6 1
StackMap locals:
StackMap stack:
10: iload 6
iload 7
if_icmplt 7
11: aload 4
aload 2
invokevirtual java.util.ArrayList.size:()I
invokevirtual org.graalvm.compiler.core.common.alloc.Trace.setId:(I)V
12: aload 2
aload 4
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 4 end local 3 13: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext java.util.ArrayList
StackMap stack:
aload 0
getfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.worklist:Ljava/util/Deque;
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 2
14: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 15 1 debug Lorg/graalvm/compiler/debug/DebugContext;
1 15 2 traces Ljava/util/ArrayList<Lorg/graalvm/compiler/core/common/alloc/Trace;>;
3 13 3 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
6 13 4 trace Lorg/graalvm/compiler/core/common/alloc/Trace;
8 9 5 traceBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/debug/DebugContext;)Ljava/util/ArrayList<Lorg/graalvm/compiler/core/common/alloc/Trace;>;
MethodParameters:
Name Flags
debug
private java.util.Collection<org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>> startTrace(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/Collection;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=12, args_size=3
start local 0 start local 1 start local 2 0: new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
astore 3
start local 3 1: aconst_null
astore 4
aconst_null
astore 5
2: aload 1
ldc "StartTrace: %s"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 3: aconst_null
astore 7
aconst_null
astore 8
4: aload 1
ldc "Head:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 9
start local 9 5: aload 2
astore 10
start local 10 6: goto 10
7: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.ArrayDeque java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 0
aload 1
aload 10
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.addBlockToTrace:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
8: aload 3
aload 10
invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
9: aload 0
aload 10
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.selectPredecessor:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 10
StackMap locals:
StackMap stack:
10: aload 10
ifnonnull 7
end local 10 11: aload 9
ifnull 17
aload 9
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 17
StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.ArrayDeque java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
12: astore 7
aload 9
ifnull 13
aload 9
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 9 StackMap locals:
StackMap stack:
13: aload 7
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
14: astore 8
aload 7
ifnonnull 15
aload 8
astore 7
goto 16
StackMap locals:
StackMap stack:
15: aload 7
aload 8
if_acmpeq 16
aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
16: aload 7
athrow
17: StackMap locals:
StackMap stack:
iconst_0
istore 7
start local 7 18: aload 3
invokevirtual java.util.ArrayDeque.iterator:()Ljava/util/Iterator;
astore 9
goto 21
StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.ArrayDeque java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int top java.util.Iterator
StackMap stack:
19: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase
astore 8
start local 8 20: aload 8
iload 7
iinc 7 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.setLinearScanNumber:(I)V
end local 8 21: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
22: aconst_null
astore 8
aconst_null
astore 9
23: aload 1
ldc "Tail:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 10
start local 10 24: aload 0
aload 2
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.selectSuccessor:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 11
start local 11 25: goto 30
26: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.ArrayDeque java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 0
aload 1
aload 11
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.addBlockToTrace:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
27: aload 3
aload 11
invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
28: aload 11
iload 7
iinc 7 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.setLinearScanNumber:(I)V
29: aload 0
aload 11
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.selectSuccessor:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 11
StackMap locals:
StackMap stack:
30: aload 11
ifnonnull 26
end local 11 31: aload 10
ifnull 37
aload 10
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 37
StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.ArrayDeque java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
32: astore 8
aload 10
ifnull 33
aload 10
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 10 StackMap locals:
StackMap stack:
33: aload 8
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
34: astore 9
aload 8
ifnonnull 35
aload 9
astore 8
goto 36
StackMap locals:
StackMap stack:
35: aload 8
aload 9
if_acmpeq 36
aload 8
aload 9
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
36: aload 8
athrow
end local 7 37: StackMap locals:
StackMap stack:
aload 6
ifnull 43
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 43
StackMap locals:
StackMap stack: java.lang.Throwable
38: astore 4
aload 6
ifnull 39
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
39: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
40: astore 5
aload 4
ifnonnull 41
aload 5
astore 4
goto 42
StackMap locals:
StackMap stack:
41: aload 4
aload 5
if_acmpeq 42
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
42: aload 4
athrow
43: StackMap locals:
StackMap stack:
aload 1
ldc "Trace: %s"
aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
44: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 45 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 45 1 debug Lorg/graalvm/compiler/debug/DebugContext;
0 45 2 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
1 45 3 trace Ljava/util/ArrayDeque<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
3 39 6 i Lorg/graalvm/compiler/debug/Indent;
5 13 9 indentFront Lorg/graalvm/compiler/debug/Indent;
6 11 10 currentBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
18 37 7 blockNr I
20 21 8 b Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
24 33 10 indentBack Lorg/graalvm/compiler/debug/Indent;
25 31 11 currentBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Exception table:
from to target type
5 11 12 any
4 14 14 any
24 31 32 any
23 34 34 any
3 37 38 any
2 40 40 any
Signature: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Ljava/util/Collection<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
MethodParameters:
Name Flags
debug
block
private void addBlockToTrace(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ldc "add %s (prob: %f)"
aload 2
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
1: aload 0
getfield org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.processed:Ljava/util/BitSet;
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokevirtual java.util.BitSet.set:(I)V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 3 1 debug Lorg/graalvm/compiler/debug/DebugContext;
0 3 2 currentBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
MethodParameters:
Name Flags
debug
currentBlock
private org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> selectPredecessor(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 6
StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
2: aload 6
iload 4
aaload
astore 3
start local 3 3: aload 0
aload 3
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.processed:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifne 5
aload 3
aload 1
invokestatic org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.isBackEdge:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifne 5
aload 2
ifnull 4
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dcmpl
ifle 5
4: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
aload 3
astore 2
end local 3 5: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
6: iload 4
iload 5
if_icmplt 2
7: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 8 1 currentBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
1 8 2 next Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
3 5 3 pred Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
currentBlock
private static boolean isBackEdge(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
aload 1
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "No edge from "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopEnd:()Z
ifeq 2
aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopHeader:()Z
ifeq 2
aload 0
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 from Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 3 1 to Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Z
MethodParameters:
Name Flags
from
to
private org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> selectSuccessor(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 6
StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
2: aload 6
iload 4
aaload
astore 3
start local 3 3: aload 0
aload 3
invokevirtual org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder.processed:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifne 5
aload 2
ifnull 4
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dcmpl
ifle 5
4: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
aload 3
astore 2
end local 3 5: StackMap locals: org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
6: iload 4
iload 5
if_icmplt 2
7: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/graalvm/compiler/core/common/alloc/BiDirectionalTraceBuilder;
0 8 1 currentBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
1 8 2 next Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
3 5 3 succ Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
currentBlock
}
SourceFile: "BiDirectionalTraceBuilder.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract TrivialTracePredicate = org.graalvm.compiler.core.common.alloc.TraceBuilderResult$TrivialTracePredicate of org.graalvm.compiler.core.common.alloc.TraceBuilderResult