public abstract class org.graalvm.compiler.loop.phases.LoopTransformations
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.graalvm.compiler.loop.phases.LoopTransformations
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/loop/phases/LoopTransformations;
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.LoopTransformations.$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/loop/phases/LoopTransformations;
public static void peel(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.detectCounted:()Z
pop
1: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.inside:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.insertBefore:(Lorg/graalvm/compiler/loop/LoopEx;)V
2: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ifeq 4
3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
dconst_1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
dconst_1
dsub
invokestatic java.lang.Math.max:(DD)D
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopFrequency:(D)V
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 loop Lorg/graalvm/compiler/loop/LoopEx;
MethodParameters:
Name Flags
loop
public static void fullUnroll(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.nodes.spi.CoreProviders, org.graalvm.compiler.phases.common.CanonicalizerPhase);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/spi/CoreProviders;Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=18, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 3
start local 3 1: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 2: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
istore 5
start local 5 3: aload 1
invokeinterface org.graalvm.compiler.nodes.spi.CoreProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
aload 1
invokeinterface org.graalvm.compiler.nodes.spi.CoreProviders.getConstantReflection:()Ljdk/vm/ci/meta/ConstantReflectionProvider;
aload 1
invokeinterface org.graalvm.compiler.nodes.spi.CoreProviders.getConstantFieldProvider:()Lorg/graalvm/compiler/core/common/spi/ConstantFieldProvider;
4: aload 2
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.getCanonicalizeReads:()Z
aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getAssumptions:()Ljdk/vm/ci/meta/Assumptions;
aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
5: invokestatic org.graalvm.compiler.nodes.util.GraphUtil.getDefaultSimplifier:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/ConstantReflectionProvider;Lorg/graalvm/compiler/core/common/spi/ConstantFieldProvider;ZLjdk/vm/ci/meta/Assumptions;Lorg/graalvm/compiler/options/OptionValues;)Lorg/graalvm/compiler/graph/spi/SimplifierTool;
astore 6
start local 6 6: aload 2
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.copyWithoutSimplification:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
astore 7
start local 7 7: new org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener
dup
invokespecial org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener.<init>:()V
astore 8
start local 8 8: iconst_0
istore 9
start local 9 9: aconst_null
astore 10
aconst_null
astore 11
10: aload 4
aload 8
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.trackNodeEvents:(Lorg/graalvm/compiler/graph/Graph$NodeEventListener;)Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
astore 12
start local 12 11: goto 37
12: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.graph.spi.SimplifierTool org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getMark:()Lorg/graalvm/compiler/graph/Graph$Mark;
astore 13
start local 13 13: new org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener
dup
invokespecial org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener.<init>:()V
astore 14
start local 14 14: aconst_null
astore 15
aconst_null
astore 16
15: aload 4
aload 14
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.trackNodeEvents:(Lorg/graalvm/compiler/graph/Graph$NodeEventListener;)Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
astore 17
start local 17 16: aload 0
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.peel:(Lorg/graalvm/compiler/loop/LoopEx;)V
17: aload 17
ifnull 23
aload 17
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
goto 23
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.graph.spi.SimplifierTool org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.graph.Graph$Mark org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope
StackMap stack: java.lang.Throwable
18: astore 15
aload 17
ifnull 19
aload 17
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
end local 17 StackMap locals:
StackMap stack:
19: aload 15
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
20: astore 16
aload 15
ifnonnull 21
aload 16
astore 15
goto 22
StackMap locals:
StackMap stack:
21: aload 15
aload 16
if_acmpeq 22
aload 15
aload 16
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
22: aload 15
athrow
23: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_5
aload 4
ldc "After peeling loop %s"
aload 0
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
24: aload 7
aload 4
aload 1
aload 14
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
25: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.invalidateFragments:()V
26: aload 4
aload 13
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNewNodes:(Lorg/graalvm/compiler/graph/Graph$Mark;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 16
goto 32
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.graph.spi.SimplifierTool org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.graph.Graph$Mark org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener top java.util.Iterator
StackMap stack:
27: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 15
start local 15 28: aload 15
invokevirtual org.graalvm.compiler.graph.Node.isAlive:()Z
ifeq 32
aload 15
instanceof org.graalvm.compiler.nodes.IfNode
ifne 29
aload 15
instanceof org.graalvm.compiler.nodes.extended.SwitchNode
ifne 29
aload 15
instanceof org.graalvm.compiler.nodes.FixedGuardNode
ifne 29
aload 15
instanceof org.graalvm.compiler.nodes.BeginNode
ifeq 32
29: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.graph.spi.SimplifierTool org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.graph.Graph$Mark org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
aload 15
checkcast org.graalvm.compiler.graph.spi.Simplifiable
astore 17
start local 17 30: aload 17
aload 6
invokeinterface org.graalvm.compiler.graph.spi.Simplifiable.simplify:(Lorg/graalvm/compiler/graph/spi/SimplifierTool;)V
31: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_5
aload 4
ldc "After simplifying if %s"
aload 17
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
end local 17 end local 15 32: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.graph.spi.SimplifierTool org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.graph.Graph$Mark org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener top java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 27
33: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
iload 5
getstatic org.graalvm.compiler.core.common.GraalOptions.MaximumDesiredSize:Lorg/graalvm/compiler/options/OptionKey;
aload 4
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
iconst_2
imul
iadd
if_icmpgt 35
34: iload 9
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.FullUnrollMaxIterations:Lorg/graalvm/compiler/options/OptionKey;
aload 4
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
if_icmple 36
35: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.graph.spi.SimplifierTool org.graalvm.compiler.phases.common.CanonicalizerPhase org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.graph.Graph$NodeEventScope org.graalvm.compiler.graph.Graph$Mark org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener
StackMap stack:
new org.graalvm.compiler.core.common.RetryableBailoutException
dup
ldc "FullUnroll : Graph seems to grow out of proportion"
invokespecial org.graalvm.compiler.core.common.RetryableBailoutException.<init>:(Ljava/lang/String;)V
athrow
36: StackMap locals:
StackMap stack:
iinc 9 1
end local 14 end local 13 37: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isDeleted:()Z
ifeq 12
38: aload 12
ifnull 44
aload 12
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
goto 44
StackMap locals:
StackMap stack: java.lang.Throwable
39: astore 10
aload 12
ifnull 40
aload 12
invokevirtual org.graalvm.compiler.graph.Graph$NodeEventScope.close:()V
end local 12 StackMap locals:
StackMap stack:
40: aload 10
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
41: astore 11
aload 10
ifnonnull 42
aload 11
astore 10
goto 43
StackMap locals:
StackMap stack:
42: aload 10
aload 11
if_acmpeq 43
aload 10
aload 11
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
43: aload 10
athrow
44: StackMap locals:
StackMap stack:
aload 2
aload 4
aload 1
aload 8
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
45: return
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 46 0 loop Lorg/graalvm/compiler/loop/LoopEx;
0 46 1 context Lorg/graalvm/compiler/nodes/spi/CoreProviders;
0 46 2 canonicalizer Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
1 46 3 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 46 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 46 5 initialNodeCount I
6 46 6 defaultSimplifier Lorg/graalvm/compiler/graph/spi/SimplifierTool;
7 46 7 c Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
8 46 8 l Lorg/graalvm/compiler/phases/common/util/EconomicSetNodeEventListener;
9 46 9 peelings I
11 40 12 ev Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
13 37 13 newNodes Lorg/graalvm/compiler/graph/Graph$Mark;
14 37 14 peeledListener Lorg/graalvm/compiler/phases/common/util/EconomicSetNodeEventListener;
16 19 17 peeledScope Lorg/graalvm/compiler/graph/Graph$NodeEventScope;
28 32 15 n Lorg/graalvm/compiler/graph/Node;
30 32 17 s Lorg/graalvm/compiler/graph/spi/Simplifiable;
Exception table:
from to target type
16 17 18 any
15 20 20 any
11 38 39 any
10 41 41 any
MethodParameters:
Name Flags
loop
context
canonicalizer
public static void unswitch(org.graalvm.compiler.loop.LoopEx, java.util.List<org.graalvm.compiler.nodes.ControlSplitNode>);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=16, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 2
start local 2 1: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 3
start local 3 2: aload 2
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.incrementUnswitches:()V
4: aload 2
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.copyWithInputs:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 5
start local 5 5: aload 3
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
aload 5
invokevirtual org.graalvm.compiler.nodes.FixedNode.replaceAtPredecessor:(Lorg/graalvm/compiler/graph/Node;)V
6: aload 2
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.successorPositions:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 6
start local 6 7: getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 8
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
8: StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ControlSplitNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ControlSplitNode java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Position
astore 7
start local 7 9: aload 3
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
invokestatic org.graalvm.compiler.nodes.BeginNode.begin:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 8
start local 8 10: aload 7
aload 5
aload 8
invokevirtual org.graalvm.compiler.graph.Position.set:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
11: aload 8
aload 7
aload 2
invokevirtual org.graalvm.compiler.graph.Position.get:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.graph.Node.getNodeSourcePosition:()Lorg/graalvm/compiler/graph/NodeSourcePosition;
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNodeSourcePosition:(Lorg/graalvm/compiler/graph/NodeSourcePosition;)V
12: goto 26
13: StackMap locals: org.graalvm.compiler.graph.Position org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Position
astore 9
start local 9 14: aload 3
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 10
start local 10 15: aload 10
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
invokestatic org.graalvm.compiler.nodes.BeginNode.begin:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 11
start local 11 16: aload 11
aload 9
aload 2
invokevirtual org.graalvm.compiler.graph.Position.get:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.graph.Node.getNodeSourcePosition:()Lorg/graalvm/compiler/graph/NodeSourcePosition;
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNodeSourcePosition:(Lorg/graalvm/compiler/graph/NodeSourcePosition;)V
17: aload 9
aload 5
aload 11
invokevirtual org.graalvm.compiler.graph.Position.set:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
18: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 13
goto 25
StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ControlSplitNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ControlSplitNode java.util.Iterator org.graalvm.compiler.graph.Position org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.graph.Position org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.AbstractBeginNode top java.util.Iterator
StackMap stack:
19: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 12
start local 12 20: aload 10
aload 12
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 14
start local 14 21: aload 14
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.isAlive:()Z
ifeq 25
22: aload 9
aload 14
invokevirtual org.graalvm.compiler.graph.Position.get:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 15
start local 15 23: aload 15
getstatic org.graalvm.compiler.nodeinfo.InputType.Guard:Lorg/graalvm/compiler/nodeinfo/InputType;
aload 11
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.replaceAtUsages:(Lorg/graalvm/compiler/nodeinfo/InputType;Lorg/graalvm/compiler/graph/Node;)V
24: aload 4
aload 14
aload 15
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeSplitPropagate:(Lorg/graalvm/compiler/nodes/ControlSplitNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
end local 15 end local 14 end local 12 25: StackMap locals:
StackMap stack:
aload 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
end local 11 end local 10 end local 9 26: StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ControlSplitNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ControlSplitNode java.util.Iterator org.graalvm.compiler.graph.Position org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
27: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 33
StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ControlSplitNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ControlSplitNode java.util.Iterator org.graalvm.compiler.graph.Position org.graalvm.compiler.nodes.AbstractBeginNode top java.util.Iterator
StackMap stack:
28: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 9
start local 9 29: aload 9
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.isAlive:()Z
ifeq 33
30: aload 7
aload 9
invokevirtual org.graalvm.compiler.graph.Position.get:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 11
start local 11 31: aload 11
getstatic org.graalvm.compiler.nodeinfo.InputType.Guard:Lorg/graalvm/compiler/nodeinfo/InputType;
aload 8
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.replaceAtUsages:(Lorg/graalvm/compiler/nodeinfo/InputType;Lorg/graalvm/compiler/graph/Node;)V
32: aload 4
aload 9
aload 11
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeSplitPropagate:(Lorg/graalvm/compiler/nodes/ControlSplitNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
end local 11 end local 9 33: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 28
34: 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 35 0 loop Lorg/graalvm/compiler/loop/LoopEx;
0 35 1 controlSplitNodeSet Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
1 35 2 firstNode Lorg/graalvm/compiler/nodes/ControlSplitNode;
2 35 3 originalLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
3 35 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
5 35 5 newControlSplit Lorg/graalvm/compiler/nodes/ControlSplitNode;
7 35 6 successors Ljava/util/Iterator<Lorg/graalvm/compiler/graph/Position;>;
9 35 7 firstPosition Lorg/graalvm/compiler/graph/Position;
10 35 8 originalLoopBegin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
14 26 9 position Lorg/graalvm/compiler/graph/Position;
15 26 10 duplicateLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
16 26 11 newBegin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
20 25 12 controlSplitNode Lorg/graalvm/compiler/nodes/ControlSplitNode;
21 25 14 duplicatedControlSplit Lorg/graalvm/compiler/nodes/ControlSplitNode;
23 25 15 survivingSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
29 33 9 controlSplitNode Lorg/graalvm/compiler/nodes/ControlSplitNode;
31 33 11 survivingSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;)V
MethodParameters:
Name Flags
loop
controlSplitNodeSet
public static void partialUnroll(org.graalvm.compiler.loop.LoopEx, jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.nodes.LoopBeginNode, org.graalvm.compiler.nodes.extended.OpaqueNode>);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Ljdk/internal/vm/compiler/collections/EconomicMap;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isMainLoop:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
ldc "LoopPartialUnroll %s"
aload 0
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
2: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.inside:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
astore 2
start local 2 3: aload 2
aload 0
aload 1
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.insertWithinAfter:(Lorg/graalvm/compiler/loop/LoopEx;Ljdk/internal/vm/compiler/collections/EconomicMap;)V
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 loop Lorg/graalvm/compiler/loop/LoopEx;
0 5 1 opaqueUnrolledStrides Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/extended/OpaqueNode;>;
3 5 2 newSegment Lorg/graalvm/compiler/loop/LoopFragmentInside;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/extended/OpaqueNode;>;)V
MethodParameters:
Name Flags
loop
opaqueUnrolledStrides
public static org.graalvm.compiler.nodes.LoopBeginNode insertPrePostLoops(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Lorg/graalvm/compiler/nodes/LoopBeginNode;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=21, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 1
start local 1 1: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
ldc "LoopTransformations.insertPrePostLoops %s"
aload 0
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
2: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 2
start local 2 3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
astore 3
start local 3 4: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 4
start local 4 5: aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCountedExit:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 5
start local 5 6: getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 7
aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
aload 4
invokevirtual org.graalvm.compiler.graph.NodeBitMap.contains:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 8
aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
aload 5
invokevirtual org.graalvm.compiler.graph.NodeBitMap.contains:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 8
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
8: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 6
start local 6 9: aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 7
start local 7 10: aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.incrementSplits:()V
11: aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.incrementSplits:()V
12: aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setPreLoop:()V
13: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
aload 1
ldc "After duplication"
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
14: aload 6
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 8
start local 8 15: aload 8
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setMainLoop:()V
16: aload 7
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 9
start local 9 17: aload 9
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setPostLoop:()V
18: aload 7
aload 5
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 10
start local 10 19: aload 10
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.getBlockEndAfterLoopExit:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Lorg/graalvm/compiler/nodes/EndNode;
astore 11
start local 11 20: aload 11
invokevirtual org.graalvm.compiler.nodes.EndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 12
start local 12 21: aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 14
goto 25
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.AbstractMergeNode top java.util.Iterator
StackMap stack:
22: aload 14
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 13
start local 13 23: aload 6
aload 13
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 15
start local 15 24: aload 15
iconst_0
aload 13
invokevirtual org.graalvm.compiler.nodes.PhiNode.setValueAt:(ILorg/graalvm/compiler/nodes/ValueNode;)V
end local 15 end local 13 25: StackMap locals:
StackMap stack:
aload 14
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
26: aload 6
aload 5
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 13
start local 13 27: aload 13
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.getBlockEndAfterLoopExit:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Lorg/graalvm/compiler/nodes/EndNode;
astore 14
start local 14 28: aload 14
invokevirtual org.graalvm.compiler.nodes.EndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 15
start local 15 29: aload 9
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
astore 16
start local 16 30: aload 15
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 17
start local 17 31: aload 16
invokestatic org.graalvm.compiler.nodes.BeginNode.begin:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 18
start local 18 32: aload 13
aload 18
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
33: aload 5
aload 8
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
34: aload 0
aload 6
aload 7
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.processPreLoopPhis:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/LoopFragmentWhole;Lorg/graalvm/compiler/loop/LoopFragmentWhole;)V
35: aload 17
invokevirtual org.graalvm.compiler.nodes.FixedNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.graph.Node.clearSuccessors:()V
36: aload 10
aload 17
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
37: aload 12
aload 10
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.cleanupMerge:(Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
38: aload 15
aload 18
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.cleanupMerge:(Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
39: aload 3
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.updatePreLoopLimit:(Lorg/graalvm/compiler/loop/CountedLoopInfo;)V
40: aload 4
dconst_1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopFrequency:(D)V
41: aload 8
dconst_1
aload 8
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
ldc 2.0
dsub
invokestatic java.lang.Math.max:(DD)D
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopFrequency:(D)V
42: aload 9
dconst_1
aload 9
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
dconst_1
dsub
invokestatic java.lang.Math.max:(DD)D
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopFrequency:(D)V
43: aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
ldc Lorg/graalvm/compiler/nodes/SafepointNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 20
goto 46
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.AbstractBeginNode top java.util.Iterator
StackMap stack:
44: aload 20
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.SafepointNode
astore 19
start local 19 45: aload 1
aload 19
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
end local 19 46: StackMap locals:
StackMap stack:
aload 20
invokeinterface java.util.Iterator.hasNext:()Z
ifne 44
47: aload 7
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
ldc Lorg/graalvm/compiler/nodes/SafepointNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 20
goto 50
StackMap locals:
StackMap stack:
48: aload 20
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.SafepointNode
astore 19
start local 19 49: aload 1
aload 19
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
end local 19 50: StackMap locals:
StackMap stack:
aload 20
invokeinterface java.util.Iterator.hasNext:()Z
ifne 48
51: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_4
aload 1
ldc "InsertPrePostLoops %s"
aload 0
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
52: aload 8
areturn
end local 18 end local 17 end local 16 end local 15 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 53 0 loop Lorg/graalvm/compiler/loop/LoopEx;
1 53 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 53 2 preLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
4 53 3 preCounted Lorg/graalvm/compiler/loop/CountedLoopInfo;
5 53 4 preLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
6 53 5 preLoopExitNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
9 53 6 mainLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
10 53 7 postLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
15 53 8 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
17 53 9 postLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
19 53 10 postLoopExitNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
20 53 11 postEndNode Lorg/graalvm/compiler/nodes/EndNode;
21 53 12 postMergeNode Lorg/graalvm/compiler/nodes/AbstractMergeNode;
23 25 13 prePhiNode Lorg/graalvm/compiler/nodes/PhiNode;
24 25 15 mainPhiNode Lorg/graalvm/compiler/nodes/PhiNode;
27 53 13 mainLoopExitNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
28 53 14 mainEndNode Lorg/graalvm/compiler/nodes/EndNode;
29 53 15 mainMergeNode Lorg/graalvm/compiler/nodes/AbstractMergeNode;
30 53 16 postEntryNode Lorg/graalvm/compiler/nodes/AbstractEndNode;
31 53 17 continuationNode Lorg/graalvm/compiler/nodes/FixedNode;
32 53 18 mainLandingNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
45 46 19 safepoint Lorg/graalvm/compiler/nodes/SafepointNode;
49 50 19 safepoint Lorg/graalvm/compiler/nodes/SafepointNode;
MethodParameters:
Name Flags
loop
private static void cleanupMerge(org.graalvm.compiler.nodes.AbstractMergeNode, org.graalvm.compiler.nodes.AbstractBeginNode);
descriptor: (Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.cfgPredecessors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractBeginNode top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.EndNode
astore 2
start local 2 2: aload 0
aload 2
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.removeEnd:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)V
3: aload 2
invokevirtual org.graalvm.compiler.nodes.EndNode.safeDelete:()V
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: aload 0
aload 1
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.prepareDelete:(Lorg/graalvm/compiler/nodes/FixedNode;)V
6: aload 0
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.safeDelete:()V
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 mergeNode Lorg/graalvm/compiler/nodes/AbstractMergeNode;
0 8 1 landingNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
2 4 2 end Lorg/graalvm/compiler/nodes/EndNode;
MethodParameters:
Name Flags
mergeNode
landingNode
private static void processPreLoopPhis(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.loop.LoopFragmentWhole, org.graalvm.compiler.loop.LoopFragmentWhole);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/LoopFragmentWhole;Lorg/graalvm/compiler/loop/LoopFragmentWhole;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 3
start local 3 1: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 5
goto 13
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 4
start local 4 3: aload 2
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 6
start local 6 4: aload 1
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 7
start local 7 5: aload 6
iconst_0
aload 7
invokevirtual org.graalvm.compiler.nodes.PhiNode.setValueAt:(ILorg/graalvm/compiler/nodes/ValueNode;)V
6: aload 4
invokevirtual org.graalvm.compiler.nodes.PhiNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 12
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
7: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 8
start local 8 8: aload 8
aload 7
if_acmpne 10
9: goto 12
10: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
aload 0
aload 8
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 12
11: aload 8
aload 4
aload 6
invokevirtual org.graalvm.compiler.graph.Node.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
end local 8 12: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 7 end local 6 end local 4 13: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
14: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.inside:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.iterator:()Ljava/util/Iterator;
astore 5
goto 23
StackMap locals:
StackMap stack:
15: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 4
start local 4 16: aload 4
invokevirtual org.graalvm.compiler.graph.Node.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 22
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.graph.Node java.util.Iterator top java.util.Iterator
StackMap stack:
17: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 6
start local 6 18: aload 0
aload 6
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 22
19: aload 2
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
astore 8
start local 8 20: getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 21
aload 8
ifnonnull 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
21: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.graph.Node
StackMap stack:
aload 6
aload 4
aload 8
invokevirtual org.graalvm.compiler.graph.Node.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
end local 8 end local 6 22: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.graph.Node java.util.Iterator top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 17
end local 4 23: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 15
24: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 preLoop Lorg/graalvm/compiler/loop/LoopEx;
0 25 1 mainLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
0 25 2 postLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
1 25 3 preLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
3 13 4 prePhiNode Lorg/graalvm/compiler/nodes/PhiNode;
4 13 6 postPhiNode Lorg/graalvm/compiler/nodes/PhiNode;
5 13 7 mainPhiNode Lorg/graalvm/compiler/nodes/PhiNode;
8 12 8 usage Lorg/graalvm/compiler/graph/Node;
16 23 4 node Lorg/graalvm/compiler/graph/Node;
18 22 6 externalUsage Lorg/graalvm/compiler/graph/Node;
20 22 8 postUsage Lorg/graalvm/compiler/graph/Node;
MethodParameters:
Name Flags
preLoop
mainLoop
postLoop
private static org.graalvm.compiler.nodes.EndNode getBlockEndAfterLoopExit(org.graalvm.compiler.nodes.AbstractBeginNode);
descriptor: (Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Lorg/graalvm/compiler/nodes/EndNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 1
start local 1 1: aload 1
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.getBlockEnd:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/EndNode;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 exit Lorg/graalvm/compiler/nodes/AbstractBeginNode;
1 2 1 node Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
exit
private static org.graalvm.compiler.nodes.EndNode getBlockEnd(org.graalvm.compiler.nodes.FixedNode);
descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/EndNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
astore 1
start local 1 1: goto 3
2: StackMap locals: org.graalvm.compiler.nodes.FixedNode
StackMap stack:
aload 1
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 1
3: StackMap locals:
StackMap stack:
aload 1
instanceof org.graalvm.compiler.nodes.FixedWithNextNode
ifne 2
4: aload 1
checkcast org.graalvm.compiler.nodes.EndNode
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 node Lorg/graalvm/compiler/nodes/FixedNode;
1 5 1 curNode Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
node
private static void updatePreLoopLimit(org.graalvm.compiler.loop.CountedLoopInfo);
descriptor: (Lorg/graalvm/compiler/loop/CountedLoopInfo;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getStart:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 0
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.strideNode:()Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.AddNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 1
start local 1 1: aload 0
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimit:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 2
start local 2 2: aload 0
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounterIntegerHelper:()Lorg/graalvm/compiler/nodes/util/IntegerHelper;
astore 3
start local 3 3: aload 0
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getDirection:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpne 6
4: aload 3
aload 1
aload 2
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.util.IntegerHelper.createCompareNode:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/LogicNode;
astore 4
start local 4 5: goto 7
end local 4 6: StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.util.IntegerHelper
StackMap stack:
aload 3
aload 2
aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.util.IntegerHelper.createCompareNode:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/LogicNode;
astore 4
start local 4 7: StackMap locals: org.graalvm.compiler.nodes.LogicNode
StackMap stack:
aload 4
aload 1
aload 2
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.ConditionalNode.create:(Lorg/graalvm/compiler/nodes/LogicNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 1
8: aload 0
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimitTest:()Lorg/graalvm/compiler/nodes/IfNode;
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
checkcast org.graalvm.compiler.nodes.calc.CompareNode
astore 5
start local 5 9: aload 5
aload 2
aload 5
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUniqueWithInputs:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
10: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 preCounted Lorg/graalvm/compiler/loop/CountedLoopInfo;
1 11 1 newLimit Lorg/graalvm/compiler/nodes/ValueNode;
2 11 2 ub Lorg/graalvm/compiler/nodes/ValueNode;
3 11 3 helper Lorg/graalvm/compiler/nodes/util/IntegerHelper;
5 6 4 entryCheck Lorg/graalvm/compiler/nodes/LogicNode;
7 11 4 entryCheck Lorg/graalvm/compiler/nodes/LogicNode;
9 11 5 compareNode Lorg/graalvm/compiler/nodes/calc/CompareNode;
MethodParameters:
Name Flags
preCounted
public static java.util.List<org.graalvm.compiler.nodes.ControlSplitNode> findUnswitchable(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Ljava/util/List;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=6, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
ldc Lorg/graalvm/compiler/nodes/IfNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 4
goto 12
StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode top java.util.Iterator
StackMap stack:
3: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.IfNode
astore 3
start local 3 4: aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 12
5: aload 1
ifnonnull 10
6: aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
astore 2
7: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
8: aload 1
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
9: goto 12
StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.IfNode java.util.Iterator
StackMap stack:
10: aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
aload 2
if_acmpne 12
11: aload 1
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 3 12: StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
13: aload 1
ifnonnull 29
14: aconst_null
astore 3
start local 3 15: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
ldc Lorg/graalvm/compiler/nodes/extended/SwitchNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 5
goto 28
StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.extended.SwitchNode top java.util.Iterator
StackMap stack:
16: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.extended.SwitchNode
astore 4
start local 4 17: aload 4
invokevirtual org.graalvm.compiler.nodes.extended.SwitchNode.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmple 28
aload 0
aload 4
invokevirtual org.graalvm.compiler.nodes.extended.SwitchNode.value:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 28
18: aload 1
ifnonnull 24
19: aload 4
astore 3
20: aload 4
invokevirtual org.graalvm.compiler.nodes.extended.SwitchNode.value:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 2
21: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
22: aload 1
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
23: goto 28
StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.extended.SwitchNode org.graalvm.compiler.nodes.extended.SwitchNode java.util.Iterator
StackMap stack:
24: aload 4
invokevirtual org.graalvm.compiler.nodes.extended.SwitchNode.value:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 2
if_acmpne 28
25: getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 26
aload 3
ifnonnull 26
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
26: StackMap locals:
StackMap stack:
aload 3
aload 4
invokevirtual org.graalvm.compiler.nodes.extended.SwitchNode.structureEquals:(Lorg/graalvm/compiler/nodes/extended/SwitchNode;)Z
ifeq 28
27: aload 1
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 4 28: StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.extended.SwitchNode top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 16
end local 3 29: StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 loop Lorg/graalvm/compiler/loop/LoopEx;
1 30 1 controls Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
2 30 2 invariantValue Lorg/graalvm/compiler/nodes/ValueNode;
4 12 3 ifNode Lorg/graalvm/compiler/nodes/IfNode;
15 29 3 firstSwitch Lorg/graalvm/compiler/nodes/extended/SwitchNode;
17 28 4 switchNode Lorg/graalvm/compiler/nodes/extended/SwitchNode;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;)Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
MethodParameters:
Name Flags
loop
public static boolean isUnrollableLoop(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=5, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.isConstantStride:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getChildren:()Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifne 2
1: StackMap locals:
StackMap stack:
iconst_0
ireturn
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 3
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getDirection:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
ifnonnull 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 1
start local 1 4: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimitTest:()Lorg/graalvm/compiler/nodes/IfNode;
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
astore 2
start local 2 5: aload 2
instanceof org.graalvm.compiler.nodes.calc.CompareNode
ifne 7
6: iconst_0
ireturn
7: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LogicNode
StackMap stack:
aload 2
checkcast org.graalvm.compiler.nodes.calc.CompareNode
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.condition:()Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
getstatic org.graalvm.compiler.core.common.calc.CanonicalCondition.EQ:Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
if_acmpne 10
8: aload 2
invokevirtual org.graalvm.compiler.nodes.LogicNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "isUnrollableLoop %s condition unsupported %s "
aload 1
aload 2
checkcast org.graalvm.compiler.nodes.calc.CompareNode
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.condition:()Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
9: iconst_0
ireturn
10: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
lstore 3
start local 3 11: lload 3
lload 3
invokestatic java.lang.Math.addExact:(JJ)J
pop2
12: goto 16
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LogicNode long
StackMap stack: java.lang.ArithmeticException
13: pop
14: aload 2
invokevirtual org.graalvm.compiler.nodes.LogicNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "isUnrollableLoop %s doubling the stride overflows %d"
aload 1
lload 3
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
15: iconst_0
ireturn
16: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ifne 18
17: iconst_0
ireturn
18: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isMainLoop:()Z
ifne 19
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isSimpleLoop:()Z
ifeq 22
19: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_3
if_icmpge 21
20: iconst_1
ireturn
21: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.LogicNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "isUnrollableLoop %s too large to unroll %s "
aload 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getBlocks:()Ljava/util/List;
invokeinterface java.util.List.size:()I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;I)V
22: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 loop Lorg/graalvm/compiler/loop/LoopEx;
4 23 1 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
5 23 2 condition Lorg/graalvm/compiler/nodes/LogicNode;
11 23 3 stride J
Exception table:
from to target type
11 12 13 Class java.lang.ArithmeticException
MethodParameters:
Name Flags
loop
}
SourceFile: "LoopTransformations.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
public Options = org.graalvm.compiler.loop.DefaultLoopPolicies$Options of org.graalvm.compiler.loop.DefaultLoopPolicies
public final Direction = org.graalvm.compiler.loop.InductionVariable$Direction of org.graalvm.compiler.loop.InductionVariable