public final class org.graalvm.compiler.phases.graph.ReentrantBlockIterator
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.phases.graph.ReentrantBlockIterator
super_class: java.lang.Object
{
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/phases/graph/ReentrantBlockIterator;
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.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator;
public static <StateT> org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo<StateT> processLoop(org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure<StateT>, org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block>, StateT);
descriptor: (Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Lorg/graalvm/compiler/core/common/cfg/Loop;Ljava/lang/Object;)Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$LoopInfo;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
aload 2
aload 1
invokedynamic test(Lorg/graalvm/compiler/core/common/cfg/Loop;)Ljava/util/function/Predicate;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Z
org/graalvm/compiler/phases/graph/ReentrantBlockIterator.lambda$0(Lorg/graalvm/compiler/core/common/cfg/Loop;Lorg/graalvm/compiler/nodes/cfg/Block;)Z (6)
(Lorg/graalvm/compiler/nodes/cfg/Block;)Z
invokestatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.apply:(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/lang/Object;Ljava/util/function/Predicate;)Lorg/graalvm/util/EconomicMap;
astore 3
start local 3 1: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
astore 4
start local 4 2: new org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo
dup
aload 4
arraylength
iconst_1
isub
aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
invokeinterface java.util.List.size:()I
invokespecial org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo.<init>:(II)V
astore 5
start local 5 3: iconst_1
istore 6
start local 6 4: goto 8
5: StackMap locals: org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure org.graalvm.compiler.core.common.cfg.Loop java.lang.Object org.graalvm.util.EconomicMap org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo int
StackMap stack:
aload 3
aload 4
iload 6
aaload
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 7
start local 7 6: aload 5
getfield org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo.endStates:Ljava/util/List;
aload 0
aload 7
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.cloneState:(Ljava/lang/Object;)Ljava/lang/Object;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 7 7: iinc 6 1
StackMap locals:
StackMap stack:
8: iload 6
aload 4
arraylength
if_icmplt 5
end local 6 9: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 15
StackMap locals: org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure org.graalvm.compiler.core.common.cfg.Loop java.lang.Object org.graalvm.util.EconomicMap org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo top java.util.Iterator
StackMap stack:
10: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 6
start local 6 11: getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 12
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
iconst_1
if_icmpeq 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals: org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure org.graalvm.compiler.core.common.cfg.Loop java.lang.Object org.graalvm.util.EconomicMap org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo org.graalvm.compiler.nodes.cfg.Block java.util.Iterator
StackMap stack:
getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 13
aload 3
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
ifne 13
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
13: StackMap locals:
StackMap stack:
aload 3
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 8
start local 8 14: aload 5
getfield org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo.exitStates:Ljava/util/List;
aload 0
aload 8
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.cloneState:(Ljava/lang/Object;)Ljava/lang/Object;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 8 end local 6 15: StackMap locals: org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure org.graalvm.compiler.core.common.cfg.Loop java.lang.Object org.graalvm.util.EconomicMap org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
16: aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 closure Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;
0 17 1 loop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
0 17 2 initialState TStateT;
1 17 3 blockEndStates Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
2 17 4 predecessors [Lorg/graalvm/compiler/nodes/cfg/Block;
3 17 5 info Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$LoopInfo<TStateT;>;
4 9 6 i I
6 7 7 endState TStateT;
11 15 6 loopExit Lorg/graalvm/compiler/nodes/cfg/Block;
14 15 8 exitState TStateT;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;TStateT;)Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$LoopInfo<TStateT;>;
MethodParameters:
Name Flags
closure
loop
initialState
public static <StateT> void apply(org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure<StateT>, org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Lorg/graalvm/compiler/nodes/cfg/Block;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 0
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.getInitialState:()Ljava/lang/Object;
aconst_null
invokestatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.apply:(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/lang/Object;Ljava/util/function/Predicate;)Lorg/graalvm/util/EconomicMap;
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 closure Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;
0 2 1 start Lorg/graalvm/compiler/nodes/cfg/Block;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;Lorg/graalvm/compiler/nodes/cfg/Block;)V
MethodParameters:
Name Flags
closure
start
public static <StateT> org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.FixedNode, StateT> apply(org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure<StateT>, org.graalvm.compiler.nodes.cfg.Block, StateT, java.util.function.Predicate<org.graalvm.compiler.nodes.cfg.Block>);
descriptor: (Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/lang/Object;Ljava/util/function/Predicate;)Lorg/graalvm/util/EconomicMap;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=16, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
astore 4
start local 4 1: 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 5
start local 5 2: aload 2
astore 6
start local 6 3: aload 1
astore 7
start local 7 4: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 8
start local 8 5: invokestatic org.graalvm.compiler.core.common.util.CompilationAlarm.current:()Lorg/graalvm/compiler/core/common/util/CompilationAlarm;
astore 9
start local 9 6: StackMap locals: org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure org.graalvm.compiler.nodes.cfg.Block java.lang.Object java.util.function.Predicate java.util.Deque org.graalvm.util.EconomicMap java.lang.Object org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.core.common.util.CompilationAlarm
StackMap stack:
aload 9
invokevirtual org.graalvm.compiler.core.common.util.CompilationAlarm.hasExpired:()Z
ifeq 11
7: getstatic org.graalvm.compiler.core.common.util.CompilationAlarm$Options.CompilationExpirationPeriod:Lorg/graalvm/compiler/options/OptionKey;
aload 8
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 10
start local 10 8: iload 10
bipush 120
if_icmple 10
9: new org.graalvm.compiler.core.common.PermanentBailoutException
dup
ldc "Compilation exceeded %d seconds during CFG traversal"
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 10
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokespecial org.graalvm.compiler.core.common.PermanentBailoutException.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
athrow
10: StackMap locals: int
StackMap stack:
new org.graalvm.compiler.core.common.RetryableBailoutException
dup
ldc "Compilation exceeded %d seconds during CFG traversal"
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 10
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokespecial org.graalvm.compiler.core.common.RetryableBailoutException.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
athrow
end local 10 11: StackMap locals:
StackMap stack:
aconst_null
astore 10
start local 10 12: aload 3
ifnull 15
aload 3
aload 7
invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
ifeq 15
13: aload 5
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
aload 6
invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
14: goto 40
15: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 0
aload 7
aload 6
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.processBlock:(Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/lang/Object;)Ljava/lang/Object;
astore 6
16: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
astore 11
start local 11 17: aload 11
arraylength
ifeq 40
18: aload 11
arraylength
iconst_1
if_icmpne 39
19: aload 11
iconst_0
aaload
astore 12
start local 12 20: aload 12
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopHeader:()Z
ifeq 26
21: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopEnd:()Z
ifeq 24
22: aload 5
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
aload 6
invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
23: goto 40
24: StackMap locals: org.graalvm.compiler.nodes.cfg.Block[] org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 0
aload 4
aload 5
aload 6
aload 12
invokestatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.recurseIntoLoop:(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Ljava/util/Deque;Lorg/graalvm/util/EconomicMap;Ljava/lang/Object;Lorg/graalvm/compiler/nodes/cfg/Block;)V
25: goto 40
StackMap locals:
StackMap stack:
26: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
instanceof org.graalvm.compiler.nodes.AbstractEndNode
ifeq 37
27: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
astore 13
start local 13 28: aload 13
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 14
start local 14 29: aload 5
aload 7
aload 14
invokestatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.allEndsVisited:(Lorg/graalvm/util/EconomicMap;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Z
ifeq 34
30: aload 5
aload 6
aload 7
aload 12
aload 14
invokestatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.mergeStates:(Lorg/graalvm/util/EconomicMap;Ljava/lang/Object;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Ljava/util/ArrayList;
astore 15
start local 15 31: aload 0
aload 12
aload 15
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.merge:(Lorg/graalvm/compiler/nodes/cfg/Block;Ljava/util/List;)Ljava/lang/Object;
astore 6
32: aload 12
astore 10
end local 15 33: goto 40
34: StackMap locals: org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.AbstractMergeNode
StackMap stack:
getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 35
aload 5
aload 13
invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
ifeq 35
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
35: StackMap locals:
StackMap stack:
aload 5
aload 13
aload 6
invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 14 end local 13 36: goto 40
37: StackMap locals:
StackMap stack:
aload 12
astore 10
end local 12 38: goto 40
39: StackMap locals:
StackMap stack:
aload 0
aload 4
aload 5
aload 6
aload 11
invokestatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.processMultipleSuccessors:(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Ljava/util/Deque;Lorg/graalvm/util/EconomicMap;Ljava/lang/Object;[Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
astore 10
end local 11 40: StackMap locals:
StackMap stack:
aload 10
ifnull 43
41: aload 10
astore 7
42: goto 6
StackMap locals:
StackMap stack:
43: aload 4
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 45
44: aload 5
areturn
45: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Deque.removeFirst:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 7
46: getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 47
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessorCount:()I
iconst_1
if_icmpeq 47
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
47: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 48
aload 5
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
ifne 48
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
48: StackMap locals:
StackMap stack:
aload 5
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface org.graalvm.util.EconomicMap.removeKey:(Ljava/lang/Object;)Ljava/lang/Object;
astore 6
end local 10 49: goto 6
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 50 0 closure Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;
0 50 1 start Lorg/graalvm/compiler/nodes/cfg/Block;
0 50 2 initialState TStateT;
0 50 3 stopAtBlock Ljava/util/function/Predicate<Lorg/graalvm/compiler/nodes/cfg/Block;>;
1 50 4 blockQueue Ljava/util/Deque<Lorg/graalvm/compiler/nodes/cfg/Block;>;
2 50 5 states Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
3 50 6 state TStateT;
4 50 7 current Lorg/graalvm/compiler/nodes/cfg/Block;
5 50 8 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
6 50 9 compilationAlarm Lorg/graalvm/compiler/core/common/util/CompilationAlarm;
8 11 10 period I
12 49 10 next Lorg/graalvm/compiler/nodes/cfg/Block;
17 40 11 successors [Lorg/graalvm/compiler/nodes/cfg/Block;
20 38 12 successor Lorg/graalvm/compiler/nodes/cfg/Block;
28 36 13 end Lorg/graalvm/compiler/nodes/AbstractEndNode;
29 36 14 merge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
31 33 15 mergedStates Ljava/util/ArrayList<TStateT;>;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;Lorg/graalvm/compiler/nodes/cfg/Block;TStateT;Ljava/util/function/Predicate<Lorg/graalvm/compiler/nodes/cfg/Block;>;)Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
MethodParameters:
Name Flags
closure
start
initialState
stopAtBlock
private static <StateT> boolean allEndsVisited(org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.FixedNode, StateT>, org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.AbstractMergeNode);
descriptor: (Lorg/graalvm/util/EconomicMap;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.forwardEnds:()Lorg/graalvm/compiler/graph/NodeInputList;
invokevirtual org.graalvm.compiler.graph.NodeInputList.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: org.graalvm.util.EconomicMap org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.AbstractMergeNode top java.util.Iterator
StackMap stack:
1: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
astore 3
start local 3 2: aload 3
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
if_acmpeq 4
aload 0
aload 3
invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
ifne 4
3: iconst_0
ireturn
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 states Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
0 6 1 current Lorg/graalvm/compiler/nodes/cfg/Block;
0 6 2 merge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
2 4 3 forwardEnd Lorg/graalvm/compiler/nodes/AbstractEndNode;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Z
MethodParameters:
Name Flags
states
current
merge
private static <StateT> org.graalvm.compiler.nodes.cfg.Block processMultipleSuccessors(org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure<StateT>, java.util.Deque<org.graalvm.compiler.nodes.cfg.Block>, org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.FixedNode, StateT>, StateT, org.graalvm.compiler.nodes.cfg.Block[]);
descriptor: (Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Ljava/util/Deque;Lorg/graalvm/util/EconomicMap;Ljava/lang/Object;[Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 1
aload 4
arraylength
iconst_1
if_icmpgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iconst_1
istore 5
start local 5 2: goto 7
3: StackMap locals: int
StackMap stack:
aload 4
iload 5
aaload
astore 6
start local 6 4: aload 1
aload 6
invokeinterface java.util.Deque.addFirst:(Ljava/lang/Object;)V
5: aload 2
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
aload 0
aload 3
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.cloneState:(Ljava/lang/Object;)Ljava/lang/Object;
invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 6: iinc 5 1
StackMap locals:
StackMap stack:
7: iload 5
aload 4
arraylength
if_icmplt 3
end local 5 8: aload 4
iconst_0
aaload
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 closure Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;
0 9 1 blockQueue Ljava/util/Deque<Lorg/graalvm/compiler/nodes/cfg/Block;>;
0 9 2 states Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
0 9 3 state TStateT;
0 9 4 successors [Lorg/graalvm/compiler/nodes/cfg/Block;
2 8 5 i I
4 6 6 successor Lorg/graalvm/compiler/nodes/cfg/Block;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;Ljava/util/Deque<Lorg/graalvm/compiler/nodes/cfg/Block;>;Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;TStateT;[Lorg/graalvm/compiler/nodes/cfg/Block;)Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
closure
blockQueue
states
state
successors
private static <StateT> java.util.ArrayList<StateT> mergeStates(org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.FixedNode, StateT>, StateT, org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.AbstractMergeNode);
descriptor: (Lorg/graalvm/util/EconomicMap;Ljava/lang/Object;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Ljava/util/ArrayList;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=11, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new java.util.ArrayList
dup
aload 4
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.forwardEndCount:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 5
start local 5 1: aload 3
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block[]
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 9
StackMap locals: org.graalvm.util.EconomicMap java.lang.Object org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.AbstractMergeNode java.util.ArrayList top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
2: aload 9
iload 7
aaload
astore 6
start local 6 3: getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 4
aload 6
aload 2
if_acmpeq 4
aload 0
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
ifne 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: org.graalvm.util.EconomicMap java.lang.Object org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.AbstractMergeNode java.util.ArrayList org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
aload 6
aload 2
if_acmpne 5
aload 1
goto 6
StackMap locals:
StackMap stack:
5: aload 0
aload 6
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getEndNode:()Lorg/graalvm/compiler/nodes/FixedNode;
invokeinterface org.graalvm.util.EconomicMap.removeKey:(Ljava/lang/Object;)Ljava/lang/Object;
StackMap locals:
StackMap stack: java.lang.Object
6: astore 10
start local 10 7: aload 5
aload 10
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 10 end local 6 8: iinc 7 1
StackMap locals: org.graalvm.util.EconomicMap java.lang.Object org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.AbstractMergeNode java.util.ArrayList top int int org.graalvm.compiler.nodes.cfg.Block[]
StackMap stack:
9: iload 7
iload 8
if_icmplt 2
10: aload 5
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 states Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
0 11 1 state TStateT;
0 11 2 current Lorg/graalvm/compiler/nodes/cfg/Block;
0 11 3 successor Lorg/graalvm/compiler/nodes/cfg/Block;
0 11 4 merge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
1 11 5 mergedStates Ljava/util/ArrayList<TStateT;>;
3 8 6 predecessor Lorg/graalvm/compiler/nodes/cfg/Block;
7 8 10 endState TStateT;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;TStateT;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Ljava/util/ArrayList<TStateT;>;
MethodParameters:
Name Flags
states
state
current
successor
merge
private static <StateT> void recurseIntoLoop(org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure<StateT>, java.util.Deque<org.graalvm.compiler.nodes.cfg.Block>, org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.FixedNode, StateT>, StateT, org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure;Ljava/util/Deque;Lorg/graalvm/util/EconomicMap;Ljava/lang/Object;Lorg/graalvm/compiler/nodes/cfg/Block;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=11, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 5
start local 5 1: aload 5
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 6
start local 6 2: getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 3
aload 4
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
aload 6
if_acmpeq 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode
StackMap stack:
aload 0
aload 5
aload 3
invokevirtual org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure.processLoop:(Lorg/graalvm/compiler/core/common/cfg/Loop;Ljava/lang/Object;)Ljava/util/List;
astore 7
start local 7 4: iconst_0
istore 8
start local 8 5: getstatic org.graalvm.compiler.phases.graph.ReentrantBlockIterator.$assertionsDisabled:Z
ifne 6
aload 5
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
invokeinterface java.util.List.size:()I
aload 7
invokeinterface java.util.List.size:()I
if_icmpeq 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: java.util.List int
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getExits:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 10
StackMap locals: org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure java.util.Deque org.graalvm.util.EconomicMap java.lang.Object org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.core.common.cfg.Loop org.graalvm.compiler.nodes.LoopBeginNode java.util.List int top java.util.Iterator
StackMap stack:
7: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 9
start local 9 8: aload 2
aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
aload 7
iload 8
iinc 8 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: aload 1
aload 9
invokeinterface java.util.Deque.addFirst:(Ljava/lang/Object;)V
end local 9 10: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
11: 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 12 0 closure Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;
0 12 1 blockQueue Ljava/util/Deque<Lorg/graalvm/compiler/nodes/cfg/Block;>;
0 12 2 states Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;
0 12 3 state TStateT;
0 12 4 successor Lorg/graalvm/compiler/nodes/cfg/Block;
1 12 5 loop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
2 12 6 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
4 12 7 exitStates Ljava/util/List<TStateT;>;
5 12 8 i I
8 10 9 exit Lorg/graalvm/compiler/nodes/cfg/Block;
Signature: <StateT:Ljava/lang/Object;>(Lorg/graalvm/compiler/phases/graph/ReentrantBlockIterator$BlockIteratorClosure<TStateT;>;Ljava/util/Deque<Lorg/graalvm/compiler/nodes/cfg/Block;>;Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;TStateT;>;TStateT;Lorg/graalvm/compiler/nodes/cfg/Block;)V
MethodParameters:
Name Flags
closure
blockQueue
states
state
successor
private static boolean lambda$0(org.graalvm.compiler.core.common.cfg.Loop, org.graalvm.compiler.nodes.cfg.Block);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/Loop;Lorg/graalvm/compiler/nodes/cfg/Block;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 1 0: aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 0
if_acmpeq 1
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopHeader:()Z
ifeq 2
StackMap locals:
StackMap stack:
1: iconst_0
goto 3
StackMap locals:
StackMap stack:
2: iconst_1
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 4 1 block Lorg/graalvm/compiler/nodes/cfg/Block;
}
SourceFile: "ReentrantBlockIterator.java"
NestMembers:
org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public Options = org.graalvm.compiler.core.common.util.CompilationAlarm$Options of org.graalvm.compiler.core.common.util.CompilationAlarm
public abstract BlockIteratorClosure = org.graalvm.compiler.phases.graph.ReentrantBlockIterator$BlockIteratorClosure of org.graalvm.compiler.phases.graph.ReentrantBlockIterator
public LoopInfo = org.graalvm.compiler.phases.graph.ReentrantBlockIterator$LoopInfo of org.graalvm.compiler.phases.graph.ReentrantBlockIterator