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;>;>;
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
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=9, 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_1
istore 2
start local 2 3: goto 20
4: StackMap locals: org.graalvm.compiler.nodes.cfg.Block[] int
StackMap stack:
aload 1
iload 2
aaload
astore 3
start local 3 5: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 6
aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
ifgt 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aconst_null
astore 4
start local 4 7: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[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 14
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 top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
8: aload 8
iload 6
aaload
astore 5
start local 5 9: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopEnd:()Z
ifne 13
10: aload 4
ifnonnull 11
aload 5
goto 12
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 int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
11: aload 4
aload 5
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
12: astore 4
end local 5 13: 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 top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
14: iload 6
iload 7
if_icmplt 8
15: aload 3
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominator:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
16: aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominated:()Ljava/util/List;
invokestatic java.util.Collections.emptyList:()Ljava/util/List;
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
ifeq 18
17: aload 4
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominated:(Ljava/util/List;)V
18: 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
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominated:()Ljava/util/List;
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 4 end local 3 19: iinc 2 1
StackMap locals:
StackMap stack:
20: iload 2
aload 1
arraylength
if_icmplt 4
end local 2 21: 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
22: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
2 23 1 blocks [Lorg/graalvm/compiler/nodes/cfg/Block;
3 21 2 i I
5 19 3 block Lorg/graalvm/compiler/nodes/cfg/Block;
7 19 4 dominator Lorg/graalvm/compiler/nodes/cfg/Block;
9 13 5 pred 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=9, 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.getDominated:()Ljava/util/List;
astore 6
start local 6 6: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatorNumber:()I
iconst_m1
if_icmpne 18
7: aload 5
iload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setDominatorNumber:(I)V
8: aload 6
invokeinterface java.util.List.size:()I
ifle 14
9: aload 6
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 12
StackMap locals: org.graalvm.compiler.nodes.cfg.Block int org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block java.util.List top java.util.Iterator
StackMap stack:
10: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 7
start local 7 11: aload 2
iinc 3 1
iload 3
aload 7
aastore
end local 7 12: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
13: goto 16
14: StackMap locals: org.graalvm.compiler.nodes.cfg.Block int org.graalvm.compiler.nodes.cfg.Block[] int int org.graalvm.compiler.nodes.cfg.Block java.util.List
StackMap stack:
aload 5
iload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setMaxChildDomNumber:(I)V
15: iinc 3 -1
16: StackMap locals:
StackMap stack:
iinc 4 1
17: goto 20
18: StackMap locals:
StackMap stack:
aload 5
aload 6
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getMaxChildDominatorNumber:()I
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setMaxChildDomNumber:(I)V
19: iinc 3 -1
end local 6 end local 5 20: StackMap locals:
StackMap stack:
iload 3
21: ifge 4
22: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 block Lorg/graalvm/compiler/nodes/cfg/Block;
0 23 1 size I
1 23 2 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
3 23 3 tos I
4 23 4 myNumber I
5 20 5 cur Lorg/graalvm/compiler/nodes/cfg/Block;
6 20 6 dominated Ljava/util/List<Lorg/graalvm/compiler/nodes/cfg/Block;>;
11 12 7 b 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;>;>;
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 69
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 53
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 53
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 53
40: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 41
aload 9
instanceof org.graalvm.compiler.nodes.AbstractEndNode
ifeq 41
new java.lang.AssertionError
dup
ldc "Algorithm only supports EndNode and LoopEndNode."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
41: StackMap locals:
StackMap stack:
iload 5
istore 10
start local 10 42: iconst_1
anewarray org.graalvm.compiler.nodes.cfg.Block
dup
iconst_0
aload 7
aastore
astore 11
start local 11 43: 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 48
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:
44: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 12
start local 12 45: 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 46: aload 4
iinc 5 1
iload 5
aload 14
aastore
47: 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 48: StackMap locals:
StackMap stack:
aload 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 44
49: iload 5
iload 10
isub
istore 12
start local 12 50: iload 12
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 13
start local 13 51: 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
52: 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 53: 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
54: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 10
start local 10 55: aload 10
instanceof org.graalvm.compiler.nodes.LoopBeginNode
ifeq 58
56: 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
57: goto 77
StackMap locals: org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
58: aload 10
instanceof org.graalvm.compiler.nodes.MergeNode
ifeq 77
59: aload 10
checkcast org.graalvm.compiler.nodes.MergeNode
astore 11
start local 11 60: aload 11
invokevirtual org.graalvm.compiler.nodes.MergeNode.forwardEndCount:()I
istore 12
start local 12 61: iload 12
anewarray org.graalvm.compiler.nodes.cfg.Block
astore 13
start local 13 62: iconst_0
istore 14
start local 14 63: goto 66
64: 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
65: iinc 14 1
StackMap locals:
StackMap stack:
66: iload 14
iload 12
if_icmplt 64
end local 14 67: 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 68: goto 77
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:
69: iload 8
bipush -2
if_icmpne 76
70: iinc 5 -1
71: iinc 2 1
72: iload 1
iload 2
isub
istore 9
start local 9 73: aload 4
iload 9
aload 7
aastore
74: aload 7
iload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setId:(I)V
end local 9 75: goto 77
76: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
end local 8 end local 7 77: StackMap locals:
StackMap stack:
iload 5
78: ifge 14
79: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 80
iload 2
iload 1
if_icmpeq 80
new java.lang.AssertionError
dup
ldc "all blocks must be reachable"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
80: StackMap locals:
StackMap stack:
aload 0
aload 4
putfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.reversePostOrder:[Lorg/graalvm/compiler/nodes/cfg/Block;
81: 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 82 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
1 82 1 numBlocks I
3 6 2 begin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
4 6 4 block Lorg/graalvm/compiler/nodes/cfg/Block;
8 82 2 count I
9 82 3 nodeMap Lorg/graalvm/compiler/graph/NodeMap<Lorg/graalvm/compiler/nodes/cfg/Block;>;
10 82 4 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
11 82 5 tos I
12 82 6 startBlock Lorg/graalvm/compiler/nodes/cfg/Block;
15 77 7 block Lorg/graalvm/compiler/nodes/cfg/Block;
16 77 8 id I
18 68 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;
42 53 10 startTos I
43 53 11 ifPred [Lorg/graalvm/compiler/nodes/cfg/Block;
45 48 12 suxNode Lorg/graalvm/compiler/graph/Node;
46 48 14 sux Lorg/graalvm/compiler/nodes/cfg/Block;
50 53 12 suxCount I
51 53 13 successors [Lorg/graalvm/compiler/nodes/cfg/Block;
55 68 10 beginNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
60 68 11 mergeNode Lorg/graalvm/compiler/nodes/MergeNode;
61 68 12 forwardEndCount I
62 68 13 predecessors [Lorg/graalvm/compiler/nodes/cfg/Block;
63 67 14 i I
73 75 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 31
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
dmul
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
dmul
dstore 6
end local 8 23: StackMap locals:
StackMap stack:
dload 6
ldc 3.0549363634996047E-151
dcmpg
ifge 26
24: aload 1
ldc 3.0549363634996047E-151
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setProbability:(D)V
25: goto 30
StackMap locals:
StackMap stack:
26: dload 6
ldc 3.273390607896142E150
dcmpl
ifle 29
27: aload 1
ldc 3.273390607896142E150
invokevirtual org.graalvm.compiler.nodes.cfg.Block.setProbability:(D)V
28: goto 30
29: 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 30: 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:
31: iload 2
iload 3
if_icmplt 1
32: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
2 30 1 block Lorg/graalvm/compiler/nodes/cfg/Block;
3 30 5 predecessors [Lorg/graalvm/compiler/nodes/cfg/Block;
5 6 6 probability D
9 14 6 probability D
15 30 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=17, 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 42
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 41
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 40
7: new org.graalvm.compiler.nodes.cfg.HIRLoop
dup
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
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 7
start local 7 8: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.loops:Ljava/util/List;
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
9: aload 2
aload 7
putfield org.graalvm.compiler.nodes.cfg.Block.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
10: aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
11: aload 6
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 8
start local 8 12: aload 8
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 10
goto 16
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.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
13: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopEndNode
astore 9
start local 9 14: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 9
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 15: aload 11
aload 7
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 11 end local 9 16: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
17: 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 40
18: aload 8
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 10
goto 24
StackMap locals:
StackMap stack:
19: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 9
start local 9 20: aload 0
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.nodeToBlock:Lorg/graalvm/compiler/graph/NodeMap;
aload 9
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: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 22
aload 11
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
iconst_1
if_icmpeq 22
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
22: 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.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopExitNode java.util.Iterator org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 11
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstPredecessor:()Lorg/graalvm/compiler/nodes/cfg/Block;
aload 7
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
23: aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
aload 11
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 11 end local 9 24: 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.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
25: aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
invokeinterface java.util.List.size:()I
istore 9
start local 9 26: iconst_0
istore 10
start local 10 27: goto 39
28: 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.nodes.LoopBeginNode int int
StackMap stack:
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
iload 10
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 11
start local 11 29: aload 11
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
dup
astore 15
arraylength
istore 14
iconst_0
istore 13
goto 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.nodes.LoopBeginNode int int org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
30: aload 15
iload 13
aaload
astore 12
start local 12 31: aload 12
getfield org.graalvm.compiler.nodes.cfg.Block.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 7
if_acmpeq 36
32: aload 12
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 16
start local 16 33: aload 16
instanceof org.graalvm.compiler.nodes.LoopExitNode
ifeq 34
aload 16
checkcast org.graalvm.compiler.nodes.LoopExitNode
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
aload 8
if_acmpeq 36
34: 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.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:
iconst_3
ldc "Unexpected loop exit with %s, including whole branch in the loop"
aload 12
invokestatic org.graalvm.compiler.debug.Debug.log:(ILjava/lang/String;Ljava/lang/Object;)V
35: aload 12
aload 7
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 16 end local 12 36: 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.nodes.LoopBeginNode int int org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
37: iload 13
iload 14
if_icmplt 30
end local 11 38: iinc 10 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.nodes.LoopBeginNode int int
StackMap stack:
39: iload 10
iload 9
if_icmplt 28
end local 10 end local 9 end local 8 end local 7 end local 6 end local 2 40: 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:
41: iload 3
iload 4
if_icmplt 4
end local 1 42: 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 68
43: 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 67
StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
44: aload 4
iload 2
aaload
astore 1
start local 1 45: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnull 66
46: 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 65
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:
47: aload 8
iload 6
aaload
astore 5
start local 5 48: 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 64
49: aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnonnull 56
50: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
start local 9 51: goto 54
52: 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
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
aload 5
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
53: aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
54: StackMap locals:
StackMap stack:
aload 9
ifnonnull 52
end local 9 55: goto 64
56: 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 64
57: getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 58
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 58
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
58: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.$assertionsDisabled:Z
ifne 59
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 59
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
59: 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 60: goto 63
61: StackMap locals: org.graalvm.compiler.core.common.cfg.Loop
StackMap stack:
aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
aload 5
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
62: aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 9
63: StackMap locals:
StackMap stack:
aload 9
ifnull 64
aload 9
aload 5
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
if_acmpne 61
end local 9 end local 5 64: 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:
65: iload 6
iload 7
if_icmplt 47
end local 1 66: 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:
67: iload 2
iload 3
if_icmplt 44
68: StackMap locals: org.graalvm.compiler.nodes.cfg.ControlFlowGraph
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 69 0 this Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
3 42 1 stack [Lorg/graalvm/compiler/nodes/cfg/Block;
5 40 2 block Lorg/graalvm/compiler/nodes/cfg/Block;
6 40 6 beginNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
8 40 7 loop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
12 40 8 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
14 16 9 end Lorg/graalvm/compiler/nodes/LoopEndNode;
15 16 11 endBlock Lorg/graalvm/compiler/nodes/cfg/Block;
20 24 9 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
21 24 11 exitBlock Lorg/graalvm/compiler/nodes/cfg/Block;
26 40 9 size I
27 40 10 i I
29 38 11 b Lorg/graalvm/compiler/nodes/cfg/Block;
31 36 12 sux Lorg/graalvm/compiler/nodes/cfg/Block;
33 36 16 begin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
45 66 1 b Lorg/graalvm/compiler/nodes/cfg/Block;
48 64 5 succ Lorg/graalvm/compiler/nodes/cfg/Block;
51 55 9 curr Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
60 64 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
getfield org.graalvm.compiler.nodes.cfg.Block.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 1
if_acmpeq 18
1: aload 0
aload 1
putfield org.graalvm.compiler.nodes.cfg.Block.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
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
getfield org.graalvm.compiler.nodes.cfg.Block.loop: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
putfield org.graalvm.compiler.nodes.cfg.Block.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
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
putfield org.graalvm.compiler.nodes.cfg.Block.postdominator:Lorg/graalvm/compiler/nodes/cfg/Block;
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 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"
InnerClasses:
public final GuardsStage = org.graalvm.compiler.nodes.StructuredGraph$GuardsStage of org.graalvm.compiler.nodes.StructuredGraph