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.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
1: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
dconst_0
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
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 loop Lorg/graalvm/compiler/loop/LoopEx;
MethodParameters:
Name Flags
loop
public static void fullUnroll(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.phases.tiers.PhaseContext, org.graalvm.compiler.phases.common.CanonicalizerPhase);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/phases/tiers/PhaseContext;Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=7, 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: goto 10
4: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph int
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getMark:()Lorg/graalvm/compiler/graph/Graph$Mark;
astore 6
start local 6 5: aload 0
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.peel:(Lorg/graalvm/compiler/loop/LoopEx;)V
6: aload 2
aload 4
aload 1
aload 6
invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.applyIncremental:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/tiers/PhaseContext;Lorg/graalvm/compiler/graph/Graph$Mark;)V
7: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.invalidateFragments:()V
8: 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_icmple 10
9: 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
end local 6 10: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isDeleted:()Z
ifeq 4
11: 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 12 0 loop Lorg/graalvm/compiler/loop/LoopEx;
0 12 1 context Lorg/graalvm/compiler/phases/tiers/PhaseContext;
0 12 2 canonicalizer Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
1 12 3 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 12 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 12 5 initialNodeCount I
5 10 6 mark Lorg/graalvm/compiler/graph/Graph$Mark;
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);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 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 1
start local 1 3: aload 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.insertWithinAfter:(Lorg/graalvm/compiler/loop/LoopEx;)V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 loop Lorg/graalvm/compiler/loop/LoopEx;
3 5 1 newSegment Lorg/graalvm/compiler/loop/LoopFragmentInside;
MethodParameters:
Name Flags
loop
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=23, 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 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimitTest:()Lorg/graalvm/compiler/nodes/IfNode;
astore 4
start local 4 5: getstatic org.graalvm.compiler.loop.phases.LoopTransformations.$assertionsDisabled:Z
ifne 6
aload 4
ifnonnull 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: 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.IfNode
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 5
start local 5 7: aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
astore 6
start local 6 8: aload 5
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getSingleLoopExit:()Lorg/graalvm/compiler/nodes/LoopExitNode;
astore 7
start local 7 9: aload 7
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 8
start local 8 10: aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 9
start local 9 11: aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 10
start local 10 12: aload 5
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.incrementSplits:()V
13: aload 5
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.incrementSplits:()V
14: aload 5
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setPreLoop:()V
15: 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
16: aload 9
aload 5
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 11
start local 11 17: aload 11
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setMainLoop:()V
18: aload 10
aload 5
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
astore 12
start local 12 19: aload 12
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setPostLoop:()V
20: aload 12
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.getBlockEndAfterLoopExit:(Lorg/graalvm/compiler/nodes/LoopBeginNode;)Lorg/graalvm/compiler/nodes/EndNode;
astore 13
start local 13 21: aload 13
invokevirtual org.graalvm.compiler.nodes.EndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 14
start local 14 22: aload 12
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getSingleLoopExit:()Lorg/graalvm/compiler/nodes/LoopExitNode;
astore 15
start local 15 23: aload 5
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 17
goto 27
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.IfNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.LoopExitNode top java.util.Iterator
StackMap stack:
24: aload 17
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 16
start local 16 25: aload 9
aload 16
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 18
start local 18 26: aload 18
iconst_0
aload 16
invokevirtual org.graalvm.compiler.nodes.PhiNode.setValueAt:(ILorg/graalvm/compiler/nodes/ValueNode;)V
end local 18 end local 16 27: StackMap locals:
StackMap stack:
aload 17
invokeinterface java.util.Iterator.hasNext:()Z
ifne 24
28: aload 11
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.getBlockEndAfterLoopExit:(Lorg/graalvm/compiler/nodes/LoopBeginNode;)Lorg/graalvm/compiler/nodes/EndNode;
astore 16
start local 16 29: aload 16
invokevirtual org.graalvm.compiler.nodes.EndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 17
start local 17 30: aload 12
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
astore 18
start local 18 31: aload 18
invokestatic org.graalvm.compiler.nodes.BeginNode.begin:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 19
start local 19 32: aload 11
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getSingleLoopExit:()Lorg/graalvm/compiler/nodes/LoopExitNode;
astore 20
start local 20 33: aload 20
aload 19
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
34: aload 7
aload 11
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
35: aload 0
aload 9
aload 10
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.processPreLoopPhis:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/LoopFragmentWhole;Lorg/graalvm/compiler/loop/LoopFragmentWhole;)V
36: aload 8
invokevirtual org.graalvm.compiler.nodes.FixedNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.graph.Node.clearSuccessors:()V
37: aload 15
aload 8
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
38: aload 14
aload 15
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.cleanupMerge:(Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
39: aload 17
aload 19
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.cleanupMerge:(Lorg/graalvm/compiler/nodes/AbstractMergeNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
40: aload 4
aload 6
aload 9
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.updateMainLoopLimit:(Lorg/graalvm/compiler/nodes/IfNode;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/loop/LoopFragmentWhole;)V
41: aload 4
aload 6
aload 3
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.updatePreLoopLimit:(Lorg/graalvm/compiler/nodes/IfNode;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/loop/CountedLoopInfo;)V
42: aload 5
dconst_1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopFrequency:(D)V
43: aload 11
dconst_0
aload 11
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
44: aload 12
dconst_0
aload 12
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
45: 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 22
goto 48
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.IfNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.LoopExitNode top java.util.Iterator
StackMap stack:
46: aload 22
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.SafepointNode
astore 21
start local 21 47: aload 1
aload 21
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
end local 21 48: StackMap locals:
StackMap stack:
aload 22
invokeinterface java.util.Iterator.hasNext:()Z
ifne 46
49: aload 10
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 22
goto 52
StackMap locals:
StackMap stack:
50: aload 22
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.SafepointNode
astore 21
start local 21 51: aload 1
aload 21
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
end local 21 52: StackMap locals:
StackMap stack:
aload 22
invokeinterface java.util.Iterator.hasNext:()Z
ifne 50
53: 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
54: aload 11
areturn
end local 20 end local 19 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 55 0 loop Lorg/graalvm/compiler/loop/LoopEx;
1 55 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 55 2 preLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
4 55 3 preCounted Lorg/graalvm/compiler/loop/CountedLoopInfo;
5 55 4 preLimit Lorg/graalvm/compiler/nodes/IfNode;
7 55 5 preLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
8 55 6 preIv Lorg/graalvm/compiler/loop/InductionVariable;
9 55 7 preLoopExitNode Lorg/graalvm/compiler/nodes/LoopExitNode;
10 55 8 continuationNode Lorg/graalvm/compiler/nodes/FixedNode;
11 55 9 mainLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
12 55 10 postLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
17 55 11 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
19 55 12 postLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
21 55 13 postEndNode Lorg/graalvm/compiler/nodes/EndNode;
22 55 14 postMergeNode Lorg/graalvm/compiler/nodes/AbstractMergeNode;
23 55 15 postLoopExitNode Lorg/graalvm/compiler/nodes/LoopExitNode;
25 27 16 prePhiNode Lorg/graalvm/compiler/nodes/PhiNode;
26 27 18 mainPhiNode Lorg/graalvm/compiler/nodes/PhiNode;
29 55 16 mainEndNode Lorg/graalvm/compiler/nodes/EndNode;
30 55 17 mainMergeNode Lorg/graalvm/compiler/nodes/AbstractMergeNode;
31 55 18 postEntryNode Lorg/graalvm/compiler/nodes/AbstractEndNode;
32 55 19 mainLandingNode Lorg/graalvm/compiler/nodes/AbstractBeginNode;
33 55 20 mainLoopExitNode Lorg/graalvm/compiler/nodes/LoopExitNode;
47 48 21 safepoint Lorg/graalvm/compiler/nodes/SafepointNode;
51 52 21 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.LoopBeginNode);
descriptor: (Lorg/graalvm/compiler/nodes/LoopBeginNode;)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.LoopBeginNode.getSingleLoopExit:()Lorg/graalvm/compiler/nodes/LoopExitNode;
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.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 curLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
1 2 1 node Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
curLoopBegin
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 updateMainLoopLimit(org.graalvm.compiler.nodes.IfNode, org.graalvm.compiler.loop.InductionVariable, org.graalvm.compiler.loop.LoopFragmentWhole);
descriptor: (Lorg/graalvm/compiler/nodes/IfNode;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/loop/LoopFragmentWhole;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.graalvm.compiler.nodes.IfNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 3
start local 3 1: aload 2
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.IfNode
astore 4
start local 4 2: aload 4
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
astore 5
start local 5 3: aload 5
checkcast org.graalvm.compiler.nodes.calc.CompareNode
astore 6
start local 6 4: aload 1
invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 7
start local 7 5: aload 2
aload 7
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 8
start local 8 6: aload 1
invokevirtual org.graalvm.compiler.loop.InductionVariable.strideNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
start local 9 7: aload 9
instanceof org.graalvm.compiler.nodes.ConstantNode
ifeq 10
8: aload 9
astore 10
start local 10 9: goto 11
end local 10 10: StackMap locals: org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 2
aload 9
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 10
start local 10 11: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aconst_null
astore 11
start local 11 12: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 8
if_acmpne 15
13: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
14: goto 19
StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
15: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 8
if_acmpne 18
16: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
17: goto 19
18: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
19: StackMap locals:
StackMap stack:
aload 3
aload 11
aload 10
invokestatic org.graalvm.compiler.loop.MathUtil.sub:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 12
start local 12 20: aload 6
aload 11
aload 12
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
21: return
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 22 0 preLimit Lorg/graalvm/compiler/nodes/IfNode;
0 22 1 preIv Lorg/graalvm/compiler/loop/InductionVariable;
0 22 2 mainLoop Lorg/graalvm/compiler/loop/LoopFragmentWhole;
1 22 3 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
2 22 4 mainLimit Lorg/graalvm/compiler/nodes/IfNode;
3 22 5 ifTest Lorg/graalvm/compiler/nodes/LogicNode;
4 22 6 compareNode Lorg/graalvm/compiler/nodes/calc/CompareNode;
5 22 7 prePhi Lorg/graalvm/compiler/nodes/ValueNode;
6 22 8 mainPhi Lorg/graalvm/compiler/nodes/ValueNode;
7 22 9 preStride Lorg/graalvm/compiler/nodes/ValueNode;
9 10 10 mainStride Lorg/graalvm/compiler/nodes/ValueNode;
11 22 10 mainStride Lorg/graalvm/compiler/nodes/ValueNode;
12 22 11 ub Lorg/graalvm/compiler/nodes/ValueNode;
20 22 12 newLimit Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
preLimit
preIv
mainLoop
private static void updatePreLoopLimit(org.graalvm.compiler.nodes.IfNode, org.graalvm.compiler.loop.InductionVariable, org.graalvm.compiler.loop.CountedLoopInfo);
descriptor: (Lorg/graalvm/compiler/nodes/IfNode;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/loop/CountedLoopInfo;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.graalvm.compiler.nodes.IfNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 3
start local 3 1: aload 0
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
astore 4
start local 4 2: aload 4
checkcast org.graalvm.compiler.nodes.calc.CompareNode
astore 5
start local 5 3: aload 1
invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 6
start local 6 4: aload 2
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getStart:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 7
start local 7 5: aload 3
aload 7
aload 1
invokevirtual org.graalvm.compiler.loop.InductionVariable.strideNode:()Lorg/graalvm/compiler/nodes/ValueNode;
invokestatic org.graalvm.compiler.loop.MathUtil.add:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 8
start local 8 6: aload 5
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 6
if_acmpne 9
7: aload 5
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
start local 9 8: goto 13
end local 9 StackMap locals: org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
9: aload 5
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 6
if_acmpne 12
10: aload 5
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
start local 9 11: goto 13
end local 9 12: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
start local 9 13: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpne 16
14: aload 5
aload 9
aload 3
new org.graalvm.compiler.nodes.calc.ConditionalNode
dup
aload 3
new org.graalvm.compiler.nodes.calc.IntegerLessThanNode
dup
aload 8
aload 9
invokespecial org.graalvm.compiler.nodes.calc.IntegerLessThanNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LogicNode
aload 8
aload 9
invokespecial org.graalvm.compiler.nodes.calc.ConditionalNode.<init>:(Lorg/graalvm/compiler/nodes/LogicNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(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
15: goto 17
16: StackMap locals:
StackMap stack:
aload 5
aload 9
aload 3
new org.graalvm.compiler.nodes.calc.ConditionalNode
dup
aload 3
new org.graalvm.compiler.nodes.calc.IntegerLessThanNode
dup
aload 9
aload 8
invokespecial org.graalvm.compiler.nodes.calc.IntegerLessThanNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LogicNode
aload 8
aload 9
invokespecial org.graalvm.compiler.nodes.calc.ConditionalNode.<init>:(Lorg/graalvm/compiler/nodes/LogicNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(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
17: StackMap locals:
StackMap stack:
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 18 0 preLimit Lorg/graalvm/compiler/nodes/IfNode;
0 18 1 preIv Lorg/graalvm/compiler/loop/InductionVariable;
0 18 2 preCounted Lorg/graalvm/compiler/loop/CountedLoopInfo;
1 18 3 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
2 18 4 ifTest Lorg/graalvm/compiler/nodes/LogicNode;
3 18 5 compareNode Lorg/graalvm/compiler/nodes/calc/CompareNode;
4 18 6 prePhi Lorg/graalvm/compiler/nodes/ValueNode;
5 18 7 initIv Lorg/graalvm/compiler/nodes/ValueNode;
6 18 8 newLimit Lorg/graalvm/compiler/nodes/ValueNode;
8 9 9 ub Lorg/graalvm/compiler/nodes/ValueNode;
11 12 9 ub Lorg/graalvm/compiler/nodes/ValueNode;
13 18 9 ub Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
preLimit
preIv
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 27
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 26
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 26
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 26
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 26
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 26
aload 3
aload 4
invokevirtual org.graalvm.compiler.nodes.extended.SwitchNode.structureEquals:(Lorg/graalvm/compiler/nodes/extended/SwitchNode;)Z
ifeq 26
25: aload 1
aload 4
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 4 26: 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 27: 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 28 0 loop Lorg/graalvm/compiler/loop/LoopEx;
1 28 1 controls Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
2 28 2 invariantValue Lorg/graalvm/compiler/nodes/ValueNode;
4 12 3 ifNode Lorg/graalvm/compiler/nodes/IfNode;
15 27 3 firstSwitch Lorg/graalvm/compiler/nodes/extended/SwitchNode;
17 26 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=5, locals=3, 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:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 1
start local 1 3: 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 4: aload 2
instanceof org.graalvm.compiler.nodes.calc.CompareNode
ifne 6
5: iconst_0
ireturn
6: 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 9
7: 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
8: iconst_0
ireturn
9: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isMainLoop:()Z
ifne 10
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isSimpleLoop:()Z
ifeq 13
10: 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 12
11: iconst_1
ireturn
12: 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
13: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 loop Lorg/graalvm/compiler/loop/LoopEx;
3 14 1 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
4 14 2 condition Lorg/graalvm/compiler/nodes/LogicNode;
MethodParameters:
Name Flags
loop
}
SourceFile: "LoopTransformations.java"
InnerClasses:
public Mark = org.graalvm.compiler.graph.Graph$Mark of org.graalvm.compiler.graph.Graph
public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node
public final Direction = org.graalvm.compiler.loop.InductionVariable$Direction of org.graalvm.compiler.loop.InductionVariable