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=9, 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.getRelativeFrequency:()D
dstore 5
start local 5 2: aload 2
getfield org.graalvm.compiler.nodes.cfg.ControlFlowGraph.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 7
start local 7 3: aload 7
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
astore 8
start local 8 4: dload 5
getstatic org.graalvm.compiler.core.common.GraalOptions.MinimumPeelFrequency:Lorg/graalvm/compiler/options/OptionKey;
aload 8
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
dcmpg
ifge 6
5: iconst_0
ireturn
6: StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.cfg.ControlFlowGraph jdk.vm.ci.meta.MetaAccessProvider org.graalvm.compiler.nodes.LoopBeginNode double org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.options.OptionValues
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.parent:()Lorg/graalvm/compiler/loop/LoopEx;
ifnull 9
7: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.parent:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
iconst_1
ishr
if_icmple 9
8: iconst_0
ireturn
9: StackMap locals:
StackMap stack:
aload 1
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.size:()I
ifle 11
10: iconst_0
ireturn
11: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.size:()I
aload 7
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
iadd
getstatic org.graalvm.compiler.core.common.GraalOptions.MaximumDesiredSize:Lorg/graalvm/compiler/options/OptionKey;
aload 8
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmple 13
12: iconst_0
ireturn
13: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 8 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 14 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 14 1 loop Lorg/graalvm/compiler/loop/LoopEx;
0 14 2 cfg Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
0 14 3 metaAccess Ljdk/vm/ci/meta/MetaAccessProvider;
1 14 4 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 14 5 entryProbability D
3 14 7 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
4 14 8 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=3, locals=10, 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
ifeq 1
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.counterNeverOverflows:()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 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.isGreaterThan:(J)Z
ifeq 9
8: iconst_0
ireturn
9: StackMap locals:
StackMap stack:
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
istore 5
start local 5 10: iload 5
ifgt 12
11: iconst_0
ireturn
12: StackMap locals: int
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.isExactTripCount:()Z
ifeq 13
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 14
StackMap locals:
StackMap stack:
13: 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
14: invokevirtual java.lang.Integer.intValue:()I
istore 6
start local 6 15: aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 8
goto 21
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.options.OptionValues org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.core.common.util.UnsignedLong int int top java.util.Iterator
StackMap stack:
16: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 7
start local 7 17: aload 7
instanceof org.graalvm.compiler.nodes.calc.CompareNode
ifeq 21
18: aload 7
checkcast org.graalvm.compiler.nodes.calc.CompareNode
astore 9
start local 9 19: aload 9
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 21
20: iload 6
getstatic org.graalvm.compiler.loop.DefaultLoopPolicies$Options.FullUnrollConstantCompareBoost: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
iadd
istore 6
end local 9 end local 7 21: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 16
22: iload 6
iload 5
invokestatic java.lang.Math.min:(II)I
istore 6
23: 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.count:()I
istore 7
start local 7 24: iinc 7 -2
25: iload 7
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopEnds:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
isub
istore 7
26: iload 7
iflt 27
iconst_1
goto 28
StackMap locals: org.graalvm.compiler.loop.DefaultLoopPolicies org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.options.OptionValues org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.core.common.util.UnsignedLong int int int
StackMap stack:
27: iconst_0
StackMap locals:
StackMap stack: int
28: ldc "Wrong size"
invokestatic org.graalvm.compiler.debug.GraalError.guarantee:(ZLjava/lang/String;)V
29: aload 4
lconst_1
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.minus:(J)Lorg/graalvm/compiler/core/common/util/UnsignedLong;
iload 7
i2l
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.times:(J)Lorg/graalvm/compiler/core/common/util/UnsignedLong;
iload 6
i2l
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.isLessOrEqualTo:(J)Z
ifeq 31
30: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ireturn
31: StackMap locals:
StackMap stack:
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 32 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 32 1 loop Lorg/graalvm/compiler/loop/LoopEx;
3 32 2 options Lorg/graalvm/compiler/options/OptionValues;
4 32 3 counted Lorg/graalvm/compiler/loop/CountedLoopInfo;
5 32 4 maxTrips Lorg/graalvm/compiler/core/common/util/UnsignedLong;
10 32 5 globalMax I
15 32 6 maxNodes I
17 21 7 usage Lorg/graalvm/compiler/graph/Node;
19 21 9 compare Lorg/graalvm/compiler/nodes/calc/CompareNode;
24 32 7 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_icmpge 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=18, 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
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 29: iload 15
iload 17
imul
istore 15
30: 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;
31: 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 32
iconst_1
goto 33
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
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
32: 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 int
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
33: invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
34: 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
35: iload 15
iload 12
if_icmpgt 37
36: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.canDuplicateLoop:()Z
ireturn
37: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 17 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 38 0 this Lorg/graalvm/compiler/loop/DefaultLoopPolicies;
0 38 1 loop Lorg/graalvm/compiler/loop/LoopEx;
0 38 2 controlSplits Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
1 38 3 phis I
2 38 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 38 5 debug Lorg/graalvm/compiler/debug/DebugContext;
4 38 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 38 7 inBranchTotal I
18 38 8 stateNodesCount Lorg/graalvm/compiler/loop/DefaultLoopPolicies$CountingClosure;
19 38 9 loopFrequency D
20 38 11 options Lorg/graalvm/compiler/options/OptionValues;
21 38 12 maxDiff I
23 38 13 remainingGraphSpace I
26 38 14 loopTotal I
27 38 15 actualDiff I
28 38 16 firstSplit Lorg/graalvm/compiler/nodes/ControlSplitNode;
29 38 17 copies I
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