class org.graalvm.compiler.nodes.LoopDetector implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.graalvm.compiler.nodes.LoopDetector
super_class: java.lang.Object
{
private final org.graalvm.compiler.nodes.StructuredGraph graph;
descriptor: Lorg/graalvm/compiler/nodes/StructuredGraph;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.nodes.GraphDecoder$MethodScope methodScope;
descriptor: Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.graalvm.compiler.nodes.LoopDetector$Loop irreducibleLoopHandler;
descriptor: Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.nodes.extended.IntegerSwitchNode irreducibleLoopSwitch;
descriptor: Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
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/LoopDetector;
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.LoopDetector.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.nodes.GraphDecoder$MethodScope);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
2: aload 0
aload 2
putfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
0 4 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 4 2 methodScope Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
MethodParameters:
Name Flags
graph
methodScope
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 1
start local 1 1: aload 1
iconst_4
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
ldc "Before loop detection"
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
2: aload 0
invokevirtual org.graalvm.compiler.nodes.LoopDetector.findLoops:()Ljava/util/List;
astore 2
start local 2 3: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 4
aload 2
aload 2
invokeinterface java.util.List.size:()I
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
if_acmpeq 4
new java.lang.AssertionError
dup
ldc "outermost loop must be the last element in the list"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals: org.graalvm.compiler.debug.DebugContext java.util.List
StackMap stack:
aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 14
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.debug.DebugContext java.util.List top java.util.Iterator
StackMap stack:
5: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopDetector$Loop
astore 3
start local 3 6: aload 3
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 8
7: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 14
aload 3
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
if_acmpeq 14
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
8: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.debug.DebugContext java.util.List org.graalvm.compiler.nodes.LoopDetector$Loop java.util.Iterator
StackMap stack:
aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopDetector.findLoopExits:(Lorg/graalvm/compiler/nodes/LoopDetector$Loop;)V
9: aload 3
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.irreducible:Z
ifeq 12
10: aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopDetector.handleIrreducibleLoop:(Lorg/graalvm/compiler/nodes/LoopDetector$Loop;)V
11: goto 13
12: StackMap locals:
StackMap stack:
aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopDetector.insertLoopNodes:(Lorg/graalvm/compiler/nodes/LoopDetector$Loop;)V
13: StackMap locals:
StackMap stack:
aload 1
iconst_4
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
ldc "After handling of loop %s"
aload 3
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
end local 3 14: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.debug.DebugContext java.util.List top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
15: aload 0
invokevirtual org.graalvm.compiler.nodes.LoopDetector.logIrreducibleLoops:()V
16: aload 1
iconst_4
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
ldc "After loop detection"
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
17: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
1 18 1 debug Lorg/graalvm/compiler/debug/DebugContext;
3 18 2 orderedLoops Ljava/util/List<Lorg/graalvm/compiler/nodes/LoopDetector$Loop;>;
6 14 3 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
private java.util.List<org.graalvm.compiler.nodes.LoopDetector$Loop> findLoops();
descriptor: ()Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=1
start local 0 0: getstatic org.graalvm.util.Equivalence.IDENTITY:Lorg/graalvm/util/Equivalence;
invokestatic org.graalvm.util.EconomicMap.create:(Lorg/graalvm/util/Equivalence;)Lorg/graalvm/util/EconomicMap;
astore 1
start local 1 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 2: aload 0
aload 0
aload 1
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionHead:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.LoopDetector.findOrCreateLoop:(Lorg/graalvm/util/EconomicMap;Lorg/graalvm/compiler/nodes/MergeNode;)Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
putfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
3: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.createNodeBitMap:()Lorg/graalvm/compiler/graph/NodeBitMap;
astore 3
start local 3 4: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.createNodeBitMap:()Lorg/graalvm/compiler/graph/NodeBitMap;
astore 4
start local 4 5: new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
astore 5
start local 5 6: aload 3
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionHead:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
7: aload 5
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionHead:Lorg/graalvm/compiler/nodes/MergeNode;
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
8: goto 32
9: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.util.EconomicMap java.util.List org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.graph.NodeBitMap java.util.Deque
StackMap stack:
aload 5
invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 6
start local 6 10: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 11
aload 3
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals: org.graalvm.compiler.graph.Node
StackMap stack:
aload 4
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 20
12: aload 5
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
pop
13: aload 4
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.clear:(Lorg/graalvm/compiler/graph/Node;)V
14: aload 6
instanceof org.graalvm.compiler.nodes.MergeNode
ifeq 32
15: aload 1
aload 6
checkcast org.graalvm.compiler.nodes.MergeNode
invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopDetector$Loop
astore 7
start local 7 16: aload 7
ifnull 32
17: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 18
aload 2
aload 7
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 18
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
18: StackMap locals: org.graalvm.compiler.nodes.LoopDetector$Loop
StackMap stack:
aload 2
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 7 19: goto 32
20: StackMap locals:
StackMap stack:
aload 4
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
21: aload 6
invokevirtual org.graalvm.compiler.graph.Node.cfgSuccessors:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 8
goto 31
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.util.EconomicMap java.util.List org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node top java.util.Iterator
StackMap stack:
22: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 7
start local 7 23: aload 4
aload 7
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 28
24: aload 0
aload 1
aload 7
checkcast org.graalvm.compiler.nodes.MergeNode
invokevirtual org.graalvm.compiler.nodes.LoopDetector.findOrCreateLoop:(Lorg/graalvm/util/EconomicMap;Lorg/graalvm/compiler/nodes/MergeNode;)Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
astore 9
start local 9 25: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 26
aload 9
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
aload 6
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 26
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
26: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.util.EconomicMap java.util.List org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.LoopDetector$Loop
StackMap stack:
aload 9
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
aload 6
checkcast org.graalvm.compiler.nodes.EndNode
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 9 27: goto 31
StackMap locals:
StackMap stack:
28: aload 3
aload 7
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 31
29: aload 3
aload 7
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
30: aload 5
aload 7
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
end local 7 31: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.util.EconomicMap java.util.List org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
end local 6 32: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.util.EconomicMap java.util.List org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.graph.NodeBitMap java.util.Deque
StackMap stack:
aload 5
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 9
33: aload 2
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 34 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
1 34 1 unorderedLoops Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/MergeNode;Lorg/graalvm/compiler/nodes/LoopDetector$Loop;>;
2 34 2 orderedLoops Ljava/util/List<Lorg/graalvm/compiler/nodes/LoopDetector$Loop;>;
4 34 3 visited Lorg/graalvm/compiler/graph/NodeBitMap;
5 34 4 active Lorg/graalvm/compiler/graph/NodeBitMap;
6 34 5 stack Ljava/util/Deque<Lorg/graalvm/compiler/graph/Node;>;
10 32 6 current Lorg/graalvm/compiler/graph/Node;
16 19 7 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
23 31 7 successor Lorg/graalvm/compiler/graph/Node;
25 27 9 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
Signature: ()Ljava/util/List<Lorg/graalvm/compiler/nodes/LoopDetector$Loop;>;
private org.graalvm.compiler.nodes.LoopDetector$Loop findOrCreateLoop(org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.MergeNode, org.graalvm.compiler.nodes.LoopDetector$Loop>, org.graalvm.compiler.nodes.MergeNode);
descriptor: (Lorg/graalvm/util/EconomicMap;Lorg/graalvm/compiler/nodes/MergeNode;)Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionMerges:Lorg/graalvm/util/EconomicSet;
aload 2
invokeinterface org.graalvm.util.EconomicSet.contains:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
aload 2
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 1
aload 2
invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopDetector$Loop
astore 3
start local 3 2: aload 3
ifnonnull 6
3: new org.graalvm.compiler.nodes.LoopDetector$Loop
dup
invokespecial org.graalvm.compiler.nodes.LoopDetector$Loop.<init>:()V
astore 3
4: aload 3
aload 2
putfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
5: aload 1
aload 2
aload 3
invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: StackMap locals: org.graalvm.compiler.nodes.LoopDetector$Loop
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
0 7 1 unorderedLoops Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/MergeNode;Lorg/graalvm/compiler/nodes/LoopDetector$Loop;>;
0 7 2 loopHeader Lorg/graalvm/compiler/nodes/MergeNode;
2 7 3 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
Signature: (Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/MergeNode;Lorg/graalvm/compiler/nodes/LoopDetector$Loop;>;Lorg/graalvm/compiler/nodes/MergeNode;)Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
MethodParameters:
Name Flags
unorderedLoops
loopHeader
private void findLoopExits(org.graalvm.compiler.nodes.LoopDetector$Loop);
descriptor: (Lorg/graalvm/compiler/nodes/LoopDetector$Loop;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=11, args_size=2
start local 0 start local 1 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 1: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.createNodeBitMap:()Lorg/graalvm/compiler/graph/NodeBitMap;
astore 3
start local 3 2: new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
astore 4
start local 4 3: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 7
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque top java.util.Iterator
StackMap stack:
4: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.EndNode
astore 5
start local 5 5: aload 4
aload 5
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
6: aload 3
aload 5
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
end local 5 7: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
8: goto 36
9: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque
StackMap stack:
aload 4
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 5
start local 5 10: aload 5
aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
if_acmpne 12
11: goto 36
12: StackMap locals: org.graalvm.compiler.graph.Node
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.methodStartMark:Lorg/graalvm/compiler/graph/Graph$Mark;
aload 5
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.isNew:(Lorg/graalvm/compiler/graph/Graph$Mark;Lorg/graalvm/compiler/graph/Node;)Z
ifne 15
13: aload 1
iconst_1
putfield org.graalvm.compiler.nodes.LoopDetector$Loop.irreducible:Z
14: return
15: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.graph.Node.cfgPredecessors:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 7
goto 35
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node top java.util.Iterator
StackMap stack:
16: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 6
start local 6 17: aload 6
instanceof org.graalvm.compiler.nodes.LoopExitNode
ifeq 27
18: aload 6
checkcast org.graalvm.compiler.nodes.LoopExitNode
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 8
start local 8 19: aload 3
aload 8
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 35
20: aload 4
aload 8
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
21: aload 3
aload 8
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
22: 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 25
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
23: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 9
start local 9 24: aload 2
aload 9
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 9 25: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
end local 8 26: goto 35
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
27: aload 3
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 35
28: aload 4
aload 6
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
29: aload 3
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
30: aload 6
instanceof org.graalvm.compiler.nodes.ControlSplitNode
ifeq 35
31: aload 6
invokevirtual org.graalvm.compiler.graph.Node.cfgSuccessors:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 9
goto 34
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node org.graalvm.compiler.graph.Node java.util.Iterator top java.util.Iterator
StackMap stack:
32: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 8
start local 8 33: aload 2
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 8 34: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 32
end local 6 35: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 16
end local 5 36: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque
StackMap stack:
aload 4
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 9
37: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 43
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque top java.util.Iterator
StackMap stack:
38: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 5
start local 5 39: aload 3
aload 5
invokevirtual org.graalvm.compiler.graph.NodeBitMap.contains:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 43
40: aload 4
aload 5
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
41: aload 3
aload 5
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
42: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 43
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionMerges:Lorg/graalvm/util/EconomicSet;
aload 5
invokeinterface org.graalvm.util.EconomicSet.contains:(Ljava/lang/Object;)Z
ifeq 43
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 5 43: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 38
44: goto 59
45: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque
StackMap stack:
aload 4
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 5
start local 5 46: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 47
aload 3
aload 5
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 47
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
47: StackMap locals: org.graalvm.compiler.graph.Node
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 48
aload 5
instanceof org.graalvm.compiler.nodes.ControlSinkNode
ifne 48
aload 5
instanceof org.graalvm.compiler.nodes.LoopEndNode
ifne 48
aload 5
invokevirtual org.graalvm.compiler.graph.Node.cfgSuccessors:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
invokeinterface java.util.Iterator.hasNext:()Z
ifne 48
new java.lang.AssertionError
dup
ldc "Must not reach a node that has not been decoded yet"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
48: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.graph.Node.cfgSuccessors:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 7
goto 58
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node top java.util.Iterator
StackMap stack:
49: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 6
start local 6 50: aload 3
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 58
51: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionMerges:Lorg/graalvm/util/EconomicSet;
aload 6
invokeinterface org.graalvm.util.EconomicSet.contains:(Ljava/lang/Object;)Z
ifeq 56
52: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 53
aload 6
instanceof org.graalvm.compiler.nodes.MergeNode
ifne 53
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
53: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 54
aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.exits:Ljava/util/List;
aload 5
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 54
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
54: StackMap locals:
StackMap stack:
aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.exits:Ljava/util/List;
aload 5
checkcast org.graalvm.compiler.nodes.AbstractEndNode
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
55: goto 58
56: StackMap locals:
StackMap stack:
aload 3
aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.mark:(Lorg/graalvm/compiler/graph/Node;)V
57: aload 4
aload 6
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
end local 6 58: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque org.graalvm.compiler.graph.Node top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 49
end local 5 59: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.Deque
StackMap stack:
aload 4
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 45
60: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
0 61 1 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
1 61 2 possibleExits Ljava/util/List<Lorg/graalvm/compiler/graph/Node;>;
2 61 3 visited Lorg/graalvm/compiler/graph/NodeBitMap;
3 61 4 stack Ljava/util/Deque<Lorg/graalvm/compiler/graph/Node;>;
5 7 5 loopEnd Lorg/graalvm/compiler/nodes/EndNode;
10 36 5 current Lorg/graalvm/compiler/graph/Node;
17 35 6 predecessor Lorg/graalvm/compiler/graph/Node;
19 26 8 innerLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
24 25 9 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
33 34 8 succ Lorg/graalvm/compiler/graph/Node;
39 43 5 succ Lorg/graalvm/compiler/graph/Node;
46 59 5 current Lorg/graalvm/compiler/graph/Node;
50 58 6 successor Lorg/graalvm/compiler/graph/Node;
MethodParameters:
Name Flags
loop
private void insertLoopNodes(org.graalvm.compiler.nodes.LoopDetector$Loop);
descriptor: (Lorg/graalvm/compiler/nodes/LoopDetector$Loop;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=14, args_size=2
start local 0 start local 1 0: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
astore 2
start local 2 1: aload 2
invokevirtual org.graalvm.compiler.nodes.MergeNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
invokevirtual org.graalvm.compiler.nodes.FrameState.duplicate:()Lorg/graalvm/compiler/nodes/FrameState;
astore 3
start local 3 2: aload 2
invokevirtual org.graalvm.compiler.nodes.MergeNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 4
start local 4 3: aload 2
aconst_null
invokevirtual org.graalvm.compiler.nodes.MergeNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
4: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.EndNode
dup
invokespecial org.graalvm.compiler.nodes.EndNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.EndNode
astore 5
start local 5 5: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.LoopBeginNode
dup
invokespecial org.graalvm.compiler.nodes.LoopBeginNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 6
start local 6 6: aload 2
aload 5
invokevirtual org.graalvm.compiler.nodes.MergeNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
7: aload 6
aload 5
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.addForwardEnd:(Lorg/graalvm/compiler/nodes/EndNode;)V
8: aload 6
aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
9: aload 6
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
10: aload 2
invokevirtual org.graalvm.compiler.nodes.MergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
astore 7
start local 7 11: new java.util.ArrayList
dup
aload 7
invokeinterface java.util.List.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 8
start local 8 12: iconst_0
istore 9
start local 9 13: goto 20
14: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.MergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.LoopBeginNode java.util.List java.util.List int
StackMap stack:
aload 7
iload 9
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 10
start local 10 15: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.ValuePhiNode
dup
aload 10
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.PhiNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
aload 6
invokespecial org.graalvm.compiler.nodes.ValuePhiNode.<init>:(Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addWithoutUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 11
start local 11 16: aload 10
aload 11
invokevirtual org.graalvm.compiler.nodes.PhiNode.replaceAtUsages:(Lorg/graalvm/compiler/graph/Node;)V
17: aload 11
aload 10
invokevirtual org.graalvm.compiler.nodes.PhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
18: aload 8
aload 11
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 11 end local 10 19: iinc 9 1
StackMap locals:
StackMap stack:
20: iload 9
aload 7
invokeinterface java.util.List.size:()I
if_icmplt 14
end local 9 21: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 33
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.MergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.LoopBeginNode java.util.List java.util.List top java.util.Iterator
StackMap stack:
22: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.EndNode
astore 9
start local 9 23: iconst_0
istore 11
start local 11 24: goto 29
25: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.MergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.LoopBeginNode java.util.List java.util.List org.graalvm.compiler.nodes.EndNode java.util.Iterator int
StackMap stack:
aload 7
iload 11
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 12
start local 12 26: aload 8
iload 11
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 13
start local 13 27: aload 13
aload 12
aload 9
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.PhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 13 end local 12 28: iinc 11 1
StackMap locals:
StackMap stack:
29: iload 11
aload 7
invokeinterface java.util.List.size:()I
if_icmplt 25
end local 11 30: aload 2
aload 9
invokevirtual org.graalvm.compiler.nodes.MergeNode.removeEnd:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)V
31: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.LoopEndNode
dup
aload 6
invokespecial org.graalvm.compiler.nodes.LoopEndNode.<init>:(Lorg/graalvm/compiler/nodes/LoopBeginNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopEndNode
astore 11
start local 11 32: aload 9
aload 11
invokevirtual org.graalvm.compiler.nodes.EndNode.replaceAndDelete:(Lorg/graalvm/compiler/graph/Node;)V
end local 11 end local 9 33: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.MergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.LoopBeginNode java.util.List java.util.List top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
34: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.exits:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 42
StackMap locals:
StackMap stack:
35: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
astore 9
start local 9 36: aload 9
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 11
start local 11 37: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 38
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.loopExplosionMerges:Lorg/graalvm/util/EconomicSet;
aload 11
invokeinterface org.graalvm.util.EconomicSet.contains:(Ljava/lang/Object;)Z
ifne 38
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
38: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.MergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.LoopBeginNode java.util.List java.util.List org.graalvm.compiler.nodes.AbstractEndNode java.util.Iterator org.graalvm.compiler.nodes.AbstractMergeNode
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.LoopExitNode
dup
aload 6
invokespecial org.graalvm.compiler.nodes.LoopExitNode.<init>:(Lorg/graalvm/compiler/nodes/LoopBeginNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 12
start local 12 39: aload 9
aload 12
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.replaceAtPredecessor:(Lorg/graalvm/compiler/graph/Node;)V
40: aload 12
aload 9
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
41: aload 0
aload 12
aload 11
aload 9
invokevirtual org.graalvm.compiler.nodes.LoopDetector.assignLoopExitState:(Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractEndNode;)V
end local 12 end local 11 end local 9 42: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.MergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.LoopBeginNode java.util.List java.util.List top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 35
43: 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 44 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
0 44 1 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
1 44 2 merge Lorg/graalvm/compiler/nodes/MergeNode;
2 44 3 stateAfter Lorg/graalvm/compiler/nodes/FrameState;
3 44 4 afterMerge Lorg/graalvm/compiler/nodes/FixedNode;
5 44 5 preLoopEnd Lorg/graalvm/compiler/nodes/EndNode;
6 44 6 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
11 44 7 mergePhis Ljava/util/List<Lorg/graalvm/compiler/nodes/PhiNode;>;
12 44 8 loopBeginPhis Ljava/util/List<Lorg/graalvm/compiler/nodes/PhiNode;>;
13 21 9 i I
15 19 10 mergePhi Lorg/graalvm/compiler/nodes/PhiNode;
16 19 11 loopBeginPhi Lorg/graalvm/compiler/nodes/PhiNode;
23 33 9 endNode Lorg/graalvm/compiler/nodes/EndNode;
24 30 11 i I
26 28 12 mergePhi Lorg/graalvm/compiler/nodes/PhiNode;
27 28 13 loopBeginPhi Lorg/graalvm/compiler/nodes/PhiNode;
32 33 11 loopEnd Lorg/graalvm/compiler/nodes/LoopEndNode;
36 42 9 exit Lorg/graalvm/compiler/nodes/AbstractEndNode;
37 42 11 loopExplosionMerge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
39 42 12 loopExit Lorg/graalvm/compiler/nodes/LoopExitNode;
MethodParameters:
Name Flags
loop
private void assignLoopExitState(org.graalvm.compiler.nodes.LoopExitNode, org.graalvm.compiler.nodes.AbstractMergeNode, org.graalvm.compiler.nodes.AbstractEndNode);
descriptor: (Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractEndNode;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=12, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 4
start local 4 1: getstatic org.graalvm.util.Equivalence.IDENTITY:Lorg/graalvm/util/Equivalence;
invokestatic org.graalvm.util.EconomicSet.create:(Lorg/graalvm/util/Equivalence;)Lorg/graalvm/util/EconomicSet;
astore 5
start local 5 2: aload 1
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 6
start local 6 3: goto 10
4: StackMap locals: org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet org.graalvm.compiler.nodes.FrameState
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.nodes.FrameState.values:()Lorg/graalvm/compiler/graph/NodeInputList;
invokevirtual org.graalvm.compiler.graph.NodeInputList.iterator:()Ljava/util/Iterator;
astore 8
goto 8
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet org.graalvm.compiler.nodes.FrameState top java.util.Iterator
StackMap stack:
5: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 7
start local 7 6: aload 7
ifnull 8
aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifne 8
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
aload 7
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 8
7: aload 5
aload 7
invokestatic org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder.unwrap:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
invokeinterface org.graalvm.util.EconomicSet.add:(Ljava/lang/Object;)Z
pop
end local 7 8: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
9: aload 6
invokevirtual org.graalvm.compiler.nodes.FrameState.outerFrameState:()Lorg/graalvm/compiler/nodes/FrameState;
astore 6
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet org.graalvm.compiler.nodes.FrameState
StackMap stack:
10: aload 6
ifnonnull 4
end local 6 11: new java.util.ArrayList
dup
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.values:()Lorg/graalvm/compiler/graph/NodeInputList;
invokevirtual org.graalvm.compiler.graph.NodeInputList.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 6
start local 6 12: aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.values:()Lorg/graalvm/compiler/graph/NodeInputList;
invokevirtual org.graalvm.compiler.graph.NodeInputList.iterator:()Ljava/util/Iterator;
astore 8
goto 30
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet java.util.List top java.util.Iterator
StackMap stack:
13: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 7
start local 7 14: aload 7
astore 9
start local 9 15: aload 9
invokestatic org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder.unwrap:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 10
start local 10 16: aload 10
instanceof org.graalvm.compiler.nodes.PhiNode
ifeq 19
aload 2
aload 10
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 19
17: aload 10
checkcast org.graalvm.compiler.nodes.PhiNode
aload 3
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
18: aload 9
invokestatic org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder.unwrap:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 10
19: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet java.util.List org.graalvm.compiler.nodes.ValueNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 10
ifnull 20
aload 10
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifne 20
aload 5
aload 10
invokeinterface org.graalvm.util.EconomicSet.contains:(Ljava/lang/Object;)Z
ifne 20
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.methodScope:Lorg/graalvm/compiler/nodes/GraphDecoder$MethodScope;
getfield org.graalvm.compiler.nodes.GraphDecoder$MethodScope.methodStartMark:Lorg/graalvm/compiler/graph/Graph$Mark;
aload 10
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.isNew:(Lorg/graalvm/compiler/graph/Graph$Mark;Lorg/graalvm/compiler/graph/Node;)Z
ifne 22
20: StackMap locals:
StackMap stack:
aload 6
aload 10
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
21: goto 30
22: StackMap locals:
StackMap stack:
aload 9
instanceof org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder
ifeq 23
aload 9
checkcast org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder
getfield org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder.proxyPoint:Lorg/graalvm/compiler/graph/Node;
aload 2
if_acmpne 23
iconst_1
goto 24
StackMap locals:
StackMap stack:
23: iconst_0
24: StackMap locals:
StackMap stack: int
ldc "Value flowing out of loop, but we are not prepared to insert a ProxyNode"
25: invokestatic org.graalvm.compiler.debug.GraalError.guarantee:(ZLjava/lang/String;)V
26: aload 9
checkcast org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder
astore 11
start local 11 27: aload 11
getfield org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder.value:Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokestatic org.graalvm.compiler.nodes.ProxyNode.forValue:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ValueProxyNode;
astore 12
start local 12 28: aload 11
aload 12
invokevirtual org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder.setValue:(Lorg/graalvm/compiler/nodes/ValueNode;)V
29: aload 6
aload 12
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 12 end local 11 end local 10 end local 9 end local 7 30: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet java.util.List top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
31: new org.graalvm.compiler.nodes.FrameState
dup
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.outerFrameState:()Lorg/graalvm/compiler/nodes/FrameState;
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.getCode:()Lorg/graalvm/compiler/bytecode/Bytecode;
aload 4
getfield org.graalvm.compiler.nodes.FrameState.bci:I
aload 6
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.localsSize:()I
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.stackSize:()I
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.rethrowException:()Z
32: aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.duringCall:()Z
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.monitorIds:()Lorg/graalvm/compiler/graph/NodeInputList;
aload 4
invokevirtual org.graalvm.compiler.nodes.FrameState.virtualObjectMappings:()Lorg/graalvm/compiler/graph/NodeInputList;
33: invokespecial org.graalvm.compiler.nodes.FrameState.<init>:(Lorg/graalvm/compiler/nodes/FrameState;Lorg/graalvm/compiler/bytecode/Bytecode;ILjava/util/List;IIZZLjava/util/List;Ljava/util/List;)V
astore 7
start local 7 34: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 35
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
ifnull 35
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
35: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FrameState org.graalvm.util.EconomicSet java.util.List org.graalvm.compiler.nodes.FrameState
StackMap stack:
aload 1
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 7
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FrameState
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
36: return
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 37 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
0 37 1 loopExit Lorg/graalvm/compiler/nodes/LoopExitNode;
0 37 2 loopExplosionMerge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
0 37 3 loopExplosionEnd Lorg/graalvm/compiler/nodes/AbstractEndNode;
1 37 4 oldState Lorg/graalvm/compiler/nodes/FrameState;
2 37 5 loopBeginValues Lorg/graalvm/util/EconomicSet<Lorg/graalvm/compiler/graph/Node;>;
3 11 6 state Lorg/graalvm/compiler/nodes/FrameState;
6 8 7 value Lorg/graalvm/compiler/nodes/ValueNode;
12 37 6 newValues Ljava/util/List<Lorg/graalvm/compiler/nodes/ValueNode;>;
14 30 7 v Lorg/graalvm/compiler/nodes/ValueNode;
15 30 9 value Lorg/graalvm/compiler/nodes/ValueNode;
16 30 10 realValue Lorg/graalvm/compiler/nodes/ValueNode;
27 30 11 proxyPlaceholder Lorg/graalvm/compiler/nodes/GraphDecoder$ProxyPlaceholder;
28 30 12 proxy Lorg/graalvm/compiler/nodes/ValueProxyNode;
34 37 7 newState Lorg/graalvm/compiler/nodes/FrameState;
MethodParameters:
Name Flags
loopExit
loopExplosionMerge
loopExplosionEnd
private void handleIrreducibleLoop(org.graalvm.compiler.nodes.LoopDetector$Loop);
descriptor: (Lorg/graalvm/compiler/nodes/LoopDetector$Loop;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=13, locals=18, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 1
aload 1
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
if_acmpne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 2
start local 2 2: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 3
start local 3 3: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 4
aload 2
invokevirtual org.graalvm.compiler.nodes.FrameState.outerFrameState:()Lorg/graalvm/compiler/nodes/FrameState;
aload 3
invokevirtual org.graalvm.compiler.nodes.FrameState.outerFrameState:()Lorg/graalvm/compiler/nodes/FrameState;
if_acmpeq 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.FrameState.values:()Lorg/graalvm/compiler/graph/NodeInputList;
astore 4
start local 4 5: aload 3
invokevirtual org.graalvm.compiler.nodes.FrameState.values:()Lorg/graalvm/compiler/graph/NodeInputList;
astore 5
start local 5 6: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 7
aload 4
invokevirtual org.graalvm.compiler.graph.NodeInputList.size:()I
aload 5
invokevirtual org.graalvm.compiler.graph.NodeInputList.size:()I
if_icmpeq 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals: org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList
StackMap stack:
iconst_m1
istore 6
start local 6 8: aconst_null
astore 7
start local 7 9: aconst_null
astore 8
start local 8 10: iconst_0
istore 9
start local 9 11: goto 21
12: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode int
StackMap stack:
aload 4
iload 9
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 10
start local 10 13: aload 5
iload 9
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 11
start local 11 14: aload 10
aload 11
if_acmpeq 20
15: iload 6
iconst_m1
if_icmpeq 17
16: new java.lang.StringBuilder
dup
ldc "must have only one variable that is changed in loop. "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " != "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " and "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " != "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 11
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.nodes.LoopDetector.bailout:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
17: StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
iload 9
istore 6
18: aload 10
astore 7
19: aload 11
astore 8
end local 11 end local 10 20: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
21: iload 9
aload 4
invokevirtual org.graalvm.compiler.graph.NodeInputList.size:()I
if_icmplt 12
end local 9 22: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 23
iload 6
iconst_m1
if_icmpne 23
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
23: StackMap locals:
StackMap stack:
new java.util.TreeMap
dup
invokespecial java.util.TreeMap.<init>:()V
astore 10
start local 10 24: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
ifnonnull 59
25: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 26
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aload 8
invokevirtual org.graalvm.compiler.nodes.MergeNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 26
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
26: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode top java.util.SortedMap
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 27
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.isEmpty:()Z
ifne 27
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
27: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.ValuePhiNode
dup
aload 8
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
invokevirtual org.graalvm.compiler.core.common.type.Stamp.unrestricted:()Lorg/graalvm/compiler/core/common/type/Stamp;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokespecial org.graalvm.compiler.nodes.ValuePhiNode.<init>:(Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addWithoutUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValuePhiNode
astore 9
start local 9 28: iconst_0
istore 12
start local 12 29: goto 32
30: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValuePhiNode java.util.SortedMap top int
StackMap stack:
aload 9
aload 8
invokevirtual org.graalvm.compiler.nodes.ValuePhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
31: iinc 12 1
StackMap locals:
StackMap stack:
32: iload 12
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.phiPredecessorCount:()I
if_icmplt 30
end local 12 33: aload 3
astore 12
start local 12 34: new java.util.ArrayList
dup
aload 5
invokevirtual org.graalvm.compiler.graph.NodeInputList.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 13
start local 13 35: iconst_0
istore 14
start local 14 36: goto 42
37: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValuePhiNode java.util.SortedMap top org.graalvm.compiler.nodes.FrameState java.util.List int
StackMap stack:
iload 14
iload 6
if_icmpne 40
38: aload 13
aload 9
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
39: goto 41
40: StackMap locals:
StackMap stack:
aload 13
aload 5
iload 14
invokevirtual org.graalvm.compiler.graph.NodeInputList.get:(I)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
41: StackMap locals:
StackMap stack:
iinc 14 1
StackMap locals:
StackMap stack:
42: iload 14
aload 5
invokevirtual org.graalvm.compiler.graph.NodeInputList.size:()I
if_icmplt 37
end local 14 43: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
44: new org.graalvm.compiler.nodes.FrameState
dup
aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.outerFrameState:()Lorg/graalvm/compiler/nodes/FrameState;
aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.getCode:()Lorg/graalvm/compiler/bytecode/Bytecode;
aload 12
getfield org.graalvm.compiler.nodes.FrameState.bci:I
aload 13
aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.localsSize:()I
45: aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.stackSize:()I
aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.rethrowException:()Z
aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.duringCall:()Z
aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.monitorIds:()Lorg/graalvm/compiler/graph/NodeInputList;
46: aload 12
invokevirtual org.graalvm.compiler.nodes.FrameState.virtualObjectMappings:()Lorg/graalvm/compiler/graph/NodeInputList;
47: invokespecial org.graalvm.compiler.nodes.FrameState.<init>:(Lorg/graalvm/compiler/nodes/FrameState;Lorg/graalvm/compiler/bytecode/Bytecode;ILjava/util/List;IIZZLjava/util/List;Ljava/util/List;)V
48: invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FrameState
astore 14
start local 14 49: aload 12
aload 14
invokevirtual org.graalvm.compiler.nodes.FrameState.replaceAtUsages:(Lorg/graalvm/compiler/graph/Node;)V
50: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 15
start local 15 51: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aconst_null
invokevirtual org.graalvm.compiler.nodes.MergeNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
52: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.BeginNode
dup
invokespecial org.graalvm.compiler.nodes.BeginNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.BeginNode
astore 16
start local 16 53: aload 16
aload 15
invokevirtual org.graalvm.compiler.nodes.BeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
54: aload 10
aload 8
invokestatic org.graalvm.compiler.nodes.LoopDetector.asInt:(Lorg/graalvm/compiler/nodes/ValueNode;)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 16
invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
55: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.BeginNode
dup
invokespecial org.graalvm.compiler.nodes.BeginNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 11
start local 11 56: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.DeoptimizeNode
dup
getstatic jdk.vm.ci.meta.DeoptimizationAction.InvalidateRecompile:Ljdk/vm/ci/meta/DeoptimizationAction;
getstatic jdk.vm.ci.meta.DeoptimizationReason.UnreachedCode:Ljdk/vm/ci/meta/DeoptimizationReason;
invokespecial org.graalvm.compiler.nodes.DeoptimizeNode.<init>:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.DeoptimizeNode
astore 17
start local 17 57: aload 11
aload 17
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 58: goto 75
end local 11 end local 9 59: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode top java.util.SortedMap
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 60
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aload 8
invokevirtual org.graalvm.compiler.nodes.MergeNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 60
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
60: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 62
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmpne 61
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
aload 8
if_acmpeq 62
StackMap locals:
StackMap stack:
61: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
62: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 63
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.value:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 8
if_acmpeq 63
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
63: StackMap locals:
StackMap stack:
aload 8
checkcast org.graalvm.compiler.nodes.ValuePhiNode
astore 9
start local 9 64: iconst_0
istore 12
start local 12 65: goto 69
66: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValuePhiNode java.util.SortedMap top int
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
iload 12
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.keyAt:(I)Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
istore 13
start local 13 67: aload 10
iload 13
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
iload 13
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.successorAtKey:(I)Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 13 68: iinc 12 1
StackMap locals:
StackMap stack:
69: iload 12
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.keyCount:()I
if_icmplt 66
end local 12 70: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.defaultSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 11
start local 11 71: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 72
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
if_acmpeq 72
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
72: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValuePhiNode java.util.SortedMap org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aconst_null
invokevirtual org.graalvm.compiler.nodes.MergeNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
73: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.clearSuccessors:()V
74: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.safeDelete:()V
75: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 76
aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.isEmpty:()Z
ifne 76
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
76: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.BeginNode
dup
invokespecial org.graalvm.compiler.nodes.BeginNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.BeginNode
astore 12
start local 12 77: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.EndNode
dup
invokespecial org.graalvm.compiler.nodes.EndNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.EndNode
astore 13
start local 13 78: aload 12
aload 13
invokevirtual org.graalvm.compiler.nodes.BeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
79: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aload 13
invokevirtual org.graalvm.compiler.nodes.MergeNode.addForwardEnd:(Lorg/graalvm/compiler/nodes/EndNode;)V
80: aload 7
invokestatic org.graalvm.compiler.nodes.LoopDetector.asInt:(Lorg/graalvm/compiler/nodes/ValueNode;)I
istore 14
start local 14 81: getstatic org.graalvm.compiler.nodes.LoopDetector.$assertionsDisabled:Z
ifne 82
aload 10
iload 14
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.SortedMap.containsKey:(Ljava/lang/Object;)Z
ifeq 82
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
82: StackMap locals: org.graalvm.compiler.nodes.BeginNode org.graalvm.compiler.nodes.EndNode int
StackMap stack:
aload 10
iload 14
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 12
invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
83: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 16
goto 89
StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.nodes.LoopDetector$Loop org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.graph.NodeInputList org.graalvm.compiler.graph.NodeInputList int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValuePhiNode java.util.SortedMap org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.BeginNode org.graalvm.compiler.nodes.EndNode int top java.util.Iterator
StackMap stack:
84: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.EndNode
astore 15
start local 15 85: aload 1
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aload 15
invokevirtual org.graalvm.compiler.nodes.MergeNode.removeEnd:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)V
86: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.ends:Ljava/util/List;
aload 15
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
87: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aload 15
invokevirtual org.graalvm.compiler.nodes.MergeNode.addForwardEnd:(Lorg/graalvm/compiler/nodes/EndNode;)V
88: aload 9
aload 7
invokevirtual org.graalvm.compiler.nodes.ValuePhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 15 89: StackMap locals:
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 84
90: aload 0
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 9
aload 10
aload 11
invokestatic org.graalvm.compiler.nodes.LoopDetector.createSwitch:(Lorg/graalvm/compiler/nodes/ValuePhiNode;Ljava/util/SortedMap;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.extended.IntegerSwitchNode
putfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
91: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopHandler:Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
getfield org.graalvm.compiler.nodes.LoopDetector$Loop.header:Lorg/graalvm/compiler/nodes/MergeNode;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.MergeNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
92: return
end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 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 93 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
0 93 1 loop Lorg/graalvm/compiler/nodes/LoopDetector$Loop;
2 93 2 loopState Lorg/graalvm/compiler/nodes/FrameState;
3 93 3 explosionHeadState Lorg/graalvm/compiler/nodes/FrameState;
5 93 4 loopValues Lorg/graalvm/compiler/graph/NodeInputList<Lorg/graalvm/compiler/nodes/ValueNode;>;
6 93 5 explosionHeadValues Lorg/graalvm/compiler/graph/NodeInputList<Lorg/graalvm/compiler/nodes/ValueNode;>;
8 93 6 loopVariableIndex I
9 93 7 loopValue Lorg/graalvm/compiler/nodes/ValueNode;
10 93 8 explosionHeadValue Lorg/graalvm/compiler/nodes/ValueNode;
11 22 9 i I
13 20 10 curLoopValue Lorg/graalvm/compiler/nodes/ValueNode;
14 20 11 curExplosionHeadValue Lorg/graalvm/compiler/nodes/ValueNode;
28 59 9 loopVariablePhi Lorg/graalvm/compiler/nodes/ValuePhiNode;
64 93 9 loopVariablePhi Lorg/graalvm/compiler/nodes/ValuePhiNode;
24 93 10 dispatchTable Ljava/util/SortedMap<Ljava/lang/Integer;Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
56 59 11 unreachableDefaultSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
71 93 11 unreachableDefaultSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
29 33 12 i I
34 58 12 oldFrameState Lorg/graalvm/compiler/nodes/FrameState;
35 58 13 newFrameStateValues Ljava/util/List<Lorg/graalvm/compiler/nodes/ValueNode;>;
36 43 14 i I
49 58 14 newFrameState Lorg/graalvm/compiler/nodes/FrameState;
51 58 15 handlerNext Lorg/graalvm/compiler/nodes/FixedNode;
53 58 16 handlerBegin Lorg/graalvm/compiler/nodes/BeginNode;
57 58 17 deopt Lorg/graalvm/compiler/nodes/DeoptimizeNode;
65 70 12 i I
67 68 13 key I
77 93 12 dispatchBegin Lorg/graalvm/compiler/nodes/BeginNode;
78 93 13 dispatchEnd Lorg/graalvm/compiler/nodes/EndNode;
81 93 14 intLoopValue I
85 89 15 end Lorg/graalvm/compiler/nodes/EndNode;
MethodParameters:
Name Flags
loop
private static int asInt(org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
if_acmpeq 2
1: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "must have a loop variable of type int. "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.nodes.LoopDetector.bailout:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 node Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
node
private static java.lang.RuntimeException bailout(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/RuntimeException;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: new org.graalvm.compiler.core.common.PermanentBailoutException
dup
ldc "Graal implementation restriction: Method with %s loop explosion %s"
iconst_2
anewarray java.lang.Object
dup
iconst_0
getstatic org.graalvm.compiler.nodes.graphbuilderconf.LoopExplosionPlugin$LoopExplosionKind.MERGE_EXPLODE:Lorg/graalvm/compiler/nodes/graphbuilderconf/LoopExplosionPlugin$LoopExplosionKind;
aastore
dup
iconst_1
aload 0
aastore
invokespecial org.graalvm.compiler.core.common.PermanentBailoutException.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 msg Ljava/lang/String;
MethodParameters:
Name Flags
msg
private static org.graalvm.compiler.nodes.extended.IntegerSwitchNode createSwitch(org.graalvm.compiler.nodes.ValuePhiNode, java.util.SortedMap<java.lang.Integer, org.graalvm.compiler.nodes.AbstractBeginNode>, org.graalvm.compiler.nodes.AbstractBeginNode);
descriptor: (Lorg/graalvm/compiler/nodes/ValuePhiNode;Ljava/util/SortedMap;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface java.util.SortedMap.size:()I
istore 3
start local 3 1: iload 3
iconst_1
iadd
istore 4
start local 4 2: iload 4
anewarray org.graalvm.compiler.nodes.AbstractBeginNode
astore 5
start local 5 3: iload 3
newarray 10
astore 6
start local 6 4: iload 4
newarray 7
astore 7
start local 7 5: iload 4
newarray 10
astore 8
start local 8 6: iconst_0
istore 9
start local 9 7: aload 1
invokeinterface java.util.SortedMap.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 11
goto 14
StackMap locals: org.graalvm.compiler.nodes.ValuePhiNode java.util.SortedMap org.graalvm.compiler.nodes.AbstractBeginNode int int org.graalvm.compiler.nodes.AbstractBeginNode[] int[] double[] int[] int top java.util.Iterator
StackMap stack:
8: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 10
start local 10 9: aload 5
iload 9
aload 10
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
aastore
10: aload 6
iload 9
aload 10
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
iastore
11: aload 7
iload 9
dconst_1
iload 3
i2d
ddiv
dastore
12: aload 8
iload 9
iload 9
iastore
13: iinc 9 1
end local 10 14: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
15: aload 5
iload 9
aload 2
aastore
16: aload 7
iload 9
dconst_0
dastore
17: aload 8
iload 9
iload 9
iastore
18: new org.graalvm.compiler.nodes.extended.IntegerSwitchNode
dup
aload 0
aload 5
aload 6
aload 7
aload 8
invokespecial org.graalvm.compiler.nodes.extended.IntegerSwitchNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;[Lorg/graalvm/compiler/nodes/AbstractBeginNode;[I[D[I)V
areturn
end local 9 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 19 0 switchedValue Lorg/graalvm/compiler/nodes/ValuePhiNode;
0 19 1 dispatchTable Ljava/util/SortedMap<Ljava/lang/Integer;Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
0 19 2 defaultSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
1 19 3 numKeys I
2 19 4 numSuccessors I
3 19 5 switchSuccessors [Lorg/graalvm/compiler/nodes/AbstractBeginNode;
4 19 6 switchKeys [I
5 19 7 switchKeyProbabilities [D
6 19 8 switchKeySuccessors [I
7 19 9 idx I
9 14 10 entry Ljava/util/Map$Entry<Ljava/lang/Integer;Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
Signature: (Lorg/graalvm/compiler/nodes/ValuePhiNode;Ljava/util/SortedMap<Ljava/lang/Integer;Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
MethodParameters:
Name Flags
switchedValue
dispatchTable
defaultSuccessor
private void logIrreducibleLoops();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: aload 1
ldc "IrreducibleLoops"
invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
astore 4
start local 4 3: aload 1
iconst_1
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:(I)Z
ifeq 13
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
ifnull 13
4: new java.lang.StringBuilder
dup
ldc "Inserted state machine to remove irreducible loops. Dispatching to the following states: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 5
start local 5 5: ldc ""
astore 6
start local 6 6: iconst_0
istore 7
start local 7 7: goto 11
8: StackMap locals: org.graalvm.compiler.nodes.LoopDetector org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope java.lang.StringBuilder java.lang.String int
StackMap stack:
aload 5
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
iload 7
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.keyAt:(I)Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
pop
9: ldc ", "
astore 6
10: iinc 7 1
StackMap locals:
StackMap stack:
11: iload 7
aload 0
getfield org.graalvm.compiler.nodes.LoopDetector.irreducibleLoopSwitch:Lorg/graalvm/compiler/nodes/extended/IntegerSwitchNode;
invokevirtual org.graalvm.compiler.nodes.extended.IntegerSwitchNode.keyCount:()I
if_icmplt 8
end local 7 12: aload 1
iconst_1
ldc "%s"
aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;)V
end local 6 end local 5 13: StackMap locals:
StackMap stack:
aload 4
ifnull 19
aload 4
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
14: astore 2
aload 4
ifnull 15
aload 4
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
end local 4 StackMap locals:
StackMap stack:
15: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 3
aload 2
ifnonnull 17
aload 3
astore 2
goto 18
StackMap locals:
StackMap stack:
17: aload 2
aload 3
if_acmpeq 18
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
18: aload 2
athrow
19: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/graalvm/compiler/nodes/LoopDetector;
1 20 1 debug Lorg/graalvm/compiler/debug/DebugContext;
3 15 4 s Lorg/graalvm/compiler/debug/DebugContext$Scope;
5 13 5 msg Ljava/lang/StringBuilder;
6 13 6 sep Ljava/lang/String;
7 12 7 i I
Exception table:
from to target type
3 13 14 any
2 16 16 any
}
SourceFile: "GraphDecoder.java"
NestMembers:
org.graalvm.compiler.nodes.LoopDetector$Loop
InnerClasses:
public abstract Entry = java.util.Map$Entry of java.util.Map
public abstract Scope = org.graalvm.compiler.debug.DebugContext$Scope of org.graalvm.compiler.debug.DebugContext
public Mark = org.graalvm.compiler.graph.Graph$Mark of org.graalvm.compiler.graph.Graph
protected MethodScope = org.graalvm.compiler.nodes.GraphDecoder$MethodScope of org.graalvm.compiler.nodes.GraphDecoder
protected final ProxyPlaceholder = org.graalvm.compiler.nodes.GraphDecoder$ProxyPlaceholder of org.graalvm.compiler.nodes.GraphDecoder
Loop = org.graalvm.compiler.nodes.LoopDetector$Loop of org.graalvm.compiler.nodes.LoopDetector
public final LoopExplosionKind = org.graalvm.compiler.nodes.graphbuilderconf.LoopExplosionPlugin$LoopExplosionKind of org.graalvm.compiler.nodes.graphbuilderconf.LoopExplosionPlugin