public class org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase extends org.graalvm.compiler.loop.phases.LoopPhase<org.graalvm.compiler.loop.LoopPolicies>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase
super_class: org.graalvm.compiler.loop.phases.LoopPhase
{
private final org.graalvm.compiler.phases.common.CanonicalizerPhase canonicalizer;
descriptor: Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/loop/phases/LoopPartialUnrollPhase;
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.loop.phases.LoopPartialUnrollPhase.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.graalvm.compiler.loop.LoopPolicies, org.graalvm.compiler.phases.common.CanonicalizerPhase);
descriptor: (Lorg/graalvm/compiler/loop/LoopPolicies;Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokespecial org.graalvm.compiler.loop.phases.LoopPhase.<init>:(Lorg/graalvm/compiler/loop/LoopPolicies;)V
1: aload 0
aload 2
putfield org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.canonicalizer:Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/phases/LoopPartialUnrollPhase;
0 3 1 policies Lorg/graalvm/compiler/loop/LoopPolicies;
0 3 2 canonicalizer Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
MethodParameters:
Name Flags
policies
canonicalizer
protected void run(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.phases.tiers.PhaseContext);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasLoops:()Z
ifeq 35
1: new org.graalvm.compiler.phases.common.util.HashSetNodeEventListener
dup
invokespecial org.graalvm.compiler.phases.common.util.HashSetNodeEventListener.<init>:()V
astore 3
start local 3 2: iconst_1
istore 4
start local 4 3: goto 34
4: StackMap locals: org.graalvm.compiler.phases.common.util.HashSetNodeEventListener int
StackMap stack:
iconst_0
istore 4
5: aconst_null
astore 5
aconst_null
astore 6
6: aload 1
aload 3
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.trackNodeEvents:(Lorg/graalvm/compiler/graph/Graph$NodeEventListener;)Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
astore 7
start local 7 7: new org.graalvm.compiler.loop.LoopsData
dup
aload 1
invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
astore 8
start local 8 8: aload 8
invokevirtual org.graalvm.compiler.loop.LoopsData.detectedCountedLoops:()V
9: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getMark:()Lorg/graalvm/compiler/graph/Graph$Mark;
astore 9
start local 9 10: iconst_0
istore 10
start local 10 11: aload 8
invokevirtual org.graalvm.compiler.loop.LoopsData.countedLoops:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 12
goto 22
StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.phases.tiers.PhaseContext org.graalvm.compiler.phases.common.util.HashSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.graph.Graph$Mark int top java.util.Iterator
StackMap stack:
12: aload 12
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.LoopEx
astore 11
start local 11 13: aload 11
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.isUnrollableLoop:(Lorg/graalvm/compiler/loop/LoopEx;)Z
ifne 15
14: goto 22
15: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.phases.tiers.PhaseContext org.graalvm.compiler.phases.common.util.HashSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.graph.Graph$Mark int org.graalvm.compiler.loop.LoopEx java.util.Iterator
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.getPolicies:()Lorg/graalvm/compiler/loop/LoopPolicies;
aload 11
invokeinterface org.graalvm.compiler.loop.LoopPolicies.shouldPartiallyUnroll:(Lorg/graalvm/compiler/loop/LoopEx;)Z
ifeq 22
16: aload 11
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isSimpleLoop:()Z
ifeq 20
17: aload 11
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.insertPrePostLoops:(Lorg/graalvm/compiler/loop/LoopEx;)Lorg/graalvm/compiler/nodes/LoopBeginNode;
pop
18: iconst_1
istore 10
19: goto 21
20: StackMap locals:
StackMap stack:
aload 11
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.partialUnroll:(Lorg/graalvm/compiler/loop/LoopEx;)V
21: StackMap locals:
StackMap stack:
iconst_1
istore 4
end local 11 22: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.phases.tiers.PhaseContext org.graalvm.compiler.phases.common.util.HashSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.graph.Graph$Mark int top java.util.Iterator
StackMap stack:
aload 12
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
23: aload 8
invokevirtual org.graalvm.compiler.loop.LoopsData.deleteUnusedNodes:()V
24: aload 3
invokevirtual org.graalvm.compiler.phases.common.util.HashSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.isEmpty:()Z
ifne 27
25: aload 0
getfield org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.canonicalizer:Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
aload 1
aload 2
aload 3
invokevirtual org.graalvm.compiler.phases.common.util.HashSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.applyIncremental:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;Ljava/lang/Iterable;)V
26: aload 3
invokevirtual org.graalvm.compiler.phases.common.util.HashSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.clear:()V
27: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.phases.tiers.PhaseContext org.graalvm.compiler.phases.common.util.HashSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.graph.Graph$Mark int
StackMap stack:
getstatic org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.$assertionsDisabled:Z
ifne 28
iload 10
ifeq 28
aload 1
aload 9
invokestatic org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.checkCounted:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/graph/Graph$Mark;)Z
ifne 28
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 10 end local 9 end local 8 28: StackMap locals:
StackMap stack:
aload 7
ifnull 34
aload 7
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
goto 34
StackMap locals:
StackMap stack: java.lang.Throwable
29: astore 5
aload 7
ifnull 30
aload 7
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
end local 7 StackMap locals:
StackMap stack:
30: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
31: astore 6
aload 5
ifnonnull 32
aload 6
astore 5
goto 33
StackMap locals:
StackMap stack:
32: aload 5
aload 6
if_acmpeq 33
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
33: aload 5
athrow
34: StackMap locals:
StackMap stack:
iload 4
ifne 4
end local 4 end local 3 35: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lorg/graalvm/compiler/loop/phases/LoopPartialUnrollPhase;
0 36 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 36 2 context Lorg/graalvm/compiler/phases/tiers/PhaseContext;
2 35 3 listener Lorg/graalvm/compiler/phases/common/util/HashSetNodeEventListener;
3 35 4 changed Z
7 30 7 nes Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
8 28 8 dataCounted Lorg/graalvm/compiler/loop/LoopsData;
10 28 9 mark Lorg/graalvm/compiler/graph/Graph$Mark;
11 28 10 prePostInserted Z
13 22 11 loop Lorg/graalvm/compiler/loop/LoopEx;
Exception table:
from to target type
7 28 29 any
6 31 31 any
MethodParameters:
Name Flags
graph
context
private static boolean checkCounted(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.graph.Graph$Mark);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/graph/Graph$Mark;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: new org.graalvm.compiler.loop.LoopsData
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
astore 2
start local 2 1: aload 2
invokevirtual org.graalvm.compiler.loop.LoopsData.detectedCountedLoops:()V
2: aload 2
invokevirtual org.graalvm.compiler.loop.LoopsData.loops:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 6
StackMap locals: org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.graph.Graph$Mark org.graalvm.compiler.loop.LoopsData top java.util.Iterator
StackMap stack:
3: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.LoopEx
astore 3
start local 3 4: aload 0
aload 1
aload 3
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.isNew:(Lorg/graalvm/compiler/graph/Graph$Mark;Lorg/graalvm/compiler/graph/Node;)Z
ifeq 6
5: getstatic org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.$assertionsDisabled:Z
ifne 6
aload 3
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ifne 6
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "pre/post transformation loses counted loop "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
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
end local 3 6: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
7: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 8 1 mark Lorg/graalvm/compiler/graph/Graph$Mark;
1 8 2 dataCounted Lorg/graalvm/compiler/loop/LoopsData;
4 6 3 anyLoop Lorg/graalvm/compiler/loop/LoopEx;
MethodParameters:
Name Flags
graph
mark
public boolean checkContract();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/phases/LoopPartialUnrollPhase;
protected void run(org.graalvm.compiler.nodes.StructuredGraph, java.lang.Object);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
aload 2
checkcast org.graalvm.compiler.phases.tiers.PhaseContext
invokevirtual org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.run:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Lorg/graalvm/compiler/loop/phases/LoopPhase<Lorg/graalvm/compiler/loop/LoopPolicies;>;
SourceFile: "LoopPartialUnrollPhase.java"
InnerClasses:
public Mark = org.graalvm.compiler.graph.Graph$Mark of org.graalvm.compiler.graph.Graph
public abstract NodeEventListener = org.graalvm.compiler.graph.Graph$NodeEventListener of org.graalvm.compiler.graph.Graph
public final NodeEventScope = org.graalvm.compiler.graph.Graph$NodeEventScope of org.graalvm.compiler.graph.Graph