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.nodes.spi.CoreProviders);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/spi/CoreProviders;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=14, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasLoops:()Z
ifeq 53
1: new org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener
dup
invokespecial org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener.<init>:()V
astore 3
start local 3 2: iconst_1
istore 4
start local 4 3: aconst_null
astore 5
start local 5 4: goto 37
5: StackMap locals: org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap
StackMap stack:
iconst_0
istore 4
6: aconst_null
astore 6
aconst_null
astore 7
7: aload 1
aload 3
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.trackNodeEvents:(Lorg/graalvm/compiler/graph/Graph$NodeEventListener;)Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
astore 8
start local 8 8: new org.graalvm.compiler.loop.LoopsData
dup
aload 1
invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
astore 9
start local 9 9: aload 9
invokevirtual org.graalvm.compiler.loop.LoopsData.detectedCountedLoops:()V
10: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getMark:()Lorg/graalvm/compiler/graph/Graph$Mark;
astore 10
start local 10 11: iconst_0
istore 11
start local 11 12: aload 9
invokevirtual org.graalvm.compiler.loop.LoopsData.countedLoops:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 13
goto 25
StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap 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:
13: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.LoopEx
astore 12
start local 12 14: aload 12
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.isUnrollableLoop:(Lorg/graalvm/compiler/loop/LoopEx;)Z
ifne 16
15: goto 25
16: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap 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 12
invokeinterface org.graalvm.compiler.loop.LoopPolicies.shouldPartiallyUnroll:(Lorg/graalvm/compiler/loop/LoopEx;)Z
ifeq 25
17: aload 12
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isSimpleLoop:()Z
ifeq 21
18: aload 12
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.insertPrePostLoops:(Lorg/graalvm/compiler/loop/LoopEx;)Lorg/graalvm/compiler/nodes/LoopBeginNode;
pop
19: iconst_1
istore 11
20: goto 24
21: StackMap locals:
StackMap stack:
aload 5
ifnonnull 23
22: getstatic jdk.internal.vm.compiler.collections.Equivalence.IDENTITY:Ljdk/internal/vm/compiler/collections/Equivalence;
invokestatic jdk.internal.vm.compiler.collections.EconomicMap.create:(Ljdk/internal/vm/compiler/collections/Equivalence;)Ljdk/internal/vm/compiler/collections/EconomicMap;
astore 5
23: StackMap locals:
StackMap stack:
aload 12
aload 5
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.partialUnroll:(Lorg/graalvm/compiler/loop/LoopEx;Ljdk/internal/vm/compiler/collections/EconomicMap;)V
24: StackMap locals:
StackMap stack:
iconst_1
istore 4
end local 12 25: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap 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 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
26: aload 9
invokevirtual org.graalvm.compiler.loop.LoopsData.deleteUnusedNodes:()V
27: aload 3
invokevirtual org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.isEmpty:()Z
ifne 30
28: 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.EconomicSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.applyIncremental:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/spi/CoreProviders;Ljava/lang/Iterable;)V
29: aload 3
invokevirtual org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.clear:()V
30: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap 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 31
iload 11
ifeq 31
aload 1
aload 10
invokestatic org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.checkCounted:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/graph/Graph$Mark;)Z
ifne 31
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 11 end local 10 end local 9 31: StackMap locals:
StackMap stack:
aload 8
ifnull 37
aload 8
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
goto 37
StackMap locals:
StackMap stack: java.lang.Throwable
32: astore 6
aload 8
ifnull 33
aload 8
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
end local 8 StackMap locals:
StackMap stack:
33: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
34: astore 7
aload 6
ifnonnull 35
aload 7
astore 6
goto 36
StackMap locals:
StackMap stack:
35: aload 6
aload 7
if_acmpeq 36
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
36: aload 6
athrow
37: StackMap locals:
StackMap stack:
iload 4
ifne 5
38: aload 5
ifnull 53
39: aconst_null
astore 6
aconst_null
astore 7
40: aload 1
aload 3
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.trackNodeEvents:(Lorg/graalvm/compiler/graph/Graph$NodeEventListener;)Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
astore 8
start local 8 41: aload 5
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.getValues:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 10
goto 44
StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope top java.util.Iterator
StackMap stack:
42: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.extended.OpaqueNode
astore 9
start local 9 43: aload 9
invokevirtual org.graalvm.compiler.nodes.extended.OpaqueNode.remove:()V
end local 9 44: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 42
45: aload 3
invokevirtual org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.isEmpty:()Z
ifne 47
46: 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.EconomicSetNodeEventListener.getNodes:()Ljdk/internal/vm/compiler/collections/EconomicSet;
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.applyIncremental:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/spi/CoreProviders;Ljava/lang/Iterable;)V
47: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int jdk.internal.vm.compiler.collections.EconomicMap java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope
StackMap stack:
aload 8
ifnull 53
aload 8
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
goto 53
StackMap locals:
StackMap stack: java.lang.Throwable
48: astore 6
aload 8
ifnull 49
aload 8
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
end local 8 StackMap locals:
StackMap stack:
49: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
50: astore 7
aload 6
ifnonnull 51
aload 7
astore 6
goto 52
StackMap locals:
StackMap stack:
51: aload 6
aload 7
if_acmpeq 52
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
52: aload 6
athrow
end local 5 end local 4 end local 3 53: StackMap locals: org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Lorg/graalvm/compiler/loop/phases/LoopPartialUnrollPhase;
0 54 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 54 2 context Lorg/graalvm/compiler/nodes/spi/CoreProviders;
2 53 3 listener Lorg/graalvm/compiler/phases/common/util/EconomicSetNodeEventListener;
3 53 4 changed Z
4 53 5 opaqueUnrolledStrides Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/extended/OpaqueNode;>;
8 33 8 nes Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
9 31 9 dataCounted Lorg/graalvm/compiler/loop/LoopsData;
11 31 10 mark Lorg/graalvm/compiler/graph/Graph$Mark;
12 31 11 prePostInserted Z
14 25 12 loop Lorg/graalvm/compiler/loop/LoopEx;
41 49 8 nes Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
43 44 9 opaque Lorg/graalvm/compiler/nodes/extended/OpaqueNode;
Exception table:
from to target type
8 31 32 any
7 34 34 any
41 47 48 any
40 50 50 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.nodes.spi.CoreProviders
invokevirtual org.graalvm.compiler.loop.phases.LoopPartialUnrollPhase.run:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/spi/CoreProviders;)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