public class org.graalvm.compiler.loop.LoopEx
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.loop.LoopEx
super_class: java.lang.Object
{
private final org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block> loop;
descriptor: Lorg/graalvm/compiler/core/common/cfg/Loop;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
private org.graalvm.compiler.loop.LoopFragmentInside inside;
descriptor: Lorg/graalvm/compiler/loop/LoopFragmentInside;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.loop.LoopFragmentWhole whole;
descriptor: Lorg/graalvm/compiler/loop/LoopFragmentWhole;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.loop.CountedLoopInfo counted;
descriptor: Lorg/graalvm/compiler/loop/CountedLoopInfo;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.loop.LoopsData data;
descriptor: Lorg/graalvm/compiler/loop/LoopsData;
flags: (0x0002) ACC_PRIVATE
private jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.loop.InductionVariable> ivs;
descriptor: Ljdk/internal/vm/compiler/collections/EconomicMap;
flags: (0x0002) ACC_PRIVATE
Signature: Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
private boolean countedLoopChecked;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int size;
descriptor: I
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, 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/LoopEx;
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.LoopEx.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block>, org.graalvm.compiler.loop.LoopsData);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/Loop;Lorg/graalvm/compiler/loop/LoopsData;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield org.graalvm.compiler.loop.LoopEx.size:I
2: aload 0
aload 1
putfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
3: aload 0
aload 2
putfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/loop/LoopEx;
0 5 1 loop Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
0 5 2 data Lorg/graalvm/compiler/loop/LoopsData;
Signature: (Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;Lorg/graalvm/compiler/loop/LoopsData;)V
MethodParameters:
Name Flags
loop
data
public org.graalvm.compiler.core.common.cfg.Loop<org.graalvm.compiler.nodes.cfg.Block> loop();
descriptor: ()Lorg/graalvm/compiler/core/common/cfg/Loop;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
Signature: ()Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
public org.graalvm.compiler.loop.LoopFragmentInside inside();
descriptor: ()Lorg/graalvm/compiler/loop/LoopFragmentInside;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
ifnonnull 2
1: aload 0
new org.graalvm.compiler.loop.LoopFragmentInside
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentInside.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
putfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public org.graalvm.compiler.loop.LoopFragmentWhole whole();
descriptor: ()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
ifnonnull 2
1: aload 0
new org.graalvm.compiler.loop.LoopFragmentWhole
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentWhole.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
putfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public void invalidateFragments();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
putfield org.graalvm.compiler.loop.LoopEx.inside:Lorg/graalvm/compiler/loop/LoopFragmentInside;
1: aload 0
aconst_null
putfield org.graalvm.compiler.loop.LoopEx.whole:Lorg/graalvm/compiler/loop/LoopFragmentWhole;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public org.graalvm.compiler.loop.LoopFragmentInsideFrom insideFrom(org.graalvm.compiler.nodes.FixedNode);
descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/loop/LoopFragmentInsideFrom;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
0 1 1 point Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
point
public org.graalvm.compiler.loop.LoopFragmentInsideBefore insideBefore(org.graalvm.compiler.nodes.FixedNode);
descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/loop/LoopFragmentInsideBefore;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
0 1 1 point Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
point
public boolean isOutsideLoop(org.graalvm.compiler.graph.Node);
descriptor: (Lorg/graalvm/compiler/graph/Node;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
aload 1
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.contains:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
StackMap locals:
StackMap stack: int
2: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
0 3 1 n Lorg/graalvm/compiler/graph/Node;
MethodParameters:
Name Flags
n
public org.graalvm.compiler.nodes.LoopBeginNode loopBegin();
descriptor: ()Lorg/graalvm/compiler/nodes/LoopBeginNode;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
checkcast org.graalvm.compiler.nodes.LoopBeginNode
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
public org.graalvm.compiler.nodes.FixedNode predecessor();
descriptor: ()Lorg/graalvm/compiler/nodes/FixedNode;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, 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.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FixedNode
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
public org.graalvm.compiler.nodes.FixedNode entryPoint();
descriptor: ()Lorg/graalvm/compiler/nodes/FixedNode;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, 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.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
public boolean isCounted();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.counted:Lorg/graalvm/compiler/loop/CountedLoopInfo;
ifnull 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public org.graalvm.compiler.loop.CountedLoopInfo counted();
descriptor: ()Lorg/graalvm/compiler/loop/CountedLoopInfo;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.counted:Lorg/graalvm/compiler/loop/CountedLoopInfo;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/loop/LoopEx;
public org.graalvm.compiler.loop.LoopEx parent();
descriptor: ()Lorg/graalvm/compiler/loop/LoopEx;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
aload 0
getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.loop.LoopsData.loop:(Lorg/graalvm/compiler/core/common/cfg/Loop;)Lorg/graalvm/compiler/loop/LoopEx;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public int size();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.size:I
iconst_m1
if_icmpne 2
1: aload 0
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;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.count:()I
putfield org.graalvm.compiler.loop.LoopEx.size:I
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.size:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ifeq 1
new java.lang.StringBuilder
dup
ldc "CountedLoop ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 2
StackMap locals: org.graalvm.compiler.loop.LoopEx
StackMap stack: new 0 new 0
1: ldc "Loop "
StackMap locals: org.graalvm.compiler.loop.LoopEx
StackMap stack: new 0 new 0 java.lang.String
2: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "(depth="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ") "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
public boolean reassociateInvariants();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: 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 2
start local 2 2: new org.graalvm.compiler.loop.LoopEx$InvariantPredicate
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopEx$InvariantPredicate.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
astore 3
start local 3 3: 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/calc/BinaryArithmeticNode;
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 18
StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate top java.util.Iterator
StackMap stack:
4: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
astore 4
start local 4 5: aload 4
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.isAssociative:()Z
ifne 7
6: goto 18
7: StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate org.graalvm.compiler.nodes.calc.BinaryArithmeticNode java.util.Iterator
StackMap stack:
aload 4
aload 3
aload 4
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 4
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.reassociate:(Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;Lorg/graalvm/compiler/graph/iterators/NodePredicate;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 6
start local 6 8: aload 6
aload 4
if_acmpeq 18
9: aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.isAlive:()Z
ifne 12
10: getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
ifne 11
aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.isDeleted:()Z
ifeq 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 2
aload 6
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUniqueWithInputs:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 6
12: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 7
start local 7 13: aload 7
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 15
14: aload 7
ldc "%s : Reassociated %s into %s"
aload 2
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.method:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
ldc "%H::%n"
invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.format:(Ljava/lang/String;)Ljava/lang/String;
aload 4
aload 6
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
15: StackMap locals: org.graalvm.compiler.debug.DebugContext
StackMap stack:
aload 4
aload 6
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.replaceAtUsages:(Lorg/graalvm/compiler/graph/Node;)V
16: aload 4
invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killWithUnusedFloatingInputs:(Lorg/graalvm/compiler/graph/Node;)V
17: iinc 1 1
end local 7 end local 6 end local 4 18: StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
19: iload 1
ifeq 20
iconst_1
ireturn
StackMap locals: org.graalvm.compiler.loop.LoopEx int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopEx$InvariantPredicate
StackMap stack:
20: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/graalvm/compiler/loop/LoopEx;
1 21 1 count I
2 21 2 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 21 3 invariant Lorg/graalvm/compiler/loop/LoopEx$InvariantPredicate;
5 18 4 binary Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode<*>;
8 18 6 result Lorg/graalvm/compiler/nodes/ValueNode;
13 18 7 debug Lorg/graalvm/compiler/debug/DebugContext;
public boolean detectCounted();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=15, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.isCounted:()Z
ireturn
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield org.graalvm.compiler.loop.LoopEx.countedLoopChecked:Z
3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 1
start local 1 4: aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 2
start local 2 5: goto 7
6: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode
StackMap stack:
aload 2
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 2
7: StackMap locals:
StackMap stack:
aload 2
instanceof org.graalvm.compiler.nodes.FixedGuardNode
ifne 6
aload 2
instanceof org.graalvm.compiler.nodes.extended.ValueAnchorNode
ifne 6
aload 2
instanceof org.graalvm.compiler.nodes.FullInfopointNode
ifne 6
8: aload 2
instanceof org.graalvm.compiler.nodes.IfNode
ifeq 82
9: aload 2
checkcast org.graalvm.compiler.nodes.IfNode
astore 3
start local 3 10: iconst_0
istore 4
start local 4 11: aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isCfgLoopExit:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Z
ifne 15
12: aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isCfgLoopExit:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Z
ifne 14
13: iconst_0
ireturn
14: StackMap locals: org.graalvm.compiler.nodes.IfNode int
StackMap stack:
iconst_1
istore 4
15: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
astore 5
start local 5 16: aload 5
instanceof org.graalvm.compiler.nodes.calc.CompareNode
ifne 18
17: iconst_0
ireturn
18: StackMap locals: org.graalvm.compiler.nodes.LogicNode
StackMap stack:
aload 5
checkcast org.graalvm.compiler.nodes.calc.CompareNode
astore 6
start local 6 19: aconst_null
astore 7
start local 7 20: aconst_null
astore 8
start local 8 21: aconst_null
astore 9
start local 9 22: aload 0
aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 28
23: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.getInductionVariables:()Ljdk/internal/vm/compiler/collections/EconomicMap;
aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.InductionVariable
astore 8
24: aload 8
ifnull 33
25: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.condition:()Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
invokevirtual org.graalvm.compiler.core.common.calc.CanonicalCondition.asCondition:()Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.mirror:()Lorg/graalvm/compiler/core/common/calc/Condition;
astore 7
26: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
27: goto 33
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.IfNode int org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.core.common.calc.Condition org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode
StackMap stack:
28: aload 0
aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 33
29: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.getInductionVariables:()Ljdk/internal/vm/compiler/collections/EconomicMap;
aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.InductionVariable
astore 8
30: aload 8
ifnull 33
31: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.condition:()Lorg/graalvm/compiler/core/common/calc/CanonicalCondition;
invokevirtual org.graalvm.compiler.core.common.calc.CanonicalCondition.asCondition:()Lorg/graalvm/compiler/core/common/calc/Condition;
astore 7
32: aload 6
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
33: StackMap locals:
StackMap stack:
aload 7
ifnonnull 35
34: iconst_0
ireturn
35: StackMap locals:
StackMap stack:
iload 4
ifeq 37
36: aload 7
invokevirtual org.graalvm.compiler.core.common.calc.Condition.negate:()Lorg/graalvm/compiler/core/common/calc/Condition;
astore 7
37: StackMap locals:
StackMap stack:
iconst_0
istore 10
start local 10 38: iconst_0
istore 11
start local 11 39: invokestatic org.graalvm.compiler.loop.LoopEx.$SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition:()[I
aload 7
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
iaload
tableswitch { // 1 - 10
1: 40
2: 44
3: 67
4: 63
5: 74
6: 70
7: 69
8: 62
9: 73
10: 66
default: 76
}
40: StackMap locals: int int
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.initNode:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 9
if_acmpne 43
41: iconst_1
istore 10
42: goto 77
43: StackMap locals:
StackMap stack:
iconst_0
ireturn
44: StackMap locals:
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.initNode:()Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
checkcast org.graalvm.compiler.core.common.type.IntegerStamp
astore 12
start local 12 45: aload 9
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
checkcast org.graalvm.compiler.core.common.type.IntegerStamp
astore 13
start local 13 46: aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
checkcast org.graalvm.compiler.core.common.type.IntegerStamp
astore 14
start local 14 47: aload 8
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 54
48: aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
ifnull 49
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
aload 14
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.upperBound:()J
lcmp
ifeq 77
49: StackMap locals: org.graalvm.compiler.core.common.type.IntegerStamp org.graalvm.compiler.core.common.type.IntegerStamp org.graalvm.compiler.core.common.type.IntegerStamp
StackMap stack:
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
ifnull 52
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
aload 14
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.unsignedUpperBound:()J
lcmp
ifne 52
50: iconst_1
istore 11
51: goto 77
StackMap locals:
StackMap stack:
52: aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.isConstantStride:()Z
ifeq 53
aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
invokestatic java.lang.Math.abs:(J)J
lconst_1
lcmp
ifne 53
aload 12
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.upperBound:()J
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.lowerBound:()J
lcmp
ifle 77
53: StackMap locals:
StackMap stack:
iconst_0
ireturn
54: StackMap locals:
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpne 61
55: aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
ifnull 56
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
aload 14
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.lowerBound:()J
lcmp
ifeq 77
56: StackMap locals:
StackMap stack:
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
ifnull 59
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.asConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
aload 14
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.unsignedLowerBound:()J
lcmp
ifne 59
57: iconst_1
istore 11
58: goto 77
StackMap locals:
StackMap stack:
59: aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.isConstantStride:()Z
ifeq 60
aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
invokestatic java.lang.Math.abs:(J)J
lconst_1
lcmp
ifne 60
aload 12
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.lowerBound:()J
aload 13
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.upperBound:()J
lcmp
ifge 77
60: StackMap locals:
StackMap stack:
iconst_0
ireturn
61: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 14 end local 13 end local 12 62: StackMap locals:
StackMap stack:
iconst_1
istore 11
63: StackMap locals:
StackMap stack:
iconst_1
istore 10
64: aload 8
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_acmpeq 77
65: iconst_0
ireturn
66: StackMap locals:
StackMap stack:
iconst_1
istore 11
67: StackMap locals:
StackMap stack:
aload 8
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_acmpeq 77
68: iconst_0
ireturn
69: StackMap locals:
StackMap stack:
iconst_1
istore 11
70: StackMap locals:
StackMap stack:
iconst_1
istore 10
71: aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpeq 77
72: iconst_0
ireturn
73: StackMap locals:
StackMap stack:
iconst_1
istore 11
74: StackMap locals:
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpeq 77
75: iconst_0
ireturn
76: StackMap locals:
StackMap stack:
aload 7
invokevirtual org.graalvm.compiler.core.common.calc.Condition.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
77: StackMap locals:
StackMap stack:
aload 0
78: new org.graalvm.compiler.loop.CountedLoopInfo
dup
aload 0
aload 8
aload 3
aload 9
iload 10
iload 4
ifeq 79
aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
goto 80
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.IfNode int org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.core.common.calc.Condition org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode int int
StackMap stack: org.graalvm.compiler.loop.LoopEx new 78 new 78 org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.ValueNode int
79: aload 3
invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.IfNode int org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.calc.CompareNode org.graalvm.compiler.core.common.calc.Condition org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode int int
StackMap stack: org.graalvm.compiler.loop.LoopEx new 78 new 78 org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.ValueNode int org.graalvm.compiler.nodes.AbstractBeginNode
80: iload 11
invokespecial org.graalvm.compiler.loop.CountedLoopInfo.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/IfNode;Lorg/graalvm/compiler/nodes/ValueNode;ZLorg/graalvm/compiler/nodes/AbstractBeginNode;Z)V
putfield org.graalvm.compiler.loop.LoopEx.counted:Lorg/graalvm/compiler/loop/CountedLoopInfo;
81: iconst_1
ireturn
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 82: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.FixedNode
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 83 0 this Lorg/graalvm/compiler/loop/LoopEx;
4 83 1 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
5 83 2 next Lorg/graalvm/compiler/nodes/FixedNode;
10 82 3 ifNode Lorg/graalvm/compiler/nodes/IfNode;
11 82 4 negated Z
16 82 5 ifTest Lorg/graalvm/compiler/nodes/LogicNode;
19 82 6 compare Lorg/graalvm/compiler/nodes/calc/CompareNode;
20 82 7 condition Lorg/graalvm/compiler/core/common/calc/Condition;
21 82 8 iv Lorg/graalvm/compiler/loop/InductionVariable;
22 82 9 limit Lorg/graalvm/compiler/nodes/ValueNode;
38 82 10 oneOff Z
39 82 11 unsigned Z
45 62 12 initStamp Lorg/graalvm/compiler/core/common/type/IntegerStamp;
46 62 13 limitStamp Lorg/graalvm/compiler/core/common/type/IntegerStamp;
47 62 14 counterStamp Lorg/graalvm/compiler/core/common/type/IntegerStamp;
private boolean isCfgLoopExit(org.graalvm.compiler.nodes.AbstractBeginNode);
descriptor: (Lorg/graalvm/compiler/nodes/AbstractBeginNode;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
invokevirtual org.graalvm.compiler.loop.LoopsData.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
aload 1
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
astore 2
start local 2 1: aload 0
getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoopDepth:()I
if_icmpgt 2
aload 0
getfield org.graalvm.compiler.loop.LoopEx.loop:Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.isNaturalExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifne 2
iconst_0
ireturn
StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
2: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
0 3 1 begin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
1 3 2 block Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
begin
public org.graalvm.compiler.loop.LoopsData loopsData();
descriptor: ()Lorg/graalvm/compiler/loop/LoopsData;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.data:Lorg/graalvm/compiler/loop/LoopsData;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopEx;
public void nodesInLoopBranch(org.graalvm.compiler.graph.NodeBitMap, org.graalvm.compiler.nodes.AbstractBeginNode);
descriptor: (Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=3
start local 0 start local 1 start local 2 0: invokestatic jdk.internal.vm.compiler.collections.EconomicSet.create:()Ljdk/internal/vm/compiler/collections/EconomicSet;
astore 3
start local 3 1: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 4
start local 4 2: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 5
start local 5 3: aload 0
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;
astore 6
start local 6 4: aload 5
aload 6
aload 2
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.blockFor:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/nodes/cfg/Block;
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
5: goto 18
6: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.nodes.AbstractBeginNode jdk.internal.vm.compiler.collections.EconomicSet java.util.Collection java.util.Queue org.graalvm.compiler.nodes.cfg.ControlFlowGraph
StackMap stack:
aload 5
invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 7
start local 7 7: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.isLoopExit:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifeq 11
8: getstatic org.graalvm.compiler.loop.LoopEx.$assertionsDisabled:Z
ifne 9
aload 4
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
ifeq 9
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
9: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 4
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
pop
10: goto 18
StackMap locals:
StackMap stack:
11: aload 3
aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getBeginNode:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokeinterface jdk.internal.vm.compiler.collections.EconomicSet.add:(Ljava/lang/Object;)Z
ifeq 18
12: aload 7
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 8
start local 8 13: goto 17
14: StackMap locals: org.graalvm.compiler.nodes.cfg.Block
StackMap stack:
aload 0
getfield 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;
aload 8
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifeq 16
15: aload 5
aload 8
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
16: StackMap locals:
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
checkcast org.graalvm.compiler.nodes.cfg.Block
astore 8
17: StackMap locals:
StackMap stack:
aload 8
ifnonnull 14
end local 8 end local 7 18: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 6
19: aload 1
aload 2
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 0
aload 3
aload 4
invokestatic org.graalvm.compiler.loop.LoopFragment.computeNodes:(Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/graph/Graph;Lorg/graalvm/compiler/loop/LoopEx;Ljava/lang/Iterable;Ljava/lang/Iterable;)V
20: return
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 21 0 this Lorg/graalvm/compiler/loop/LoopEx;
0 21 1 branchNodes Lorg/graalvm/compiler/graph/NodeBitMap;
0 21 2 branch Lorg/graalvm/compiler/nodes/AbstractBeginNode;
1 21 3 blocks Ljdk/internal/vm/compiler/collections/EconomicSet<Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
2 21 4 exits Ljava/util/Collection<Lorg/graalvm/compiler/nodes/AbstractBeginNode;>;
3 21 5 work Ljava/util/Queue<Lorg/graalvm/compiler/nodes/cfg/Block;>;
4 21 6 cfg Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
7 18 7 b Lorg/graalvm/compiler/nodes/cfg/Block;
13 18 8 d Lorg/graalvm/compiler/nodes/cfg/Block;
MethodParameters:
Name Flags
branchNodes
branch
public jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.loop.InductionVariable> getInductionVariables();
descriptor: ()Ljdk/internal/vm/compiler/collections/EconomicMap;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
ifnonnull 2
1: aload 0
aload 0
invokestatic org.graalvm.compiler.loop.LoopEx.findInductionVariables:(Lorg/graalvm/compiler/loop/LoopEx;)Ljdk/internal/vm/compiler/collections/EconomicMap;
putfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopEx;
Signature: ()Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
private static jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.loop.InductionVariable> findInductionVariables(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)Ljdk/internal/vm/compiler/collections/EconomicMap;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=14, args_size=1
start local 0 0: getstatic jdk.internal.vm.compiler.collections.Equivalence.IDENTITY:Ljdk/internal/vm/compiler/collections/Equivalence;
invokestatic jdk.internal.vm.compiler.collections.EconomicMap.create:(Ljdk/internal/vm/compiler/collections/Equivalence;)Ljdk/internal/vm/compiler/collections/EconomicMap;
astore 1
start local 1 1: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 2
start local 2 2: aload 0
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 3
start local 3 3: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
astore 4
start local 4 4: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.valuePhis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 6
goto 14
StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 5
start local 5 6: aload 5
invokevirtual org.graalvm.compiler.nodes.PhiNode.singleBackValueOrThis:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 7
start local 7 7: aload 7
aload 5
if_acmpne 9
8: goto 14
9: StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 0
aload 7
aload 5
invokestatic org.graalvm.compiler.loop.LoopEx.addSub:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 8
start local 8 10: aload 8
ifnull 14
11: new org.graalvm.compiler.loop.BasicInductionVariable
dup
aload 0
aload 5
checkcast org.graalvm.compiler.nodes.ValuePhiNode
aload 5
aload 4
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
aload 8
aload 7
checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
invokespecial org.graalvm.compiler.loop.BasicInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValuePhiNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;)V
astore 9
start local 9 12: aload 1
aload 5
aload 9
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
13: aload 2
aload 9
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
end local 9 end local 8 end local 7 end local 5 14: StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
15: goto 50
16: StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode
StackMap stack:
aload 2
invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.InductionVariable
astore 5
start local 5 17: aload 5
invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 6
start local 6 18: aload 6
invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
ldc Lorg/graalvm/compiler/nodes/ValueNode;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 8
goto 49
StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode top java.util.Iterator
StackMap stack:
19: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 7
start local 7 20: aload 0
aload 7
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 22
21: goto 49
22: StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode java.util.Iterator
StackMap stack:
aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.hasExactlyOneUsage:()Z
ifeq 24
aload 7
invokevirtual org.graalvm.compiler.nodes.ValueNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
aload 6
if_acmpne 24
23: goto 49
24: StackMap locals:
StackMap stack:
aconst_null
astore 9
start local 9 25: aload 0
aload 7
aload 6
invokestatic org.graalvm.compiler.loop.LoopEx.addSub:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 10
start local 10 26: aload 10
ifnull 29
27: new org.graalvm.compiler.loop.DerivedOffsetInductionVariable
dup
aload 0
aload 5
aload 10
aload 7
checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
invokespecial org.graalvm.compiler.loop.DerivedOffsetInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode;)V
astore 9
28: goto 46
StackMap locals: org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode
StackMap stack:
29: aload 7
instanceof org.graalvm.compiler.nodes.calc.NegateNode
ifeq 32
30: new org.graalvm.compiler.loop.DerivedScaledInductionVariable
dup
aload 0
aload 5
aload 7
checkcast org.graalvm.compiler.nodes.calc.NegateNode
invokespecial org.graalvm.compiler.loop.DerivedScaledInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/calc/NegateNode;)V
astore 9
31: goto 46
StackMap locals:
StackMap stack:
32: aload 0
aload 7
aload 6
invokestatic org.graalvm.compiler.loop.LoopEx.mul:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
dup
astore 11
start local 11 33: ifnull 36
34: new org.graalvm.compiler.loop.DerivedScaledInductionVariable
dup
aload 0
aload 5
aload 11
aload 7
invokespecial org.graalvm.compiler.loop.DerivedScaledInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 9
35: goto 46
36: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 7
instanceof org.graalvm.compiler.nodes.PiNode
ifne 37
aload 7
instanceof org.graalvm.compiler.nodes.calc.SignExtendNode
ifne 37
iconst_0
goto 38
StackMap locals:
StackMap stack:
37: iconst_1
StackMap locals:
StackMap stack: int
38: istore 12
start local 12 39: iload 12
ifne 44
aload 7
instanceof org.graalvm.compiler.nodes.calc.ZeroExtendNode
ifeq 44
40: aload 7
checkcast org.graalvm.compiler.nodes.calc.ZeroExtendNode
astore 13
start local 13 41: aload 13
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.isInputAlwaysPositive:()Z
ifne 42
aload 13
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
checkcast org.graalvm.compiler.core.common.type.IntegerStamp
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.isPositive:()Z
ifne 42
iconst_0
goto 43
StackMap locals: int org.graalvm.compiler.nodes.calc.ZeroExtendNode
StackMap stack:
42: iconst_1
StackMap locals:
StackMap stack: int
43: istore 12
end local 13 44: StackMap locals:
StackMap stack:
iload 12
ifeq 46
45: new org.graalvm.compiler.loop.DerivedConvertedInductionVariable
dup
aload 0
aload 5
aload 7
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
aload 7
invokespecial org.graalvm.compiler.loop.DerivedConvertedInductionVariable.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/InductionVariable;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 9
end local 12 end local 11 46: StackMap locals:
StackMap stack:
aload 9
ifnull 49
47: aload 1
aload 7
aload 9
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
48: aload 2
aload 9
invokeinterface java.util.Queue.offer:(Ljava/lang/Object;)Z
pop
end local 10 end local 9 end local 7 49: StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.nodes.ValueNode top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
end local 6 end local 5 50: StackMap locals: org.graalvm.compiler.loop.LoopEx jdk.internal.vm.compiler.collections.EconomicMap java.util.Queue org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractEndNode
StackMap stack:
aload 2
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 16
51: aload 1
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 loop Lorg/graalvm/compiler/loop/LoopEx;
1 52 1 ivs Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
2 52 2 scanQueue Ljava/util/Queue<Lorg/graalvm/compiler/loop/InductionVariable;>;
3 52 3 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
4 52 4 forwardEnd Lorg/graalvm/compiler/nodes/AbstractEndNode;
6 14 5 phi Lorg/graalvm/compiler/nodes/PhiNode;
7 14 7 backValue Lorg/graalvm/compiler/nodes/ValueNode;
10 14 8 stride Lorg/graalvm/compiler/nodes/ValueNode;
12 14 9 biv Lorg/graalvm/compiler/loop/BasicInductionVariable;
17 50 5 baseIv Lorg/graalvm/compiler/loop/InductionVariable;
18 50 6 baseIvNode Lorg/graalvm/compiler/nodes/ValueNode;
20 49 7 op Lorg/graalvm/compiler/nodes/ValueNode;
25 49 9 iv Lorg/graalvm/compiler/loop/InductionVariable;
26 49 10 offset Lorg/graalvm/compiler/nodes/ValueNode;
33 46 11 scale Lorg/graalvm/compiler/nodes/ValueNode;
39 46 12 isValidConvert Z
41 44 13 zeroExtendNode Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;)Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
MethodParameters:
Name Flags
loop
private static org.graalvm.compiler.nodes.ValueNode addSub(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
instanceof org.graalvm.compiler.core.common.type.IntegerStamp
ifeq 6
aload 1
instanceof org.graalvm.compiler.nodes.calc.AddNode
ifne 1
aload 1
instanceof org.graalvm.compiler.nodes.calc.SubNode
ifeq 6
1: StackMap locals:
StackMap stack:
aload 1
checkcast org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
astore 3
start local 3 2: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 2
if_acmpne 4
aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 4
3: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
areturn
4: StackMap locals: org.graalvm.compiler.nodes.calc.BinaryArithmeticNode
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 2
if_acmpne 6
aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 6
5: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
areturn
end local 3 6: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 loop Lorg/graalvm/compiler/loop/LoopEx;
0 7 1 op Lorg/graalvm/compiler/nodes/ValueNode;
0 7 2 base Lorg/graalvm/compiler/nodes/ValueNode;
2 6 3 aritOp Lorg/graalvm/compiler/nodes/calc/BinaryArithmeticNode<*>;
MethodParameters:
Name Flags
loop
op
base
private static org.graalvm.compiler.nodes.ValueNode mul(org.graalvm.compiler.loop.LoopEx, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
instanceof org.graalvm.compiler.nodes.calc.MulNode
ifeq 6
1: aload 1
checkcast org.graalvm.compiler.nodes.calc.MulNode
astore 3
start local 3 2: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 2
if_acmpne 4
aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 4
3: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
areturn
4: StackMap locals: org.graalvm.compiler.nodes.calc.MulNode
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 2
if_acmpne 6
aload 0
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 6
5: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.MulNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
areturn
end local 3 6: StackMap locals:
StackMap stack:
aload 1
instanceof org.graalvm.compiler.nodes.calc.LeftShiftNode
ifeq 10
7: aload 1
checkcast org.graalvm.compiler.nodes.calc.LeftShiftNode
astore 3
start local 3 8: aload 3
invokevirtual org.graalvm.compiler.nodes.calc.LeftShiftNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 2
if_acmpne 10
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.LeftShiftNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 10
9: aload 2
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
iconst_1
aload 3
invokevirtual org.graalvm.compiler.nodes.calc.LeftShiftNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
ishl
i2l
aload 2
invokevirtual org.graalvm.compiler.nodes.ValueNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
invokestatic org.graalvm.compiler.nodes.ConstantNode.forIntegerStamp:(Lorg/graalvm/compiler/core/common/type/Stamp;JLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
areturn
end local 3 10: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 loop Lorg/graalvm/compiler/loop/LoopEx;
0 11 1 op Lorg/graalvm/compiler/nodes/ValueNode;
0 11 2 base Lorg/graalvm/compiler/nodes/ValueNode;
2 6 3 mul Lorg/graalvm/compiler/nodes/calc/MulNode;
8 10 3 shift Lorg/graalvm/compiler/nodes/calc/LeftShiftNode;
MethodParameters:
Name Flags
loop
op
base
public void deleteUnusedNodes();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
ifnull 5
1: aload 0
getfield org.graalvm.compiler.loop.LoopEx.ivs:Ljdk/internal/vm/compiler/collections/EconomicMap;
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.getValues:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 2
goto 4
StackMap locals: org.graalvm.compiler.loop.LoopEx top java.util.Iterator
StackMap stack:
2: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.InductionVariable
astore 1
start local 1 3: aload 1
invokevirtual org.graalvm.compiler.loop.InductionVariable.deleteUnusedNodes:()V
end local 1 4: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: StackMap locals: org.graalvm.compiler.loop.LoopEx
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/loop/LoopEx;
3 4 1 iv Lorg/graalvm/compiler/loop/InductionVariable;
public boolean canDuplicateLoop();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=4, 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.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.iterator:()Ljava/util/Iterator;
astore 2
goto 8
StackMap locals: org.graalvm.compiler.loop.LoopEx top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 1
start local 1 2: aload 1
instanceof org.graalvm.compiler.nodes.debug.ControlFlowAnchored
ifeq 4
3: iconst_0
ireturn
4: StackMap locals: org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
aload 1
instanceof org.graalvm.compiler.nodes.FrameState
ifeq 8
5: aload 1
checkcast org.graalvm.compiler.nodes.FrameState
astore 3
start local 3 6: aload 3
invokevirtual org.graalvm.compiler.nodes.FrameState.isExceptionHandlingBCI:()Z
ifeq 8
7: iconst_0
ireturn
end local 3 end local 1 8: StackMap locals: org.graalvm.compiler.loop.LoopEx top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
9: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/loop/LoopEx;
2 8 1 node Lorg/graalvm/compiler/graph/Node;
6 8 3 frameState Lorg/graalvm/compiler/nodes/FrameState;
static int[] $SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.graalvm.compiler.loop.LoopEx.$SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic org.graalvm.compiler.core.common.calc.Condition.values:()[Lorg/graalvm/compiler/core/common/calc/Condition;
arraylength
newarray 10
astore 0
2: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.AE:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
bipush 7
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.AT:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
bipush 9
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.BE:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
bipush 8
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.BT:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
bipush 10
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.EQ:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
iconst_1
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.GE:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
bipush 6
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.GT:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
iconst_5
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.LE:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
iconst_4
iastore
24: goto 26
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
25: pop
StackMap locals:
StackMap stack:
26: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.LT:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
iconst_3
iastore
27: goto 29
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
28: pop
StackMap locals:
StackMap stack:
29: aload 0
getstatic org.graalvm.compiler.core.common.calc.Condition.NE:Lorg/graalvm/compiler/core/common/calc/Condition;
invokevirtual org.graalvm.compiler.core.common.calc.Condition.ordinal:()I
iconst_2
iastore
30: goto 32
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
31: pop
StackMap locals:
StackMap stack:
32: aload 0
dup
putstatic org.graalvm.compiler.loop.LoopEx.$SWITCH_TABLE$org$graalvm$compiler$core$common$calc$Condition:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
17 18 19 Class java.lang.NoSuchFieldError
20 21 22 Class java.lang.NoSuchFieldError
23 24 25 Class java.lang.NoSuchFieldError
26 27 28 Class java.lang.NoSuchFieldError
29 30 31 Class java.lang.NoSuchFieldError
}
SourceFile: "LoopEx.java"
NestMembers:
org.graalvm.compiler.loop.LoopEx$InvariantPredicate
InnerClasses:
public final Direction = org.graalvm.compiler.loop.InductionVariable$Direction of org.graalvm.compiler.loop.InductionVariable
private InvariantPredicate = org.graalvm.compiler.loop.LoopEx$InvariantPredicate of org.graalvm.compiler.loop.LoopEx