public class org.graalvm.compiler.loop.DefaultLoopPolicies implements org.graalvm.compiler.loop.LoopPolicies
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.loop.DefaultLoopPolicies
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
public boolean shouldPeel(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.nodes.cfg.ControlFlowGraph, jdk.vm.ci.meta.MetaAccessProvider);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;Ljdk/vm/ci/meta/MetaAccessProvider;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 4
start local 4 1: aload 2
aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
invokevirtual org.graalvm.compiler.nodes.cfg.Block.probability:()D
dstore 5
start local 5 2: aload 2
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
astore 7
start local 7 3: dload 5
getstatic org.graalvm.compiler.core.common.GraalOptions.MinimumPeelProbability:Lorg/graalvm/compiler/options/OptionKey;
aload 7
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Float
invokevirtual java.lang.Float.floatValue:()F
f2d
dcmpl
ifle 5
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
iadd
getstatic org.graalvm.compiler.core.common.GraalOptions.MaximumDesiredSize:Lorg/graalvm/compiler/options/OptionKey;
aload 7
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_icmpge 5
4: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ireturn
5: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode double org.graalvm.compiler.options.OptionValues
StackMap stack:
iconst_0
ireturn
end local 7 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 6 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 6 1 loop Lorg/graalvm/compiler/loop/LoopEx;
0 6 2 cfg Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 6 3 metaAccess Ljdk/vm/ci/meta/MetaAccessProvider;
1 6 4 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 6 5 entryProbability D
3 6 7 options Lorg/graalvm/compiler/options/OptionValues;
MethodParameters:
Name Flags
loop
cfg
metaAccess
public boolean shouldFullUnroll(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ifeq 1
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.isConstantMaxTripCount:()Z
ifne 2
1: StackMap locals:
StackMap stack:
iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual org.graalvm.compiler.nodes.FixedNode.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
astore 2
start local 2 3: aload 1
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.constantMaxTripCount:()Lorg/graalvm/compiler/core/common/util/UnsignedLong;
astore 4
start local 4 5: aload 4
lconst_0
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.equals:(J)Z
ifeq 7
6: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ireturn
7: StackMap locals: org.graalvm.compiler.options.OptionValues org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.core.common.util.UnsignedLong
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.isExactTripCount:()Z
ifeq 8
aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.isConstantExactTripCount:()Z
ifeq 8
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.ExactFullUnrollMaxNodes:Lorg/graalvm/compiler/options/OptionKey;
aload 2
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Integer
goto 9
StackMap locals:
StackMap stack:
8: getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.FullUnrollMaxNodes:Lorg/graalvm/compiler/options/OptionKey;
aload 2
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Integer
StackMap locals:
StackMap stack: java.lang.Integer
9: invokevirtual java.lang.Integer.intValue:()I
istore 5
start local 5 10: iload 5
iconst_0
getstatic org.graalvm.compiler.core.common.GraalOptions.MaximumDesiredSize:Lorg/graalvm/compiler/options/OptionKey;
aload 2
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
aload 1
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.getNodeCount:()I
isub
invokestatic java.lang.Math.max:(II)I
invokestatic java.lang.Math.min:(II)I
istore 5
11: iconst_1
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
iconst_1
isub
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
isub
invokestatic java.lang.Math.max:(II)I
istore 6
start local 6 12: aload 4
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.FullUnrollMaxIterations:Lorg/graalvm/compiler/options/OptionKey;
aload 2
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
i2l
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.isLessOrEqualTo:(J)Z
ifeq 14
aload 4
lconst_1
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.minus:(J)Lorg/graalvm/compiler/core/common/util/UnsignedLong;
iload 6
i2l
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.times:(J)Lorg/graalvm/compiler/core/common/util/UnsignedLong;
iload 5
i2l
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.isLessOrEqualTo:(J)Z
ifeq 14
13: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ireturn
14: StackMap locals: int int
StackMap stack:
iconst_0
ireturn
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 15 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 15 1 loop Lorg/graalvm/compiler/loop/LoopEx;
3 15 2 options Lorg/graalvm/compiler/options/OptionValues;
4 15 3 counted Lorg/graalvm/compiler/loop/CountedLoopInfo;
5 15 4 maxTrips Lorg/graalvm/compiler/core/common/util/UnsignedLong;
10 15 5 maxNodes I
12 15 6 size I
MethodParameters:
Name Flags
loop
public boolean shouldPartiallyUnroll(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=10, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 2
start local 2 1: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ifne 4
2: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "shouldPartiallyUnroll %s isn't counted"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;)V
3: iconst_0
ireturn
4: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual org.graalvm.compiler.nodes.FixedNode.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
astore 3
start local 3 5: getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.ExactPartialUnrollMaxNodes:Lorg/graalvm/compiler/options/OptionKey;
aload 3
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 4
start local 4 6: iload 4
iconst_0
getstatic org.graalvm.compiler.core.common.GraalOptions.MaximumDesiredSize:Lorg/graalvm/compiler/options/OptionKey;
aload 3
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
aload 1
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.getNodeCount:()I
isub
invokestatic java.lang.Math.max:(II)I
invokestatic java.lang.Math.min:(II)I
istore 4
7: iconst_1
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
iconst_1
isub
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
isub
invokestatic java.lang.Math.max:(II)I
istore 5
start local 5 8: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getUnrollFactor:()I
istore 6
start local 6 9: iload 6
iconst_1
if_icmpne 15
10: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
dstore 7
start local 7 11: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isSimpleLoop:()Z
ifeq 14
dload 7
ldc 5.0
dcmpg
ifge 14
12: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "shouldPartiallyUnroll %s frequency too low %s "
aload 2
dload 7
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
13: iconst_0
ireturn
14: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.options.OptionValues int int int double
StackMap stack:
aload 2
dload 7
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopOrigFrequency:(D)V
end local 7 15: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.UnrollMaxIterations:Lorg/graalvm/compiler/options/OptionKey;
aload 3
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 7
start local 7 16: iload 5
iload 5
iadd
istore 5
17: iload 7
iconst_1
if_icmpne 18
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isSimpleLoop:()Z
ifne 19
StackMap locals: int
StackMap stack:
18: iload 5
iload 4
if_icmpgt 29
iload 6
iload 7
if_icmpge 29
19: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopOrigFrequency:()D
d2i
iload 6
iconst_2
imul
if_icmpge 21
20: iconst_0
ireturn
21: StackMap locals:
StackMap stack:
aload 1
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 9
goto 27
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.options.OptionValues int int int int top java.util.Iterator
StackMap stack:
22: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 8
start local 8 23: aload 8
instanceof org.graalvm.compiler.nodes.debug.ControlFlowAnchorNode
ifeq 25
24: iconst_0
ireturn
25: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
aload 8
instanceof org.graalvm.compiler.nodes.InvokeNode
ifeq 27
26: iconst_0
ireturn
end local 8 27: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.options.OptionValues int int int int top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
28: iconst_1
ireturn
29: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.options.OptionValues int int int int
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
ldc "shouldPartiallyUnroll %s unrolled loop is too large %s "
aload 2
iload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;I)V
30: iconst_0
ireturn
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 31 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 31 1 loop Lorg/graalvm/compiler/loop/LoopEx;
1 31 2 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
5 31 3 options Lorg/graalvm/compiler/options/OptionValues;
6 31 4 maxNodes I
8 31 5 size I
9 31 6 unrollFactor I
11 15 7 loopFrequency D
16 31 7 maxUnroll I
23 27 8 node Lorg/graalvm/compiler/graph/Node;
MethodParameters:
Name Flags
loop
public boolean shouldTryUnswitch(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 2
start local 2 1: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
dstore 3
start local 3 2: dload 3
dconst_1
dcmpg
ifgt 4
3: iconst_0
ireturn
4: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode double
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual org.graalvm.compiler.nodes.FixedNode.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
astore 5
start local 5 5: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.unswitches:()I
getstatic org.graalvm.compiler.core.common.GraalOptions.LoopMaxUnswitch:Lorg/graalvm/compiler/options/OptionKey;
aload 5
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_icmpgt 6
iconst_1
ireturn
StackMap locals: org.graalvm.compiler.options.OptionValues
StackMap stack:
6: iconst_0
ireturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 7 1 loop Lorg/graalvm/compiler/loop/LoopEx;
1 7 2 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 7 3 loopFrequency D
5 7 5 options Lorg/graalvm/compiler/options/OptionValues;
MethodParameters:
Name Flags
loop
public boolean shouldUnswitch(org.graalvm.compiler.loop.LoopEx, java.util.List<org.graalvm.compiler.nodes.ControlSplitNode>);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=11, locals=21, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: aload 1
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 4
start local 4 2: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 5
start local 5 3: aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.createNodeBitMap:()Lorg/graalvm/compiler/graph/NodeBitMap;
astore 6
start local 6 4: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 15
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap top java.util.Iterator
StackMap stack:
5: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 7
start local 7 6: aload 7
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 10
goto 10
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.nodes.ControlSplitNode java.util.Iterator top java.util.Iterator
StackMap stack:
7: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 9
start local 9 8: aload 9
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 11
start local 11 9: aload 1
aload 6
aload 11
invokevirtual org.graalvm.compiler.loop.LoopEx.nodesInLoopBranch:(Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
end local 11 end local 9 10: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
11: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopsData:()Lorg/graalvm/compiler/loop/LoopsData;
invokevirtual org.graalvm.compiler.loop.LoopsData.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPostdominator:()Lorg/graalvm/compiler/nodes/cfg/Block;
astore 9
start local 9 12: aload 9
ifnull 15
13: getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$IsolatedInitialization.UNSWITCH_SPLIT_WITH_PHIS:Lorg/graalvm/compiler/debug/CounterKey;
aload 5
invokeinterface org.graalvm.compiler.debug.CounterKey.increment:(Lorg/graalvm/compiler/debug/DebugContext;)V
14: iload 3
aload 9
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
checkcast org.graalvm.compiler.nodes.MergeNode
invokevirtual org.graalvm.compiler.nodes.MergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iadd
istore 3
end local 9 end local 7 15: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
16: aload 6
invokevirtual org.graalvm.compiler.graph.NodeBitMap.count:()I
istore 7
start local 7 17: new org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure
dup
invokespecial org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure.<init>:()V
astore 8
start local 8 18: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
dstore 9
start local 9 19: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
astore 11
start local 11 20: getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.LoopUnswitchTrivial:Lorg/graalvm/compiler/options/OptionKey;
aload 11
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
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.LoopUnswitchFrequencyBoost:Lorg/graalvm/compiler/options/OptionKey;
aload 11
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Double
invokevirtual java.lang.Double.doubleValue:()D
dload 9
dconst_1
dsub
iload 3
i2d
dadd
dmul
d2i
iadd
istore 12
start local 12 21: iload 12
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.LoopUnswitchMaxIncrease:Lorg/graalvm/compiler/options/OptionKey;
aload 11
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
invokestatic java.lang.Math.min:(II)I
istore 12
22: getstatic org.graalvm.compiler.core.common.GraalOptions.MaximumDesiredSize:Lorg/graalvm/compiler/options/OptionKey;
aload 11
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
aload 4
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
isub
istore 13
start local 13 23: iload 12
iload 13
invokestatic java.lang.Math.min:(II)I
istore 12
24: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
aload 8
invokevirtual org.graalvm.compiler.nodes.FrameState.applyToVirtual:(Lorg/graalvm/compiler/nodes/VirtualState$VirtualClosure;)V
25: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
isub
aload 8
getfield org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure.count:I
isub
iconst_1
isub
istore 14
start local 14 26: iload 14
iload 7
isub
istore 15
start local 15 27: aload 2
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ControlSplitNode
astore 16
start local 16 28: aload 16
instanceof org.graalvm.compiler.nodes.java.TypeSwitchNode
ifeq 40
29: aload 16
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
isub
istore 17
start local 17 30: aload 16
invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 19
goto 38
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap int org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure double org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.nodes.ControlSplitNode int top java.util.Iterator
StackMap stack:
31: aload 19
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 18
start local 18 32: aload 18
checkcast org.graalvm.compiler.nodes.FixedNode
astore 20
start local 20 33: goto 35
34: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap int org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure double org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.nodes.ControlSplitNode int org.graalvm.compiler.graph.Node java.util.Iterator org.graalvm.compiler.nodes.FixedNode
StackMap stack:
aload 20
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 20
35: StackMap locals:
StackMap stack:
aload 20
instanceof org.graalvm.compiler.nodes.FixedWithNextNode
ifne 34
36: aload 20
instanceof org.graalvm.compiler.nodes.DeoptimizeNode
ifeq 38
37: iinc 17 -1
end local 20 end local 18 38: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap int org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure double org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.nodes.ControlSplitNode int top java.util.Iterator
StackMap stack:
aload 19
invokeinterface java.util.Iterator.hasNext:()Z
ifne 31
39: iload 15
iload 17
imul
istore 15
end local 17 40: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap int org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure double org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.nodes.ControlSplitNode
StackMap stack:
aload 5
ldc "shouldUnswitch(%s, %s) : delta=%d (%.2f%% inside of branches), max=%d, f=%.2f, phis=%d -> %b"
aload 1
aload 2
iload 15
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
iload 7
i2d
iload 14
i2d
ddiv
ldc 100.0
dmul
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
iload 12
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
41: dload 9
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
iload 15
iload 12
if_icmpgt 42
iconst_1
goto 43
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap int org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure double org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.nodes.ControlSplitNode
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String org.graalvm.compiler.loop.LoopEx java.util.List java.lang.Integer java.lang.Double java.lang.Integer java.lang.Double java.lang.Integer
42: iconst_0
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx java.util.List int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.graph.NodeBitMap int org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure double org.graalvm.compiler.options.OptionValues int int int int org.graalvm.compiler.nodes.ControlSplitNode
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String org.graalvm.compiler.loop.LoopEx java.util.List java.lang.Integer java.lang.Double java.lang.Integer java.lang.Double java.lang.Integer int
43: invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
44: invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
45: iload 15
iload 12
if_icmpgt 47
46: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ireturn
47: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 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 48 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 48 1 loop Lorg/graalvm/compiler/loop/LoopEx;
0 48 2 controlSplits Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
1 48 3 phis I
2 48 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 48 5 debug Lorg/graalvm/compiler/debug/DebugContext;
4 48 6 branchNodes Lorg/graalvm/compiler/graph/NodeBitMap;
6 15 7 controlSplit Lorg/graalvm/compiler/nodes/ControlSplitNode;
8 10 9 successor Lorg/graalvm/compiler/graph/Node;
9 10 11 branch Lorg/graalvm/compiler/nodes/AbstractBeginNode;
12 15 9 postDomBlock Lorg/graalvm/compiler/nodes/cfg/Block;
17 48 7 inBranchTotal I
18 48 8 stateNodesCount Lorg/graalvm/compiler/loop/DefaultLoopPolicies$CountingClosure;
19 48 9 loopFrequency D
20 48 11 options Lorg/graalvm/compiler/options/OptionValues;
21 48 12 maxDiff I
23 48 13 remainingGraphSpace I
26 48 14 loopTotal I
27 48 15 actualDiff I
28 48 16 firstSplit Lorg/graalvm/compiler/nodes/ControlSplitNode;
30 40 17 copies I
32 38 18 succ Lorg/graalvm/compiler/graph/Node;
33 38 20 current Lorg/graalvm/compiler/nodes/FixedNode;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;)Z
MethodParameters:
Name Flags
loop
controlSplits
}
SourceFile: "DefaultLoopPolicies.java"
NestMembers:
org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure org.graalvm.compiler.loop.DefaultLoopPolicies$IsolatedInitialization org.graalvm.compiler.loop.DefaultLoopPolicies$Options
InnerClasses:
private final CountingClosure = org.graalvm.compiler.loop.DefaultLoopPolicies$CountingClosure of org.graalvm.compiler.loop.DefaultLoopPolicies
private IsolatedInitialization = org.graalvm.compiler.loop.DefaultLoopPolicies$IsolatedInitialization of org.graalvm.compiler.loop.DefaultLoopPolicies
public Options = org.graalvm.compiler.loop.DefaultLoopPolicies$Options of org.graalvm.compiler.loop.DefaultLoopPolicies
public abstract VirtualClosure = org.graalvm.compiler.nodes.VirtualState$VirtualClosure of org.graalvm.compiler.nodes.VirtualState