public final class org.graalvm.compiler.nodes.cfg.ControlFlowGraph implements org.graalvm.compiler.core.common.cfg.AbstractControlFlowGraph<org.graalvm.compiler.nodes.cfg.Block>
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.nodes.cfg.ControlFlowGraph
super_class: java.lang.Object
{
public static final double MIN_PROBABILITY;
descriptor: D
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 3.0549363634996047E-151
public static final double MAX_PROBABILITY;
descriptor: D
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 3.273390607896142E150
public final org.graalvm.compiler.nodes.StructuredGraph graph;
descriptor: Lorg/graalvm/compiler/nodes/StructuredGraph;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
private org.graalvm.compiler.graph.NodeMap<org.graalvm.compiler.nodes.cfg.Block> nodeToBlock;
descriptor: Lorg/graalvm/compiler/graph/NodeMap;
flags: (0x0002) ACC_PRIVATE
Signature: Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;
private org.graalvm.compiler.nodes.cfg.Block[] reversePostOrder;
descriptor: [Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x0002) ACC_PRIVATE
private java.util.List<org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block>> loops;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;>;
private int maxDominatorDepth;
descriptor: I
flags: (0x0002) ACC_PRIVATE
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/nodes/cfg/ControlFlowGraph;
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.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
public static org.graalvm.compiler.nodes.cfg.ControlFlowGraph compute(org.graalvm.compiler.nodes.StructuredGraph, boolean, boolean, boolean, boolean);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;ZZZZ)Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new org.graalvm.compiler.nodes.cfg.ControlFlowGraph
dup
aload 0
invokespecial org.graalvm.compiler.nodes.cfg.ControlFlowGraph.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
astore 5
start local 5 1: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.identifyBlocks:()V
2: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeProbabilities:()V
3: iload 2
ifeq 5
4: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeLoopInformation:()V
5: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph
StackMap stack:
iload 3
ifeq 7
6: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeDominators:()V
7: StackMap locals:
StackMap stack:
iload 4
ifeq 9
8: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computePostdominators:()V
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 11
iload 1
ifne 10
iload 2
ifne 10
iload 3
ifne 10
iload 4
ifeq 11
StackMap locals:
StackMap stack:
10: aload 5
invokestatic org.graalvm.compiler.core.common.cfg.CFGVerifier.verify:(Lorg/graalvm/compiler/core/common/cfg/AbstractControlFlowGraph;)Z
ifne 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals:
StackMap stack:
aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 12 1 connectBlocks Z
0 12 2 computeLoops Z
0 12 3 computeDominators Z
0 12 4 computePostdominators Z
1 12 5 cfg Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
MethodParameters:
Name Flags
graph
connectBlocks
computeLoops
computeDominators
computePostdominators
public java.lang.String dominatorTreeString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getStartBlock:()Lorg/graalvm/compiler/nodes/cfg/Block;
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.dominatorTreeString:(Lorg/graalvm/compiler/nodes/cfg/Block;)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
private static java.lang.String dominatorTreeString(org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 1
start local 1 1: aload 1
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
pop
2: aload 1
ldc "("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
3: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 2
start local 2 4: goto 9
5: StackMap locals: java.lang.StringBuilder org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
aload 2
if_acmpne 7
6: aload 1
ldc "!"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
7: StackMap locals:
StackMap stack:
aload 1
aload 2
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.dominatorTreeString:(Lorg/graalvm/compiler/nodes/cfg/Block;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
8: aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 2
9: StackMap locals:
StackMap stack:
aload 2
ifnonnull 5
10: aload 1
ldc ") "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
11: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 b Lorg/graalvm/compiler/nodes/cfg/Block;
1 12 1 sb Ljava/lang/StringBuilder;
4 12 2 firstDominated Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
b
public <V> void visitDominatorTreeDefault(org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor<V>);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=10, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.maxDominatorDepth:I
iconst_1
iadd
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 2
start local 2 1: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getStartBlock:()Lorg/graalvm/compiler/nodes/cfg/Block;
astore 3
start local 3 2: iconst_0
istore 4
start local 4 3: aconst_null
astore 5
start local 5 4: iconst_0
istore 6
start local 6 5: goto 38
6: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int java.lang.Object[] int
StackMap stack:
aload 2
iload 4
aaload
astore 7
start local 7 7: aload 7
ifnull 8
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
ifnull 8
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
aload 7
if_acmpeq 32
8: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 7
ifnonnull 20
9: aload 1
aload 3
invokeinterface org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor.enter:(Lorg/graalvm/compiler/nodes/cfg/Block;)Ljava/lang/Object;
astore 8
start local 8 10: aload 8
ifnonnull 11
aload 5
ifnull 14
11: StackMap locals: java.lang.Object
StackMap stack:
aload 5
ifnonnull 13
12: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.maxDominatorDepth:I
iconst_1
iadd
anewarray java.lang.Object
astore 5
13: StackMap locals:
StackMap stack:
aload 5
iload 6
iinc 6 1
aload 8
aastore
14: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.skipPostDom:(Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
astore 9
start local 9 15: aload 9
ifnull 26
16: aload 2
iload 4
aload 9
aastore
17: aload 9
astore 3
18: aload 2
iinc 4 1
iload 4
aconst_null
aastore
19: goto 38
end local 9 end local 8 20: StackMap locals:
StackMap stack:
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.skipPostDom:(Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
astore 8
start local 8 21: aload 8
ifnull 26
22: aload 2
iload 4
aload 8
aastore
23: aload 8
astore 3
24: aload 2
iinc 4 1
iload 4
aconst_null
aastore
25: goto 38
end local 8 26: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
astore 8
start local 8 27: aload 8
ifnull 32
aload 8
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
aload 3
if_acmpne 32
28: aload 2
iload 4
aload 8
aastore
29: aload 8
astore 3
30: aload 2
iinc 4 1
iload 4
aconst_null
aastore
31: goto 38
end local 8 32: StackMap locals:
StackMap stack:
aconst_null
astore 8
start local 8 33: aload 5
ifnull 35
iload 6
ifle 35
34: aload 5
iinc 6 -1
iload 6
aaload
astore 8
35: StackMap locals: java.lang.Object
StackMap stack:
aload 1
aload 3
aload 8
invokeinterface org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor.exit:(Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/lang/Object;)V
36: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 3
37: iinc 4 -1
end local 8 end local 7 38: StackMap locals:
StackMap stack:
iload 4
ifge 6
39: return
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 40 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 40 1 visitor Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor<TV;>;
1 40 2 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
2 40 3 current Lorg/graalvm/compiler/nodes/cfg/Block;
3 40 4 tos I
4 40 5 values [Ljava/lang/Object;
5 40 6 valuesTOS I
7 38 7 state Lorg/graalvm/compiler/nodes/cfg/Block;
10 20 8 value TV;
15 20 9 dominated Lorg/graalvm/compiler/nodes/cfg/Block;
21 26 8 next Lorg/graalvm/compiler/nodes/cfg/Block;
27 32 8 postDom Lorg/graalvm/compiler/nodes/cfg/Block;
33 38 8 value TV;
Signature: <V:Ljava/lang/Object;>(Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor<TV;>;)V
MethodParameters:
Name Flags
visitor
private static org.graalvm.compiler.nodes.cfg.Block skipPostDom(org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ifnull 2
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
aload 0
if_acmpne 2
1: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
areturn
2: StackMap locals:
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 block Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
block
public static void addDeferredExit(org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit[], org.graalvm.compiler.nodes.cfg.Block);
descriptor: ([Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;Lorg/graalvm/compiler/nodes/cfg/Block;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 2
start local 2 1: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 3
start local 3 2: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 4
aload 2
ifnonnull 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 2
4: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnull 5
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 3
if_acmpne 3
5: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getIndex:()I
istore 4
start local 4 6: aload 0
iload 4
new org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit
dup
aload 1
aload 0
iload 4
aaload
invokespecial org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit.<init>:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;)V
aastore
7: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 deferredExits [Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;
0 8 1 b Lorg/graalvm/compiler/nodes/cfg/Block;
1 8 2 outermostExited Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
2 8 3 exitBlockLoop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
6 8 4 loopIndex I
MethodParameters:
Name Flags
deferredExits
b
public <V> void visitDominatorTreeDeferLoopExits(org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor<V>);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=14, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getBlocks:()[Lorg/graalvm/compiler/nodes/cfg/Block;
arraylength
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 2
start local 2 1: iconst_0
istore 3
start local 3 2: new java.util.BitSet
dup
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getBlocks:()[Lorg/graalvm/compiler/nodes/cfg/Block;
arraylength
invokespecial java.util.BitSet.<init>:(I)V
astore 4
start local 4 3: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getLoops:()Ljava/util/List;
invokeinterface java.util.List.size:()I
istore 5
start local 5 4: iload 5
anewarray org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit
astore 6
start local 6 5: aconst_null
astore 7
start local 7 6: iconst_0
istore 8
start local 8 7: aload 2
iconst_0
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getStartBlock:()Lorg/graalvm/compiler/nodes/cfg/Block;
aastore
8: goto 51
9: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor org.graalvm.compiler.nodes.cfg.Block[] int java.util.BitSet int org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit[] java.lang.Object[] int
StackMap stack:
aload 2
iload 3
aaload
astore 9
start local 9 10: aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
istore 10
start local 10 11: aload 4
iload 10
invokevirtual java.util.BitSet.get:(I)Z
ifeq 27
12: aconst_null
astore 11
start local 11 13: aload 7
ifnull 15
iload 8
ifle 15
14: aload 7
iinc 8 -1
iload 8
aaload
astore 11
15: StackMap locals: org.graalvm.compiler.nodes.cfg.Block int java.lang.Object
StackMap stack:
aload 1
aload 9
aload 11
invokeinterface org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor.exit:(Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/lang/Object;)V
16: iinc 3 -1
17: aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopHeader:()Z
ifeq 51
18: aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getIndex:()I
istore 12
start local 12 19: aload 6
iload 12
aaload
astore 13
start local 13 20: aload 13
ifnull 51
21: goto 24
22: StackMap locals: int org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit
StackMap stack:
aload 2
iinc 3 1
iload 3
aload 13
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit.block:Lorg/graalvm/compiler/nodes/cfg/Block;
aastore
23: aload 13
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit.next:Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;
astore 13
24: StackMap locals:
StackMap stack:
aload 13
ifnonnull 22
25: aload 6
iload 12
aconst_null
aastore
end local 13 end local 12 end local 11 26: goto 51
27: StackMap locals:
StackMap stack:
aload 4
iload 10
invokevirtual java.util.BitSet.set:(I)V
28: aload 1
aload 9
invokeinterface org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor.enter:(Lorg/graalvm/compiler/nodes/cfg/Block;)Ljava/lang/Object;
astore 11
start local 11 29: aload 11
ifnonnull 30
aload 7
ifnull 33
30: StackMap locals: java.lang.Object
StackMap stack:
aload 7
ifnonnull 32
31: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.maxDominatorDepth:I
iconst_1
iadd
anewarray java.lang.Object
astore 7
32: StackMap locals:
StackMap stack:
aload 7
iload 8
iinc 8 1
aload 11
aastore
33: StackMap locals:
StackMap stack:
aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
astore 12
start local 12 34: aload 12
ifnull 42
35: aload 12
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
aload 9
if_acmpeq 38
36: aconst_null
astore 12
37: goto 42
StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
38: aload 12
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.isDominatorTreeLoopExit:(Lorg/graalvm/compiler/nodes/cfg/Block;)Z
ifeq 41
39: aload 6
aload 12
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.addDeferredExit:([Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;Lorg/graalvm/compiler/nodes/cfg/Block;)V
40: goto 42
41: StackMap locals:
StackMap stack:
aload 2
iinc 3 1
iload 3
aload 12
aastore
42: StackMap locals:
StackMap stack:
aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 13
start local 13 43: goto 50
44: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 13
aload 12
if_acmpeq 49
45: aload 13
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.isDominatorTreeLoopExit:(Lorg/graalvm/compiler/nodes/cfg/Block;)Z
ifeq 48
46: aload 6
aload 13
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.addDeferredExit:([Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;Lorg/graalvm/compiler/nodes/cfg/Block;)V
47: goto 49
48: StackMap locals:
StackMap stack:
aload 2
iinc 3 1
iload 3
aload 13
aastore
49: StackMap locals:
StackMap stack:
aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 13
50: StackMap locals:
StackMap stack:
aload 13
ifnonnull 44
end local 13 end local 12 end local 11 end local 10 end local 9 51: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor org.graalvm.compiler.nodes.cfg.Block[] int java.util.BitSet int org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit[] java.lang.Object[] int
StackMap stack:
iload 3
ifge 9
52: return
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 53 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 53 1 visitor Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor<TV;>;
1 53 2 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
2 53 3 tos I
3 53 4 visited Ljava/util/BitSet;
4 53 5 loopCount I
5 53 6 deferredExits [Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;
6 53 7 values [Ljava/lang/Object;
7 53 8 valuesTOS I
10 51 9 cur Lorg/graalvm/compiler/nodes/cfg/Block;
11 51 10 curId I
13 26 11 value TV;
19 26 12 loopIndex I
20 26 13 deferredExit Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$DeferredExit;
29 51 11 value TV;
34 51 12 alwaysReached Lorg/graalvm/compiler/nodes/cfg/Block;
43 51 13 b Lorg/graalvm/compiler/nodes/cfg/Block;
Signature: <V:Ljava/lang/Object;>(Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor<TV;>;)V
MethodParameters:
Name Flags
visitor
public <V> void visitDominatorTree(org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor<V>, );
descriptor: (Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 2
ifeq 3
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getLoops:()Ljava/util/List;
invokeinterface java.util.List.size:()I
ifle 3
1: aload 0
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.visitDominatorTreeDeferLoopExits:(Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor;)V
2: goto 4
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.visitDominatorTreeDefault:(Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor;)V
4: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 5 1 visitor Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor<TV;>;
0 5 2 deferLoopExits Z
Signature: <V:Ljava/lang/Object;>(Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph$RecursiveVisitor<TV;>;Z)V
MethodParameters:
Name Flags
visitor
deferLoopExits
public static boolean isDominatorTreeLoopExit(org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 1
start local 1 1: aload 1
ifnull 3
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
if_acmpeq 3
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopHeader:()Z
ifeq 2
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoopDepth:()I
aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoopDepth:()I
if_icmplt 3
StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
2: iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 b Lorg/graalvm/compiler/nodes/cfg/Block;
1 4 1 dominator Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
b
private void <init>(org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
2: aload 0
aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.createNodeMap:()Lorg/graalvm/compiler/graph/NodeMap;
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 4 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
MethodParameters:
Name Flags
graph
private void computeDominators();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=10, args_size=1
start local 0 0: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
iconst_0
aaload
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
ifeq 1
new java.lang.AssertionError
dup
ldc "start block has no predecessor and therefore no dominator"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
astore 1
start local 1 2: iconst_0
istore 2
start local 2 3: iconst_1
istore 3
start local 3 4: goto 29
5: StackMap locals: org.graalvm.compiler.nodes.cfg.Block[] int int
StackMap stack:
aload 1
iload 3
aaload
astore 4
start local 4 6: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 7
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
ifgt 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aconst_null
astore 5
start local 5 8: aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 15
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
9: aload 9
iload 7
aaload
astore 6
start local 6 10: aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopEnd:()Z
ifne 14
11: aload 5
ifnonnull 12
aload 6
goto 13
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
12: aload 5
aload 6
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.commonDominatorRaw:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
StackMap locals:
StackMap stack: org.graalvm.compiler.nodes.cfg.Block
13: astore 5
end local 6 14: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
15: iload 7
iload 8
if_icmplt 9
16: aload 4
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominator:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
17: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 6
start local 6 18: aload 6
ifnull 25
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
if_icmpge 25
19: goto 21
20: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 6
21: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
ifnull 22
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
if_icmplt 20
22: StackMap locals:
StackMap stack:
aload 4
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominatedSibling:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
23: aload 6
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominatedSibling:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
24: goto 27
25: StackMap locals:
StackMap stack:
aload 4
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominatedSibling:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
26: aload 5
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setFirstDominated:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
27: StackMap locals:
StackMap stack:
iload 2
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatorDepth:()I
invokestatic java.lang.Math.max:(II)I
istore 2
end local 6 end local 5 end local 4 28: iinc 3 1
StackMap locals:
StackMap stack:
29: iload 3
aload 1
arraylength
if_icmplt 5
end local 3 30: aload 0
iload 2
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.maxDominatorDepth:I
31: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getStartBlock:()Lorg/graalvm/compiler/nodes/cfg/Block;
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
arraylength
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.calcDominatorRanges:(Lorg/graalvm/compiler/nodes/cfg/Block;I)V
32: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
2 33 1 blocks [Lorg/graalvm/compiler/nodes/cfg/Block;
3 33 2 curMaxDominatorDepth I
4 30 3 i I
6 28 4 block Lorg/graalvm/compiler/nodes/cfg/Block;
8 28 5 dominator Lorg/graalvm/compiler/nodes/cfg/Block;
10 14 6 pred Lorg/graalvm/compiler/nodes/cfg/Block;
18 28 6 currentDominated Lorg/graalvm/compiler/nodes/cfg/Block;
private static void calcDominatorRanges(org.graalvm.compiler.nodes.cfg.Block, int);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: iload 1
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 2
start local 2 1: aload 2
iconst_0
aload 0
aastore
2: iconst_0
istore 3
start local 3 3: iconst_0
istore 4
start local 4 4: StackMap locals: org.graalvm.compiler.nodes.cfg.Block[] int int
StackMap stack:
aload 2
iload 3
aaload
astore 5
start local 5 5: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 6
start local 6 6: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatorNumber:()I
iconst_m1
if_icmpne 17
7: aload 5
iload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominatorNumber:(I)V
8: aload 6
ifnull 13
9: StackMap locals: org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 2
iinc 3 1
iload 3
aload 6
aastore
10: aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 6
11: aload 6
ifnonnull 9
12: goto 15
13: StackMap locals:
StackMap stack:
aload 5
iload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setMaxChildDomNumber:(I)V
14: iinc 3 -1
15: StackMap locals:
StackMap stack:
iinc 4 1
16: goto 19
17: StackMap locals:
StackMap stack:
aload 5
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getMaxChildDominatorNumber:()I
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setMaxChildDomNumber:(I)V
18: iinc 3 -1
end local 6 end local 5 19: StackMap locals:
StackMap stack:
iload 3
20: ifge 4
21: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 block Lorg/graalvm/compiler/nodes/cfg/Block;
0 22 1 size I
1 22 2 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
3 22 3 tos I
4 22 4 myNumber I
5 19 5 cur Lorg/graalvm/compiler/nodes/cfg/Block;
6 19 6 dominated Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
block
size
private static org.graalvm.compiler.nodes.cfg.Block commonDominatorRaw(org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatorDepth:()I
istore 2
start local 2 1: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatorDepth:()I
istore 3
start local 3 2: iload 2
iload 3
if_icmple 4
3: aload 0
iload 2
iload 3
isub
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:(I)Lorg/graalvm/compiler/nodes/cfg/Block;
aload 1
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.commonDominatorRawSameDepth:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
areturn
4: StackMap locals: int int
StackMap stack:
aload 0
aload 1
iload 3
iload 2
isub
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:(I)Lorg/graalvm/compiler/nodes/cfg/Block;
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.commonDominatorRawSameDepth:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 a Lorg/graalvm/compiler/nodes/cfg/Block;
0 5 1 b Lorg/graalvm/compiler/nodes/cfg/Block;
1 5 2 aDomDepth I
2 5 3 bDomDepth I
MethodParameters:
Name Flags
a
b
private static org.graalvm.compiler.nodes.cfg.Block commonDominatorRawSameDepth(org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
astore 2
start local 2 1: aload 1
astore 3
start local 3 2: goto 5
3: StackMap locals: org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 2
4: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominator:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 3
5: StackMap locals:
StackMap stack:
aload 2
aload 3
if_acmpne 3
6: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 a Lorg/graalvm/compiler/nodes/cfg/Block;
0 7 1 b Lorg/graalvm/compiler/nodes/cfg/Block;
1 7 2 iterA Lorg/graalvm/compiler/nodes/cfg/Block;
2 7 3 iterB Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
a
b
public org.graalvm.compiler.nodes.cfg.Block[] getBlocks();
descriptor: ()[Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
public org.graalvm.compiler.nodes.cfg.Block getStartBlock();
descriptor: ()Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
iconst_0
aaload
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
public org.graalvm.compiler.nodes.cfg.Block[] reversePostOrder();
descriptor: ()[Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
public org.graalvm.compiler.graph.NodeMap<org.graalvm.compiler.nodes.cfg.Block> getNodeToBlock();
descriptor: ()Lorg/graalvm/compiler/graph/NodeMap;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
Signature: ()Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;
public org.graalvm.compiler.nodes.cfg.Block blockFor(org.graalvm.compiler.graph.Node);
descriptor: (Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 1
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 1 1 node Lorg/graalvm/compiler/graph/Node;
MethodParameters:
Name Flags
node
public java.util.List<org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block>> getLoops();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.loops:Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
Signature: ()Ljava/util/List<Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;>;
public int getMaxDominatorDepth();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.maxDominatorDepth:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
private void identifyBlock(org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 2
start local 2 1: StackMap locals: org.graalvm.compiler.nodes.FixedWithNextNode
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 2
aload 2
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.isDeleted:()Z
ifeq 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 2
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
ifnull 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 2
aload 1
invokevirtual org.graalvm.compiler.graph.NodeMap.set:(Lorg/graalvm/compiler/graph/Node;Ljava/lang/Object;)V
4: aload 2
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 3
start local 3 5: aload 3
instanceof org.graalvm.compiler.nodes.AbstractBeginNode
ifeq 8
6: aload 1
aload 2
putfield org.graalvm.compiler.nodes.cfg.Block.endNode:Lorg/graalvm/compiler/nodes/FixedNode;
7: return
8: StackMap locals: org.graalvm.compiler.nodes.FixedNode
StackMap stack:
aload 3
instanceof org.graalvm.compiler.nodes.FixedWithNextNode
ifeq 11
9: aload 3
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
astore 2
10: goto 1
11: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 3
aload 1
invokevirtual org.graalvm.compiler.graph.NodeMap.set:(Lorg/graalvm/compiler/graph/Node;Ljava/lang/Object;)V
12: aload 1
aload 3
putfield org.graalvm.compiler.nodes.cfg.Block.endNode:Lorg/graalvm/compiler/nodes/FixedNode;
13: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 14 1 block Lorg/graalvm/compiler/nodes/cfg/Block;
1 14 2 cur Lorg/graalvm/compiler/nodes/FixedWithNextNode;
5 14 3 next Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
block
private void identifyBlocks();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=15, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
getstatic org.graalvm.compiler.nodes.AbstractBeginNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:(Lorg/graalvm/compiler/graph/NodeClass;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 3
goto 6
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 2
start local 2 3: new org.graalvm.compiler.nodes.cfg.Block
dup
aload 2
invokespecial org.graalvm.compiler.nodes.cfg.Block.<init>:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
astore 4
start local 4 4: aload 0
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.identifyBlock:(Lorg/graalvm/compiler/nodes/cfg/Block;)V
5: iinc 1 1
end local 4 end local 2 6: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: iconst_0
istore 2
start local 2 8: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
astore 3
start local 3 9: iload 1
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 4
start local 4 10: iconst_0
istore 5
start local 5 11: aload 0
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.start:()Lorg/graalvm/compiler/nodes/StartNode;
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
astore 6
start local 6 12: aload 4
iconst_0
aload 6
aastore
13: aload 6
getstatic org.graalvm.compiler.nodes.cfg.Block.EMPTY_ARRAY:[Lorg/graalvm/compiler/nodes/cfg/Block;
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPredecessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
14: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int int org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 4
iload 5
aaload
astore 7
start local 7 15: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
istore 8
start local 8 16: iload 8
iconst_m1
if_icmpne 72
17: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 9
start local 9 18: aload 9
instanceof org.graalvm.compiler.nodes.EndNode
ifeq 25
19: aload 9
checkcast org.graalvm.compiler.nodes.EndNode
astore 10
start local 10 20: aload 3
aload 10
invokevirtual org.graalvm.compiler.nodes.EndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 11
start local 11 21: aload 11
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
iconst_m1
if_icmpne 23
22: aload 4
iinc 5 1
iload 5
aload 11
aastore
23: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int int org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 7
iconst_1
anewarray org.graalvm.compiler.nodes.cfg.Block
dup
iconst_0
aload 11
aastore
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setSuccessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 11 end local 10 24: goto 56
StackMap locals:
StackMap stack:
25: aload 9
instanceof org.graalvm.compiler.nodes.IfNode
ifeq 36
26: aload 9
checkcast org.graalvm.compiler.nodes.IfNode
astore 10
start local 10 27: aload 3
aload 10
invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 11
start local 11 28: aload 4
iinc 5 1
iload 5
aload 11
aastore
29: aload 3
aload 10
invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 12
start local 12 30: aload 4
iinc 5 1
iload 5
aload 12
aastore
31: aload 7
iconst_2
anewarray org.graalvm.compiler.nodes.cfg.Block
dup
iconst_0
aload 11
aastore
dup
iconst_1
aload 12
aastore
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setSuccessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
32: iconst_1
anewarray org.graalvm.compiler.nodes.cfg.Block
dup
iconst_0
aload 7
aastore
astore 13
start local 13 33: aload 11
aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPredecessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
34: aload 12
aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPredecessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 13 end local 12 end local 11 end local 10 35: goto 56
StackMap locals:
StackMap stack:
36: aload 9
instanceof org.graalvm.compiler.nodes.LoopEndNode
ifeq 40
37: aload 9
checkcast org.graalvm.compiler.nodes.LoopEndNode
astore 10
start local 10 38: aload 7
iconst_1
anewarray org.graalvm.compiler.nodes.cfg.Block
dup
iconst_0
aload 3
aload 10
invokevirtual org.graalvm.compiler.nodes.LoopEndNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
aastore
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setSuccessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 10 39: goto 56
StackMap locals:
StackMap stack:
40: aload 9
instanceof org.graalvm.compiler.nodes.ControlSinkNode
ifeq 43
41: aload 7
getstatic org.graalvm.compiler.nodes.cfg.Block.EMPTY_ARRAY:[Lorg/graalvm/compiler/nodes/cfg/Block;
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setSuccessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
42: goto 56
43: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 44
aload 9
instanceof org.graalvm.compiler.nodes.AbstractEndNode
ifeq 44
new java.lang.AssertionError
dup
ldc "Algorithm only supports EndNode and LoopEndNode."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
44: StackMap locals:
StackMap stack:
iload 5
istore 10
start local 10 45: iconst_1
anewarray org.graalvm.compiler.nodes.cfg.Block
dup
iconst_0
aload 7
aastore
astore 11
start local 11 46: aload 9
invokevirtual org.graalvm.compiler.nodes.FixedNode.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 13
goto 51
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int int org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int org.graalvm.compiler.nodes.FixedNode int org.graalvm.compiler.nodes.cfg.Block[] top java.util.Iterator
StackMap stack:
47: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 12
start local 12 48: aload 3
aload 12
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 14
start local 14 49: aload 4
iinc 5 1
iload 5
aload 14
aastore
50: aload 14
aload 11
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPredecessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 14 end local 12 51: StackMap locals:
StackMap stack:
aload 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 47
52: iload 5
iload 10
isub
istore 12
start local 12 53: iload 12
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 13
start local 13 54: aload 4
iload 10
iconst_1
iadd
aload 13
iconst_0
iload 12
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
55: aload 7
aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setSuccessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 13 end local 12 end local 11 end local 10 56: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int int org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int org.graalvm.compiler.nodes.FixedNode
StackMap stack:
aload 7
bipush -2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setId:(I)V
57: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 10
start local 10 58: aload 10
instanceof org.graalvm.compiler.nodes.LoopBeginNode
ifeq 61
59: aload 3
aload 7
aload 10
checkcast org.graalvm.compiler.nodes.LoopBeginNode
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeLoopPredecessors:(Lorg/graalvm/compiler/graph/NodeMap;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/LoopBeginNode;)V
60: goto 80
StackMap locals: org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
61: aload 10
instanceof org.graalvm.compiler.nodes.MergeNode
ifeq 80
62: aload 10
checkcast org.graalvm.compiler.nodes.MergeNode
astore 11
start local 11 63: aload 11
invokevirtual org.graalvm.compiler.nodes.MergeNode.forwardEndCount:()I
istore 12
start local 12 64: iload 12
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 13
start local 13 65: iconst_0
istore 14
start local 14 66: goto 69
67: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int int org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.MergeNode int org.graalvm.compiler.nodes.cfg.Block[] int
StackMap stack:
aload 13
iload 14
aload 3
aload 11
iload 14
invokevirtual org.graalvm.compiler.nodes.MergeNode.forwardEndAt:(I)Lorg/graalvm/compiler/nodes/EndNode;
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
aastore
68: iinc 14 1
StackMap locals:
StackMap stack:
69: iload 14
iload 12
if_icmplt 67
end local 14 70: aload 7
aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPredecessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 13 end local 12 end local 11 end local 10 end local 9 71: goto 80
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph int int org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int
StackMap stack:
72: iload 8
bipush -2
if_icmpne 79
73: iinc 5 -1
74: iinc 2 1
75: iload 1
iload 2
isub
istore 9
start local 9 76: aload 4
iload 9
aload 7
aastore
77: aload 7
iload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setId:(I)V
end local 9 78: goto 80
79: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
end local 8 end local 7 80: StackMap locals:
StackMap stack:
iload 5
81: ifge 14
82: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 83
iload 2
iload 1
if_icmpeq 83
new java.lang.AssertionError
dup
ldc "all blocks must be reachable"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
83: StackMap locals:
StackMap stack:
aload 0
aload 4
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
84: return
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 85 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
1 85 1 numBlocks I
3 6 2 begin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
4 6 4 block Lorg/graalvm/compiler/nodes/cfg/Block;
8 85 2 count I
9 85 3 nodeMap Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;
10 85 4 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
11 85 5 tos I
12 85 6 startBlock Lorg/graalvm/compiler/nodes/cfg/Block;
15 80 7 block Lorg/graalvm/compiler/nodes/cfg/Block;
16 80 8 id I
18 71 9 last Lorg/graalvm/compiler/nodes/FixedNode;
20 24 10 endNode Lorg/graalvm/compiler/nodes/EndNode;
21 24 11 suxBlock Lorg/graalvm/compiler/nodes/cfg/Block;
27 35 10 ifNode Lorg/graalvm/compiler/nodes/IfNode;
28 35 11 trueSucc Lorg/graalvm/compiler/nodes/cfg/Block;
30 35 12 falseSucc Lorg/graalvm/compiler/nodes/cfg/Block;
33 35 13 ifPred [Lorg/graalvm/compiler/nodes/cfg/Block;
38 39 10 loopEndNode Lorg/graalvm/compiler/nodes/LoopEndNode;
45 56 10 startTos I
46 56 11 ifPred [Lorg/graalvm/compiler/nodes/cfg/Block;
48 51 12 suxNode Lorg/graalvm/compiler/graph/Node;
49 51 14 sux Lorg/graalvm/compiler/nodes/cfg/Block;
53 56 12 suxCount I
54 56 13 successors [Lorg/graalvm/compiler/nodes/cfg/Block;
58 71 10 beginNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
63 71 11 mergeNode Lorg/graalvm/compiler/nodes/MergeNode;
64 71 12 forwardEndCount I
65 71 13 predecessors [Lorg/graalvm/compiler/nodes/cfg/Block;
66 70 14 i I
76 78 9 index I
private static void computeLoopPredecessors(org.graalvm.compiler.graph.NodeMap<org.graalvm.compiler.nodes.cfg.Block>, org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.LoopBeginNode);
descriptor: (Lorg/graalvm/compiler/graph/NodeMap;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/LoopBeginNode;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEndCount:()I
istore 3
start local 3 1: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.orderedLoopEnds:()[Lorg/graalvm/compiler/nodes/LoopEndNode;
astore 4
start local 4 2: iload 3
aload 4
arraylength
iadd
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 5
start local 5 3: iconst_0
istore 6
start local 6 4: goto 7
5: StackMap locals: org.graalvm.compiler.graph.NodeMap org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.LoopBeginNode int org.graalvm.compiler.nodes.LoopEndNode[] org.graalvm.compiler.nodes.cfg.Block[] int
StackMap stack:
aload 5
iload 6
aload 0
aload 2
iload 6
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEndAt:(I)Lorg/graalvm/compiler/nodes/EndNode;
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
aastore
6: iinc 6 1
StackMap locals:
StackMap stack:
7: iload 6
iload 3
if_icmplt 5
end local 6 8: iconst_0
istore 6
start local 6 9: goto 12
10: StackMap locals:
StackMap stack:
aload 5
iload 6
iload 3
iadd
aload 0
aload 4
iload 6
aaload
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
aastore
11: iinc 6 1
StackMap locals:
StackMap stack:
12: iload 6
aload 4
arraylength
if_icmplt 10
end local 6 13: aload 1
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPredecessors:([Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
14: return
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 15 0 nodeMap Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;
0 15 1 block Lorg/graalvm/compiler/nodes/cfg/Block;
0 15 2 loopBeginNode Lorg/graalvm/compiler/nodes/LoopBeginNode;
1 15 3 forwardEndCount I
2 15 4 loopEnds [Lorg/graalvm/compiler/nodes/LoopEndNode;
3 15 5 predecessors [Lorg/graalvm/compiler/nodes/cfg/Block;
4 8 6 i I
9 13 6 i I
Signature: (Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/LoopBeginNode;)V
MethodParameters:
Name Flags
nodeMap
block
loopBeginNode
private void computeProbabilities();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 30
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
1: aload 4
iload 2
aaload
astore 1
start local 1 2: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
astore 5
start local 5 3: aload 5
arraylength
ifne 6
4: dconst_1
dstore 6
start local 6 5: goto 23
end local 6 StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
6: aload 5
arraylength
iconst_1
if_icmpne 14
7: aload 5
iconst_0
aaload
astore 8
start local 8 8: aload 8
getfield org.graalvm.compiler.nodes.cfg.Block.probability:D
dstore 6
start local 6 9: aload 8
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessorCount:()I
iconst_1
if_icmple 23
10: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 11
aload 8
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
instanceof org.graalvm.compiler.nodes.ControlSplitNode
ifne 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals: double org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 9
start local 9 12: dload 6
aload 9
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.probability:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)D
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.multiplyProbabilities:(DD)D
dstore 6
end local 9 end local 8 13: goto 23
end local 6 14: StackMap locals:
StackMap stack:
aload 5
iconst_0
aaload
getfield org.graalvm.compiler.nodes.cfg.Block.probability:D
dstore 6
start local 6 15: iconst_1
istore 8
start local 8 16: goto 19
17: StackMap locals: double int
StackMap stack:
dload 6
aload 5
iload 8
aaload
getfield org.graalvm.compiler.nodes.cfg.Block.probability:D
dadd
dstore 6
18: iinc 8 1
StackMap locals:
StackMap stack:
19: iload 8
aload 5
arraylength
if_icmplt 17
end local 8 20: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
instanceof org.graalvm.compiler.nodes.LoopBeginNode
ifeq 23
21: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 8
start local 8 22: dload 6
aload 8
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.multiplyProbabilities:(DD)D
dstore 6
end local 8 23: StackMap locals:
StackMap stack:
dload 6
ldc 3.0549363634996047E-151
dcmpg
ifge 26
24: ldc 3.0549363634996047E-151
dstore 6
25: goto 28
StackMap locals:
StackMap stack:
26: dload 6
ldc 3.273390607896142E150
dcmpl
ifle 28
27: ldc 3.273390607896142E150
dstore 6
28: StackMap locals:
StackMap stack:
aload 1
dload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setProbability:(D)V
end local 6 end local 5 end local 1 29: iinc 2 1
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
30: iload 2
iload 3
if_icmplt 1
31: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
2 29 1 block Lorg/graalvm/compiler/nodes/cfg/Block;
3 29 5 predecessors [Lorg/graalvm/compiler/nodes/cfg/Block;
5 6 6 probability D
9 14 6 probability D
15 29 6 probability D
8 13 8 pred Lorg/graalvm/compiler/nodes/cfg/Block;
12 13 9 controlSplit Lorg/graalvm/compiler/nodes/ControlSplitNode;
16 20 8 i I
22 23 8 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
private void computeLoopInformation();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=18, args_size=1
start local 0 0: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.loops:Ljava/util/List;
1: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasLoops:()Z
ifeq 45
2: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
arraylength
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 1
start local 1 3: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 44
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
4: aload 5
iload 3
aaload
astore 2
start local 2 5: aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 6
start local 6 6: aload 6
instanceof org.graalvm.compiler.nodes.LoopBeginNode
ifeq 43
7: aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 7
start local 7 8: new org.graalvm.compiler.nodes.cfg.HIRLoop
dup
aload 7
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.loops:Ljava/util/List;
invokeinterface java.util.List.size:()I
aload 2
invokespecial org.graalvm.compiler.nodes.cfg.HIRLoop.<init>:(Lorg/graalvm/compiler/core/common/cfg/Loop;ILorg/graalvm/compiler/nodes/cfg/Block;)V
astore 8
start local 8 9: aload 7
ifnull 11
10: aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getChildren:()Ljava/util/List;
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
11: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.loops:Ljava/util/List;
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
12: aload 2
aload 8
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setLoop:(Lorg/graalvm/compiler/core/common/cfg/Loop;)V
13: aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
14: aload 6
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 9
start local 9 15: aload 9
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopEnds:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 11
goto 19
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
16: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopEndNode
astore 10
start local 10 17: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 10
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 12
start local 12 18: aload 12
aload 8
aload 1
iconst_1
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeLoopBlocks:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/core/common/cfg/Loop;[Lorg/graalvm/compiler/nodes/cfg/Block;Z)V
end local 12 end local 10 19: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 16
20: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
getstatic org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.AFTER_FSA:Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
if_acmpeq 43
21: aload 9
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopExits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 11
goto 27
StackMap locals:
StackMap stack:
22: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 10
start local 10 23: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 10
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 12
start local 12 24: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 25
aload 12
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
iconst_1
if_icmpeq 25
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
25: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopExitNode java.util.Iterator org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 12
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstPredecessor:()Lorg/graalvm/compiler/nodes/cfg/Block;
aload 8
aload 1
iconst_1
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeLoopBlocks:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/core/common/cfg/Loop;[Lorg/graalvm/compiler/nodes/cfg/Block;Z)V
26: aload 8
aload 12
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.addExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 12 end local 10 27: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
28: aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
invokeinterface java.util.List.size:()I
istore 10
start local 10 29: iconst_0
istore 11
start local 11 30: goto 42
31: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode int int
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
iload 11
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 12
start local 12 32: aload 12
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
dup
astore 16
arraylength
istore 15
iconst_0
istore 14
goto 40
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode int int org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
33: aload 16
iload 14
aaload
astore 13
start local 13 34: aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 8
if_acmpeq 39
35: aload 13
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 17
start local 17 36: aload 17
instanceof org.graalvm.compiler.nodes.LoopExitNode
ifeq 37
aload 17
checkcast org.graalvm.compiler.nodes.LoopExitNode
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
aload 9
if_acmpeq 39
37: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode int int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "Unexpected loop exit with %s, including whole branch in the loop"
aload 13
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;)V
38: aload 13
aload 8
aload 1
iconst_0
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.computeLoopBlocks:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/core/common/cfg/Loop;[Lorg/graalvm/compiler/nodes/cfg/Block;Z)V
end local 17 end local 13 39: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode int int org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 14 1
StackMap locals:
StackMap stack:
40: iload 14
iload 15
if_icmplt 33
end local 12 41: iinc 11 1
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode int int
StackMap stack:
42: iload 11
iload 10
if_icmplt 31
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 2 43: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
44: iload 3
iload 4
if_icmplt 4
end local 1 45: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
getstatic org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.AFTER_FSA:Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
if_acmpne 71
46: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 70
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
47: aload 4
iload 2
aaload
astore 1
start local 1 48: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnull 69
49: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 68
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
50: aload 8
iload 6
aaload
astore 5
start local 5 51: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
if_acmpeq 67
52: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnonnull 59
53: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
start local 9 54: goto 57
55: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.core.common.cfg.Loop
StackMap stack:
aload 9
aload 5
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.addExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
56: aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
57: StackMap locals:
StackMap stack:
aload 9
ifnonnull 55
end local 9 58: goto 67
59: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
if_acmpeq 67
60: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 61
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
if_icmplt 61
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
61: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 62
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokestatic org.graalvm.compiler.core.common.cfg.Loop.transitiveParentLoop:(Lorg/graalvm/compiler/core/common/cfg/Loop;Lorg/graalvm/compiler/core/common/cfg/Loop;)Z
ifeq 62
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
62: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
start local 9 63: goto 66
64: StackMap locals: org.graalvm.compiler.core.common.cfg.Loop
StackMap stack:
aload 9
aload 5
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.addExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
65: aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
66: StackMap locals:
StackMap stack:
aload 9
ifnull 67
aload 9
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
if_acmpne 64
end local 9 end local 5 67: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
68: iload 6
iload 7
if_icmplt 50
end local 1 69: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
70: iload 2
iload 3
if_icmplt 47
71: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 72 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
3 45 1 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
5 43 2 block Lorg/graalvm/compiler/nodes/cfg/Block;
6 43 6 beginNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
8 43 7 parent Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
9 43 8 loop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
15 43 9 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
17 19 10 end Lorg/graalvm/compiler/nodes/LoopEndNode;
18 19 12 endBlock Lorg/graalvm/compiler/nodes/cfg/Block;
23 27 10 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
24 27 12 exitBlock Lorg/graalvm/compiler/nodes/cfg/Block;
29 43 10 size I
30 43 11 i I
32 41 12 b Lorg/graalvm/compiler/nodes/cfg/Block;
34 39 13 sux Lorg/graalvm/compiler/nodes/cfg/Block;
36 39 17 begin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
48 69 1 b Lorg/graalvm/compiler/nodes/cfg/Block;
51 67 5 succ Lorg/graalvm/compiler/nodes/cfg/Block;
54 58 9 curr Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
63 67 9 curr Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
private static void computeLoopBlocks(org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block>, org.graalvm.compiler.nodes.cfg.Block[], );
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/core/common/cfg/Loop;[Lorg/graalvm/compiler/nodes/cfg/Block;Z)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
if_acmpeq 18
1: aload 0
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setLoop:(Lorg/graalvm/compiler/core/common/cfg/Loop;)V
2: aload 2
iconst_0
aload 0
aastore
3: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
aload 0
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
4: iconst_0
istore 4
start local 4 5: StackMap locals: int
StackMap stack:
aload 2
iload 4
iinc 4 -1
aaload
astore 5
start local 5 6: iload 3
ifeq 7
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
goto 8
StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
7: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
StackMap locals:
StackMap stack: org.graalvm.compiler.nodes.cfg.Block[]
8: dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 15
StackMap locals: org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
9: aload 9
iload 7
aaload
astore 6
start local 6 10: aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
if_acmpeq 14
11: aload 2
iinc 4 1
iload 4
aload 6
aastore
12: aload 6
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setLoop:(Lorg/graalvm/compiler/core/common/cfg/Loop;)V
13: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
aload 6
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 6 14: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
15: iload 7
iload 8
if_icmplt 9
end local 5 16: iload 4
17: ifge 5
end local 4 18: StackMap locals: org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.cfg.Block[] int
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 start Lorg/graalvm/compiler/nodes/cfg/Block;
0 19 1 loop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
0 19 2 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
0 19 3 usePred Z
5 18 4 tos I
6 16 5 block Lorg/graalvm/compiler/nodes/cfg/Block;
10 14 6 b Lorg/graalvm/compiler/nodes/cfg/Block;
Signature: (Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;[Lorg/graalvm/compiler/nodes/cfg/Block;Z)V
MethodParameters:
Name Flags
start
loop
stack
usePred
public void computePostdominators();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
astore 1
start local 1 1: aload 1
arraylength
iconst_1
isub
istore 2
start local 2 2: goto 23
3: StackMap locals: org.graalvm.compiler.nodes.cfg.Block[] int
StackMap stack:
aload 1
iload 2
aaload
astore 3
start local 3 4: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopEnd:()Z
ifeq 6
5: goto 22
6: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessorCount:()I
ifne 8
7: goto 22
8: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
iconst_0
aaload
astore 4
start local 4 9: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessorCount:()I
iconst_1
if_icmpne 12
10: aload 3
aload 4
putfield org.graalvm.compiler.nodes.cfg.Block.postdominator:Lorg/graalvm/compiler/nodes/cfg/Block;
11: goto 22
12: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 4
astore 5
start local 5 13: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 19
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
14: aload 9
iload 7
aaload
astore 6
start local 6 15: aload 5
aload 6
invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.commonPostdominator:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
astore 5
16: aload 5
ifnonnull 18
17: goto 22
end local 6 18: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
19: iload 7
iload 8
if_icmplt 14
20: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 21
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
aload 5
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 21
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Block "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " has a wrong post dominator: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
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
21: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph org.graalvm.compiler.nodes.cfg.Block[] int org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 3
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setPostDominator:(Lorg/graalvm/compiler/nodes/cfg/Block;)V
end local 5 end local 4 end local 3 22: StackMap locals:
StackMap stack:
iinc 2 -1
StackMap locals:
StackMap stack:
23: iload 2
ifge 3
end local 2 24: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
1 25 1 reversePostOrderTmp [Lorg/graalvm/compiler/nodes/cfg/Block;
2 24 2 j I
4 22 3 block Lorg/graalvm/compiler/nodes/cfg/Block;
9 22 4 firstSucc Lorg/graalvm/compiler/nodes/cfg/Block;
13 22 5 postdominator Lorg/graalvm/compiler/nodes/cfg/Block;
15 18 6 sux Lorg/graalvm/compiler/nodes/cfg/Block;
private static org.graalvm.compiler.nodes.cfg.Block commonPostdominator(org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
astore 2
start local 2 1: aload 1
astore 3
start local 3 2: goto 11
3: StackMap locals: org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
if_icmpge 7
4: aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
astore 2
5: aload 2
ifnonnull 11
6: aconst_null
areturn
7: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 8
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getId:()I
if_icmplt 8
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
8: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
astore 3
9: aload 3
ifnonnull 11
10: aconst_null
areturn
11: StackMap locals:
StackMap stack:
aload 2
aload 3
if_acmpne 3
12: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 a Lorg/graalvm/compiler/nodes/cfg/Block;
0 13 1 b Lorg/graalvm/compiler/nodes/cfg/Block;
1 13 2 iterA Lorg/graalvm/compiler/nodes/cfg/Block;
2 13 3 iterB Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
a
b
public void setNodeToBlock(org.graalvm.compiler.graph.NodeMap<org.graalvm.compiler.nodes.cfg.Block>);
descriptor: (Lorg/graalvm/compiler/graph/NodeMap;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 2 1 nodeMap Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;
Signature: (Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;)V
MethodParameters:
Name Flags
nodeMap
public static double multiplyProbabilities(double, double);
descriptor: (DD)D
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 start local 2 0: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 2
dload 0
invokestatic java.lang.Double.isNaN:(D)Z
ifne 1
dload 2
invokestatic java.lang.Double.isNaN:(D)Z
ifne 1
dload 0
invokestatic java.lang.Double.isFinite:(D)Z
ifeq 1
dload 2
invokestatic java.lang.Double.isFinite:(D)Z
ifne 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
dload 0
invokestatic java.lang.String.valueOf:(D)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
dload 2
invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
dload 0
dload 2
dmul
dstore 4
start local 4 3: dload 4
ldc 3.273390607896142E150
dcmpl
ifle 5
4: ldc 3.273390607896142E150
dreturn
5: StackMap locals: double
StackMap stack:
dload 4
ldc 3.0549363634996047E-151
dcmpg
ifge 7
6: ldc 3.0549363634996047E-151
dreturn
7: StackMap locals:
StackMap stack:
dload 4
dreturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 a D
0 8 2 b D
3 8 4 r D
MethodParameters:
Name Flags
a
b
public java.util.Collection getLoops();
descriptor: ()Ljava/util/Collection;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getLoops:()Ljava/util/List;
areturn
LocalVariableTable:
Start End Slot Name Signature
public org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] getBlocks();
descriptor: ()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getBlocks:()[Lorg/graalvm/compiler/nodes/cfg/Block;
areturn
LocalVariableTable:
Start End Slot Name Signature
public org.graalvm.compiler.core.common.cfg.AbstractBlockBase getStartBlock();
descriptor: ()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getStartBlock:()Lorg/graalvm/compiler/nodes/cfg/Block;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Lorg/graalvm/compiler/core/common/cfg/AbstractControlFlowGraph<Lorg/graalvm/compiler/nodes/cfg/Block;>;
SourceFile: "ControlFlowGraph.java"
NestMembers:
org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor
InnerClasses:
public final GuardsStage = org.graalvm.compiler.nodes.StructuredGraph$GuardsStage of org.graalvm.compiler.nodes.StructuredGraph
public final DeferredExit = org.graalvm.compiler.nodes.cfg.ControlFlowGraph$DeferredExit of org.graalvm.compiler.nodes.cfg.ControlFlowGraph
public abstract RecursiveVisitor = org.graalvm.compiler.nodes.cfg.ControlFlowGraph$RecursiveVisitor of org.graalvm.compiler.nodes.cfg.ControlFlowGraph