public class org.graalvm.compiler.loop.LoopFragmentInside extends org.graalvm.compiler.loop.LoopFragment
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.loop.LoopFragmentInside
super_class: org.graalvm.compiler.loop.LoopFragment
{
private org.graalvm.collections.EconomicMap<org.graalvm.compiler.nodes.PhiNode, org.graalvm.compiler.nodes.ValueNode> mergedInitializers;
descriptor: Lorg/graalvm/collections/EconomicMap;
flags: (0x0002) ACC_PRIVATE
Signature: Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/nodes/PhiNode;Lorg/graalvm/compiler/nodes/ValueNode;>;
private final org.graalvm.compiler.graph.Graph$DuplicationReplacement dataFixBefore;
descriptor: Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.graph.Graph$DuplicationReplacement dataFixWithinAfter;
descriptor: Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/loop/LoopFragmentInside;
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.LoopFragmentInside.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial org.graalvm.compiler.loop.LoopFragment.<init>:(Lorg/graalvm/compiler/loop/LoopEx;)V
1: aload 0
new org.graalvm.compiler.loop.LoopFragmentInside$1
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$1.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
putfield org.graalvm.compiler.loop.LoopFragmentInside.dataFixBefore:Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
2: aload 0
new org.graalvm.compiler.loop.LoopFragmentInside$2
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$2.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
putfield org.graalvm.compiler.loop.LoopFragmentInside.dataFixWithinAfter:Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 4 1 loop Lorg/graalvm/compiler/loop/LoopEx;
MethodParameters:
Name Flags
loop
public void <init>(org.graalvm.compiler.loop.LoopFragmentInside);
descriptor: (Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aconst_null
aload 1
invokespecial org.graalvm.compiler.loop.LoopFragment.<init>:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/loop/LoopFragment;)V
1: aload 0
new org.graalvm.compiler.loop.LoopFragmentInside$1
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$1.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
putfield org.graalvm.compiler.loop.LoopFragmentInside.dataFixBefore:Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
2: aload 0
new org.graalvm.compiler.loop.LoopFragmentInside$2
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$2.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
putfield org.graalvm.compiler.loop.LoopFragmentInside.dataFixWithinAfter:Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 4 1 original Lorg/graalvm/compiler/loop/LoopFragmentInside;
MethodParameters:
Name Flags
original
public org.graalvm.compiler.loop.LoopFragmentInside duplicate();
descriptor: ()Lorg/graalvm/compiler/loop/LoopFragmentInside;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
new org.graalvm.compiler.loop.LoopFragmentInside
dup
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragmentInside.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
public org.graalvm.compiler.loop.LoopFragmentInside original();
descriptor: ()Lorg/graalvm/compiler/loop/LoopFragmentInside;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.graalvm.compiler.loop.LoopFragment.original:()Lorg/graalvm/compiler/loop/LoopFragment;
checkcast org.graalvm.compiler.loop.LoopFragmentInside
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
public void appendInside(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=2, args_size=2
start local 0 start local 1 0: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 1 1 loop Lorg/graalvm/compiler/loop/LoopEx;
MethodParameters:
Name Flags
loop
public org.graalvm.compiler.loop.LoopEx loop();
descriptor: ()Lorg/graalvm/compiler/loop/LoopEx;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokespecial org.graalvm.compiler.loop.LoopFragment.loop:()Lorg/graalvm/compiler/loop/LoopEx;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
public void insertBefore(org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 2
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
aload 1
if_acmpeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.dataFixBefore:Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.patchNodes:(Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;)V
3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.mergeEnds:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 2
start local 2 4: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.mergeEarlyExits:()V
5: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.patchPeeling:(Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
6: aload 0
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 3
start local 3 7: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
aload 3
invokevirtual org.graalvm.compiler.nodes.FixedNode.replaceAtPredecessor:(Lorg/graalvm/compiler/graph/Node;)V
8: aload 2
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.entryPoint:()Lorg/graalvm/compiler/nodes/FixedNode;
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
9: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 10 1 loop Lorg/graalvm/compiler/loop/LoopEx;
4 10 2 end Lorg/graalvm/compiler/nodes/AbstractBeginNode;
7 10 3 entry Lorg/graalvm/compiler/nodes/AbstractBeginNode;
MethodParameters:
Name Flags
loop
public void insertWithinAfter(org.graalvm.compiler.loop.LoopEx, org.graalvm.collections.EconomicMap<org.graalvm.compiler.nodes.LoopBeginNode, org.graalvm.compiler.nodes.extended.OpaqueNode>);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/collections/EconomicMap;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=18, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 2
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
aload 1
if_acmpeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.dataFixWithinAfter:Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.patchNodes:(Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;)V
3: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 3
start local 3 4: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 4
start local 4 5: invokestatic org.graalvm.collections.EconomicMap.create:()Lorg/graalvm/collections/EconomicMap;
astore 5
start local 5 6: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 7
goto 18
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap top java.util.Iterator
StackMap stack:
7: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 6
start local 6 8: aload 6
iconst_1
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(I)Lorg/graalvm/compiler/nodes/ValueNode;
astore 8
start local 8 9: aload 0
aload 8
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 9
start local 9 10: aload 9
ifnonnull 15
11: aload 3
aload 8
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 14
12: aload 8
checkcast org.graalvm.compiler.nodes.PhiNode
iconst_1
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(I)Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
13: goto 15
14: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 15
aload 8
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifne 15
aload 1
aload 8
invokevirtual org.graalvm.compiler.loop.LoopEx.isOutsideLoop:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 15
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Not duplicated node "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
15: StackMap locals:
StackMap stack:
aload 9
ifnull 17
16: aload 5
aload 9
aload 8
invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
17: StackMap locals:
StackMap stack:
aload 4
aload 9
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 9 end local 8 end local 6 18: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
19: iconst_0
istore 6
start local 6 20: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 8
goto 25
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap int top java.util.Iterator
StackMap stack:
21: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 7
start local 7 22: aload 4
iload 6
iinc 6 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 9
start local 9 23: aload 9
ifnull 25
24: aload 7
iconst_1
aload 9
invokevirtual org.graalvm.compiler.nodes.PhiNode.setValueAt:(ILorg/graalvm/compiler/nodes/ValueNode;)V
end local 9 end local 7 25: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 21
26: aload 0
aload 1
aload 5
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.placeNewSegmentAndCleanup:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/collections/EconomicMap;)V
27: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 28
aload 1
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/SafepointNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
ldc Lorg/graalvm/compiler/nodes/SafepointNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
if_icmpeq 28
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
28: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap int
StackMap stack:
aload 1
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/SafepointNode;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 8
goto 31
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap int top java.util.Iterator
StackMap stack:
29: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.SafepointNode
astore 7
start local 7 30: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 7
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
end local 7 31: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 29
32: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 7
start local 7 33: aload 2
ifnull 60
34: aload 2
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.extended.OpaqueNode
astore 8
start local 8 35: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
astore 9
start local 9 36: aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.strideNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 10
start local 10 37: aload 8
ifnonnull 55
38: new org.graalvm.compiler.nodes.extended.OpaqueNode
dup
aload 10
aload 10
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.AddNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
invokespecial org.graalvm.compiler.nodes.extended.OpaqueNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 8
39: aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimit:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
start local 11 40: aload 11
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
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.getBits:()I
istore 12
start local 12 41: aload 11
aload 8
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.SubNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 13
start local 13 42: aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounterIntegerHelper:()Lorg/graalvm/compiler/nodes/util/IntegerHelper;
astore 14
start local 14 43: aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getDirection:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpne 47
44: iload 12
aload 14
invokevirtual org.graalvm.compiler.nodes.util.IntegerHelper.minValue:()J
invokestatic org.graalvm.compiler.nodes.ConstantNode.forIntegerBits:(IJ)Lorg/graalvm/compiler/nodes/ConstantNode;
astore 16
start local 16 45: aload 11
aload 16
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.SubNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
aload 8
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.IntegerBelowNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/LogicNode;
astore 15
start local 15 46: goto 50
end local 16 end local 15 47: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.extended.OpaqueNode org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode int org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.util.IntegerHelper
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 48
aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getDirection:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Down:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpeq 48
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
48: StackMap locals:
StackMap stack:
iload 12
aload 14
invokevirtual org.graalvm.compiler.nodes.util.IntegerHelper.maxValue:()J
invokestatic org.graalvm.compiler.nodes.ConstantNode.forIntegerBits:(IJ)Lorg/graalvm/compiler/nodes/ConstantNode;
astore 16
start local 16 49: aload 8
aload 11
aload 16
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.SubNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.IntegerBelowNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/LogicNode;
astore 15
start local 15 50: StackMap locals: org.graalvm.compiler.nodes.LogicNode org.graalvm.compiler.nodes.ConstantNode
StackMap stack:
aload 15
aload 16
aload 13
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.ConditionalNode.create:(Lorg/graalvm/compiler/nodes/LogicNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 13
51: aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimitTest:()Lorg/graalvm/compiler/nodes/IfNode;
invokevirtual org.graalvm.compiler.nodes.IfNode.condition:()Lorg/graalvm/compiler/nodes/LogicNode;
checkcast org.graalvm.compiler.nodes.calc.CompareNode
astore 17
start local 17 52: aload 17
aload 11
aload 7
aload 13
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUniqueWithInputs:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.nodes.calc.CompareNode.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
53: aload 2
aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
aload 8
invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 54: goto 60
55: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode java.util.ArrayList org.graalvm.collections.EconomicMap int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.extended.OpaqueNode org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.ValueNode
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 56
aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.isConstantStride:()Z
ifne 56
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
56: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 57
aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
invokestatic java.lang.Math.addExact:(JJ)J
aload 9
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
ldc 2
lmul
lcmp
ifeq 57
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
57: StackMap locals:
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.nodes.extended.OpaqueNode.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
start local 11 58: aload 8
aload 7
aload 10
aload 11
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.AddNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUniqueWithInputs:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
invokevirtual org.graalvm.compiler.nodes.extended.OpaqueNode.setValue:(Lorg/graalvm/compiler/nodes/ValueNode;)V
59: aload 11
invokestatic org.graalvm.compiler.nodes.util.GraphUtil.tryKillUnused:(Lorg/graalvm/compiler/graph/Node;)Z
pop
end local 11 end local 10 end local 9 end local 8 60: StackMap locals:
StackMap stack:
aload 3
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getUnrollFactor:()I
iconst_2
imul
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setUnrollFactor:(I)V
61: aload 3
dconst_1
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
ldc 2.0
ddiv
invokestatic java.lang.Math.max:(DD)D
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.setLoopFrequency:(D)V
62: aload 7
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_4
aload 7
ldc "LoopPartialUnroll %s"
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
63: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_3
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
ldc "After insertWithinAfter %s"
aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
64: return
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 65 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 65 1 loop Lorg/graalvm/compiler/loop/LoopEx;
0 65 2 opaqueUnrolledStrides Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/extended/OpaqueNode;>;
4 65 3 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
5 65 4 backedgeValues Ljava/util/ArrayList<Lorg/graalvm/compiler/nodes/ValueNode;>;
6 65 5 new2OldPhis Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
8 18 6 mainPhiNode Lorg/graalvm/compiler/nodes/PhiNode;
9 18 8 originalNode Lorg/graalvm/compiler/nodes/ValueNode;
10 18 9 duplicatedNode Lorg/graalvm/compiler/nodes/ValueNode;
20 65 6 index I
22 25 7 mainPhiNode Lorg/graalvm/compiler/nodes/PhiNode;
23 25 9 duplicatedNode Lorg/graalvm/compiler/nodes/ValueNode;
30 31 7 safepoint Lorg/graalvm/compiler/nodes/SafepointNode;
33 65 7 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
35 60 8 opaque Lorg/graalvm/compiler/nodes/extended/OpaqueNode;
36 60 9 counted Lorg/graalvm/compiler/loop/CountedLoopInfo;
37 60 10 counterStride Lorg/graalvm/compiler/nodes/ValueNode;
40 54 11 limit Lorg/graalvm/compiler/nodes/ValueNode;
41 54 12 bits I
42 54 13 newLimit Lorg/graalvm/compiler/nodes/ValueNode;
43 54 14 helper Lorg/graalvm/compiler/nodes/util/IntegerHelper;
46 47 15 overflowCheck Lorg/graalvm/compiler/nodes/LogicNode;
50 54 15 overflowCheck Lorg/graalvm/compiler/nodes/LogicNode;
45 47 16 extremum Lorg/graalvm/compiler/nodes/ConstantNode;
49 54 16 extremum Lorg/graalvm/compiler/nodes/ConstantNode;
52 54 17 compareNode Lorg/graalvm/compiler/nodes/calc/CompareNode;
58 60 11 previousValue Lorg/graalvm/compiler/nodes/ValueNode;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/extended/OpaqueNode;>;)V
MethodParameters:
Name Flags
loop
opaqueUnrolledStrides
private void placeNewSegmentAndCleanup(org.graalvm.compiler.loop.LoopEx, org.graalvm.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.graph.Node>);
descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/collections/EconomicMap;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=16, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
astore 3
start local 3 1: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 4
start local 4 2: aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 5
start local 5 3: aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getLimitTest:()Lorg/graalvm/compiler/nodes/IfNode;
astore 6
start local 6 4: aload 0
aload 6
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.IfNode
astore 7
start local 7 5: aload 7
invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 8
start local 8 6: aload 8
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.anchored:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 9
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.AbstractBeginNode 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
aload 8
aload 6
invokevirtual org.graalvm.compiler.nodes.IfNode.falseSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.graph.Node.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
end local 9 9: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
10: aload 7
invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
astore 9
start local 9 11: aload 9
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.anchored:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 11
goto 14
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.AbstractBeginNode top java.util.Iterator
StackMap stack:
12: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 10
start local 10 13: aload 10
aload 9
aload 6
invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.graph.Node.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
end local 10 14: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
15: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 16
aload 5
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasValueProxies:()Z
ifne 16
aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopExits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmple 16
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Can only merge early loop exits if graph has value proxies "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
16: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
aload 0
aload 5
aload 4
aload 3
aload 2
aload 1
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.mergeEarlyLoopExits:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/loop/CountedLoopInfo;Lorg/graalvm/collections/EconomicMap;Lorg/graalvm/compiler/loop/LoopEx;)V
17: aload 5
aload 7
aload 6
invokevirtual org.graalvm.compiler.nodes.IfNode.trueSuccessor:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getBody:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
if_acmpne 18
aload 9
goto 19
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack: org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode
18: aload 8
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopEx org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack: org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.IfNode org.graalvm.compiler.nodes.AbstractBeginNode
19: invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeSplitPropagate:(Lorg/graalvm/compiler/nodes/ControlSplitNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;)V
20: aload 5
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_4
aload 5
ldc "Before placing segment"
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
21: aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getBody:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
instanceof org.graalvm.compiler.nodes.LoopEndNode
ifeq 24
22: aload 0
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FixedNode
invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killCFG:(Lorg/graalvm/compiler/nodes/FixedNode;)V
23: goto 35
24: StackMap locals:
StackMap stack:
aload 0
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 10
start local 10 25: aload 10
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 11
start local 11 26: aload 0
aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopEnds:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopEndNode
invokevirtual org.graalvm.compiler.nodes.LoopEndNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FixedNode
invokestatic org.graalvm.compiler.loop.LoopFragmentInside.getBlockEnd:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/EndNode;
astore 12
start local 12 27: aload 12
invokevirtual org.graalvm.compiler.nodes.EndNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
astore 13
start local 13 28: aload 4
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getSingleLoopEnd:()Lorg/graalvm/compiler/nodes/LoopEndNode;
astore 14
start local 14 29: aload 14
invokevirtual org.graalvm.compiler.nodes.LoopEndNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
astore 15
start local 15 30: aload 10
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.clearSuccessors:()V
31: aload 15
aload 14
aload 11
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.replaceFirstSuccessor:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
32: aload 13
aload 12
aload 14
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.replaceFirstSuccessor:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
33: aload 10
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.safeDelete:()V
34: aload 12
invokevirtual org.graalvm.compiler.nodes.EndNode.safeDelete:()V
end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 35: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_4
aload 5
ldc "After placing segment"
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
36: return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 37 1 loop Lorg/graalvm/compiler/loop/LoopEx;
0 37 2 new2OldPhis Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
1 37 3 mainCounted Lorg/graalvm/compiler/loop/CountedLoopInfo;
2 37 4 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
3 37 5 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
4 37 6 loopTest Lorg/graalvm/compiler/nodes/IfNode;
5 37 7 newSegmentLoopTest Lorg/graalvm/compiler/nodes/IfNode;
6 37 8 falseSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
8 9 9 usage Lorg/graalvm/compiler/graph/Node;
11 37 9 trueSuccessor Lorg/graalvm/compiler/nodes/AbstractBeginNode;
13 14 10 usage Lorg/graalvm/compiler/graph/Node;
25 35 10 newSegmentBegin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
26 35 11 newSegmentFirstNode Lorg/graalvm/compiler/nodes/FixedNode;
27 35 12 newSegmentEnd Lorg/graalvm/compiler/nodes/EndNode;
28 35 13 newSegmentLastNode Lorg/graalvm/compiler/nodes/FixedWithNextNode;
29 35 14 loopEndNode Lorg/graalvm/compiler/nodes/LoopEndNode;
30 35 15 lastCodeNode Lorg/graalvm/compiler/nodes/FixedWithNextNode;
Signature: (Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;)V
MethodParameters:
Name Flags
loop
new2OldPhis
private void mergeEarlyLoopExits(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.nodes.LoopBeginNode, org.graalvm.compiler.loop.CountedLoopInfo, org.graalvm.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.graph.Node>, org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/loop/CountedLoopInfo;Lorg/graalvm/collections/EconomicMap;Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopExits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmpgt 2
1: return
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasValueProxies:()Z
ifne 3
new java.lang.AssertionError
dup
ldc "Unrolling with multiple exits requires proxies"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopExits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 13
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.LoopEx top java.util.Iterator
StackMap stack:
4: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 6
start local 6 5: aload 6
aload 3
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCountedExit:()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
if_acmpne 7
6: goto 13
7: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.LoopExitNode java.util.Iterator
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 8
start local 8 8: aload 0
aload 6
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 9
start local 9 9: aload 8
instanceof org.graalvm.compiler.nodes.EndNode
ifeq 12
10: aload 0
aload 8
aload 9
aload 6
aload 2
aload 1
aload 4
aload 5
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.mergeRegularEarlyExit:(Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/collections/EconomicMap;Lorg/graalvm/compiler/loop/LoopEx;)V
11: goto 13
12: StackMap locals: org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.AbstractBeginNode
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Can only unroll loops where the early exits which merge "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " duplicated node is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 9
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " main loop begin is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
end local 9 end local 8 end local 6 13: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.LoopEx top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
14: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 15 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 15 2 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
0 15 3 mainCounted Lorg/graalvm/compiler/loop/CountedLoopInfo;
0 15 4 new2OldPhis Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
0 15 5 loop Lorg/graalvm/compiler/loop/LoopEx;
5 13 6 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
8 13 8 next Lorg/graalvm/compiler/nodes/FixedNode;
9 13 9 begin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
Signature: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/loop/CountedLoopInfo;Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;Lorg/graalvm/compiler/loop/LoopEx;)V
MethodParameters:
Name Flags
graph
mainLoopBegin
mainCounted
new2OldPhis
loop
private void mergeRegularEarlyExit(org.graalvm.compiler.nodes.FixedNode, org.graalvm.compiler.nodes.AbstractBeginNode, org.graalvm.compiler.nodes.LoopExitNode, org.graalvm.compiler.nodes.LoopBeginNode, org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.graph.Node>, org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/collections/EconomicMap;Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=15, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 1
checkcast org.graalvm.compiler.nodes.EndNode
invokevirtual org.graalvm.compiler.nodes.EndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
astore 8
start local 8 1: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 2
aload 8
instanceof org.graalvm.compiler.nodes.MergeNode
ifne 2
new java.lang.AssertionError
dup
ldc "Can only merge loop exits on regular merges"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals: org.graalvm.compiler.nodes.AbstractMergeNode
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 3
aload 2
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
ifnull 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 5
new org.graalvm.compiler.nodes.LoopExitNode
dup
aload 4
invokespecial org.graalvm.compiler.nodes.LoopExitNode.<init>:(Lorg/graalvm/compiler/nodes/LoopBeginNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 9
start local 9 4: aload 0
aload 5
aload 3
aload 9
aload 6
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.createExitStateForNewSegmentEarlyExit:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/collections/EconomicMap;)V
5: aload 5
new org.graalvm.compiler.nodes.EndNode
dup
invokespecial org.graalvm.compiler.nodes.EndNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.EndNode
astore 10
start local 10 6: aload 2
aload 9
invokevirtual org.graalvm.compiler.nodes.AbstractBeginNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
7: aload 9
aload 10
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
8: aload 8
aload 10
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.addForwardEnd:(Lorg/graalvm/compiler/nodes/EndNode;)V
9: aload 8
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 12
goto 17
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.EndNode top java.util.Iterator
StackMap stack:
10: aload 12
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 11
start local 11 11: aload 11
aload 1
checkcast org.graalvm.compiler.nodes.EndNode
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 13
start local 13 12: aload 7
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
aload 13
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.contains:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 15
13: aload 13
astore 14
start local 14 14: goto 16
end local 14 15: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.EndNode org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 11
aload 9
aload 0
aload 13
checkcast org.graalvm.compiler.nodes.ProxyNode
aload 6
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getNodeInExitPathFromUnrolledSegment:(Lorg/graalvm/compiler/nodes/ProxyNode;Lorg/graalvm/collections/EconomicMap;)Lorg/graalvm/compiler/nodes/ValueNode;
invokestatic org.graalvm.compiler.loop.LoopFragmentInside.patchProxyAtPhi:(Lorg/graalvm/compiler/nodes/PhiNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 14
start local 14 16: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 11
aload 14
invokevirtual org.graalvm.compiler.nodes.PhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 14 end local 13 end local 11 17: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.FixedNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.collections.EconomicMap org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.LoopExitNode org.graalvm.compiler.nodes.EndNode top java.util.Iterator
StackMap stack:
aload 12
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
18: return
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 19 1 next Lorg/graalvm/compiler/nodes/FixedNode;
0 19 2 exitBranchBegin Lorg/graalvm/compiler/nodes/AbstractBeginNode;
0 19 3 oldExit Lorg/graalvm/compiler/nodes/LoopExitNode;
0 19 4 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
0 19 5 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 19 6 new2OldPhis Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
0 19 7 loop Lorg/graalvm/compiler/loop/LoopEx;
1 19 8 merge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
4 19 9 lex Lorg/graalvm/compiler/nodes/LoopExitNode;
6 19 10 end Lorg/graalvm/compiler/nodes/EndNode;
11 17 11 phi Lorg/graalvm/compiler/nodes/PhiNode;
12 17 13 input Lorg/graalvm/compiler/nodes/ValueNode;
14 15 14 replacement Lorg/graalvm/compiler/nodes/ValueNode;
16 17 14 replacement Lorg/graalvm/compiler/nodes/ValueNode;
Signature: (Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/nodes/AbstractBeginNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;Lorg/graalvm/compiler/loop/LoopEx;)V
MethodParameters:
Name Flags
next
exitBranchBegin
oldExit
mainLoopBegin
graph
new2OldPhis
loop
public static org.graalvm.compiler.nodes.ValueNode patchProxyAtPhi(org.graalvm.compiler.nodes.PhiNode, org.graalvm.compiler.nodes.LoopExitNode, org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/nodes/PhiNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
instanceof org.graalvm.compiler.nodes.ValuePhiNode
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.nodes.PhiNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.ValueProxyNode
dup
aload 2
aload 1
invokespecial org.graalvm.compiler.nodes.ValueProxyNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/LoopExitNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
areturn
2: StackMap locals:
StackMap stack:
aload 0
instanceof org.graalvm.compiler.nodes.memory.MemoryPhiNode
ifeq 4
3: aload 0
invokevirtual org.graalvm.compiler.nodes.PhiNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.MemoryProxyNode
dup
aload 2
checkcast org.graalvm.compiler.nodes.memory.MemoryKill
aload 1
aload 0
checkcast org.graalvm.compiler.nodes.memory.MemoryPhiNode
invokevirtual org.graalvm.compiler.nodes.memory.MemoryPhiNode.getLocationIdentity:()Lorg/graalvm/word/LocationIdentity;
invokespecial org.graalvm.compiler.nodes.MemoryProxyNode.<init>:(Lorg/graalvm/compiler/nodes/memory/MemoryKill;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/word/LocationIdentity;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
areturn
4: StackMap locals:
StackMap stack:
aload 0
instanceof org.graalvm.compiler.nodes.GuardPhiNode
ifeq 6
5: aload 0
invokevirtual org.graalvm.compiler.nodes.PhiNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.nodes.GuardProxyNode
dup
aload 2
checkcast org.graalvm.compiler.nodes.extended.GuardingNode
aload 1
invokespecial org.graalvm.compiler.nodes.GuardProxyNode.<init>:(Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/LoopExitNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
areturn
6: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Unknown phi type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 phi Lorg/graalvm/compiler/nodes/PhiNode;
0 7 1 lex Lorg/graalvm/compiler/nodes/LoopExitNode;
0 7 2 proxyInput Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
phi
lex
proxyInput
private void createExitStateForNewSegmentEarlyExit(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.nodes.LoopExitNode, org.graalvm.compiler.nodes.LoopExitNode, org.graalvm.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.graph.Node>);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/collections/EconomicMap;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 1
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 5
start local 5 2: aload 5
invokevirtual org.graalvm.compiler.nodes.FrameState.duplicateWithVirtualState:()Lorg/graalvm/compiler/nodes/FrameState;
astore 6
start local 6 3: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_5
aload 1
ldc "After duplicating state %s for new exit %s"
aload 5
aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
4: aload 6
new org.graalvm.compiler.loop.LoopFragmentInside$3
dup
aload 0
aload 2
aload 4
aload 3
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$3.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/collections/EconomicMap;Lorg/graalvm/compiler/nodes/LoopExitNode;)V
invokevirtual org.graalvm.compiler.nodes.FrameState.applyToNonVirtual:(Lorg/graalvm/compiler/nodes/VirtualState$NodePositionClosure;)V
5: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
iconst_5
aload 1
ldc "After duplicating state replacing values with inputs proxied %s"
aload 6
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
6: aload 3
aload 6
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
7: 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 8 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 8 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
0 8 2 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
0 8 3 lex Lorg/graalvm/compiler/nodes/LoopExitNode;
0 8 4 new2OldPhis Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
2 8 5 exitState Lorg/graalvm/compiler/nodes/FrameState;
3 8 6 duplicate Lorg/graalvm/compiler/nodes/FrameState;
Signature: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/compiler/nodes/LoopExitNode;Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;)V
MethodParameters:
Name Flags
graph
exit
lex
new2OldPhis
private org.graalvm.compiler.nodes.ValueNode getNodeInExitPathFromUnrolledSegment(org.graalvm.compiler.nodes.ProxyNode, org.graalvm.collections.EconomicMap<org.graalvm.compiler.graph.Node, org.graalvm.compiler.graph.Node>);
descriptor: (Lorg/graalvm/compiler/nodes/ProxyNode;Lorg/graalvm/collections/EconomicMap;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.graalvm.compiler.nodes.ProxyNode.getOriginalNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 3
start local 3 1: aconst_null
astore 4
start local 4 2: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
aload 3
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.contains:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.nodes.ProxyNode.proxyPoint:()Lorg/graalvm/compiler/nodes/LoopExitNode;
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 16
3: StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 0
aload 3
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 5
start local 5 4: aload 5
ifnonnull 14
5: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 6
aload 1
invokevirtual org.graalvm.compiler.nodes.ProxyNode.proxyPoint:()Lorg/graalvm/compiler/nodes/LoopExitNode;
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.ProxyNode.proxyPoint:()Lorg/graalvm/compiler/nodes/LoopExitNode;
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 6
start local 6 7: aload 6
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.getSingleLoopEnd:()Lorg/graalvm/compiler/nodes/LoopEndNode;
astore 7
start local 7 8: aload 3
checkcast org.graalvm.compiler.nodes.PhiNode
astore 8
start local 8 9: aload 8
aload 7
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
start local 9 10: aload 2
aload 9
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 4
11: aload 4
ifnonnull 13
12: aload 9
astore 4
13: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.ProxyNode org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopEndNode org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 17
aload 4
ifnonnull 17
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 9 end local 8 end local 7 end local 6 14: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.ProxyNode org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 5
astore 4
end local 5 15: goto 17
16: StackMap locals:
StackMap stack:
aload 3
astore 4
17: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 18 1 proxy Lorg/graalvm/compiler/nodes/ProxyNode;
0 18 2 new2OldPhis Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;
1 18 3 originalNode Lorg/graalvm/compiler/nodes/ValueNode;
2 18 4 replacement Lorg/graalvm/compiler/nodes/ValueNode;
4 15 5 nextIterationVal Lorg/graalvm/compiler/nodes/ValueNode;
7 14 6 mainLoopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
8 14 7 endBeforeSegment Lorg/graalvm/compiler/nodes/LoopEndNode;
9 14 8 loopPhi Lorg/graalvm/compiler/nodes/PhiNode;
10 14 9 phiInputAtOriginalSegment Lorg/graalvm/compiler/nodes/ValueNode;
Signature: (Lorg/graalvm/compiler/nodes/ProxyNode;Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;>;)Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
proxy
new2OldPhis
private static org.graalvm.compiler.nodes.EndNode getBlockEnd(org.graalvm.compiler.nodes.FixedNode);
descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/EndNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
astore 1
start local 1 1: goto 3
2: StackMap locals: org.graalvm.compiler.nodes.FixedNode
StackMap stack:
aload 1
checkcast org.graalvm.compiler.nodes.FixedWithNextNode
invokevirtual org.graalvm.compiler.nodes.FixedWithNextNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 1
3: StackMap locals:
StackMap stack:
aload 1
instanceof org.graalvm.compiler.nodes.FixedWithNextNode
ifne 2
4: aload 1
checkcast org.graalvm.compiler.nodes.EndNode
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 node Lorg/graalvm/compiler/nodes/FixedNode;
1 5 1 curNode Lorg/graalvm/compiler/nodes/FixedNode;
MethodParameters:
Name Flags
node
public org.graalvm.compiler.graph.NodeBitMap nodes();
descriptor: ()Lorg/graalvm/compiler/graph/NodeBitMap;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=7, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
ifnonnull 18
1: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.whole:()Lorg/graalvm/compiler/loop/LoopFragmentWhole;
astore 1
start local 1 2: aload 1
invokevirtual org.graalvm.compiler.loop.LoopFragmentWhole.nodes:()Lorg/graalvm/compiler/graph/NodeBitMap;
pop
3: aload 0
aload 1
getfield org.graalvm.compiler.loop.LoopFragmentWhole.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.copy:()Lorg/graalvm/compiler/graph/NodeBitMap;
putfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
4: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 2
start local 2 5: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 4
goto 8
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
6: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 3
start local 3 7: aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
aload 3
invokevirtual org.graalvm.compiler.graph.NodeBitMap.clear:(Lorg/graalvm/compiler/graph/Node;)V
end local 3 8: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
9: aload 0
aload 2
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.clearStateNodes:(Lorg/graalvm/compiler/nodes/StateSplit;)V
10: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.exits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 4
goto 17
StackMap locals:
StackMap stack:
11: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 3
start local 3 12: aload 0
aload 3
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.clearStateNodes:(Lorg/graalvm/compiler/nodes/StateSplit;)V
13: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.proxies:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 6
goto 16
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.LoopExitNode java.util.Iterator top java.util.Iterator
StackMap stack:
14: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ProxyNode
astore 5
start local 5 15: aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
aload 5
invokevirtual org.graalvm.compiler.graph.NodeBitMap.clear:(Lorg/graalvm/compiler/graph/Node;)V
end local 5 16: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
end local 3 17: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentWhole org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 11
end local 2 end local 1 18: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
2 18 1 whole Lorg/graalvm/compiler/loop/LoopFragmentWhole;
5 18 2 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
7 8 3 phi Lorg/graalvm/compiler/nodes/PhiNode;
12 17 3 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
15 16 5 proxy Lorg/graalvm/compiler/nodes/ProxyNode;
private void clearStateNodes(org.graalvm.compiler.nodes.StateSplit);
descriptor: (Lorg/graalvm/compiler/nodes/StateSplit;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface org.graalvm.compiler.nodes.StateSplit.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
aload 0
aload 1
invokedynamic apply(Lorg/graalvm/compiler/loop/LoopFragmentInside;Lorg/graalvm/compiler/nodes/StateSplit;)Lorg/graalvm/compiler/nodes/VirtualState$VirtualClosure;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Lorg/graalvm/compiler/nodes/VirtualState;)V
org/graalvm/compiler/loop/LoopFragmentInside.lambda$0(Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/nodes/VirtualState;)V (7)
(Lorg/graalvm/compiler/nodes/VirtualState;)V
invokevirtual org.graalvm.compiler.nodes.FrameState.applyToVirtual:(Lorg/graalvm/compiler/nodes/VirtualState$VirtualClosure;)V
3: StackMap locals: org.graalvm.compiler.nodes.FrameState
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 4 1 stateSplit Lorg/graalvm/compiler/nodes/StateSplit;
1 4 2 loopState Lorg/graalvm/compiler/nodes/FrameState;
MethodParameters:
Name Flags
stateSplit
public org.graalvm.compiler.graph.iterators.NodeIterable<org.graalvm.compiler.nodes.LoopExitNode> exits();
descriptor: ()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopExits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
Signature: ()Lorg/graalvm/compiler/graph/iterators/NodeIterable<Lorg/graalvm/compiler/nodes/LoopExitNode;>;
protected org.graalvm.compiler.graph.Graph$DuplicationReplacement getDuplicationReplacement();
descriptor: ()Lorg/graalvm/compiler/graph/Graph$DuplicationReplacement;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 1
start local 1 1: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 2
start local 2 2: new org.graalvm.compiler.loop.LoopFragmentInside$4
dup
aload 0
aload 1
aload 2
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$4.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;Lorg/graalvm/compiler/nodes/LoopBeginNode;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
1 3 1 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 3 2 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
protected void beforeDuplication();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
private void patchPeeling(org.graalvm.compiler.loop.LoopFragmentInside);
descriptor: (Lorg/graalvm/compiler/loop/LoopFragmentInside;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=14, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 2
start local 2 1: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
invokevirtual org.graalvm.compiler.graph.NodeBitMap.copy:()Lorg/graalvm/compiler/graph/NodeBitMap;
astore 4
start local 4 3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.exits:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 6
goto 10
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap top java.util.Iterator
StackMap stack:
4: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopExitNode
astore 5
start local 5 5: aload 5
aload 4
invokestatic org.graalvm.compiler.loop.LoopFragmentInside.markStateNodes:(Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/graph/NodeBitMap;)V
6: aload 5
invokevirtual org.graalvm.compiler.nodes.LoopExitNode.proxies:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 8
goto 9
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap org.graalvm.compiler.nodes.LoopExitNode java.util.Iterator top java.util.Iterator
StackMap stack:
7: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ProxyNode
astore 7
start local 7 8: aload 4
aload 7
invokevirtual org.graalvm.compiler.graph.NodeBitMap.markAndGrow:(Lorg/graalvm/compiler/graph/Node;)V
end local 7 9: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 5 10: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
11: aload 2
aload 4
invokestatic org.graalvm.compiler.loop.LoopFragmentInside.markStateNodes:(Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/graph/NodeBitMap;)V
12: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
astore 5
start local 5 13: aload 5
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 36
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List top java.util.Iterator
StackMap stack:
14: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 6
start local 6 15: aload 6
invokevirtual org.graalvm.compiler.nodes.PhiNode.hasNoUsages:()Z
ifeq 17
16: goto 36
17: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List org.graalvm.compiler.nodes.PhiNode java.util.Iterator
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopEnds:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmpne 21
18: aload 6
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopEnds:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
start local 9 19: aload 1
aload 9
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.prim:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 8
end local 9 start local 8 20: goto 22
end local 8 21: StackMap locals:
StackMap stack:
aload 1
getfield org.graalvm.compiler.loop.LoopFragmentInside.mergedInitializers:Lorg/graalvm/collections/EconomicMap;
aload 6
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 8
start local 8 22: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 6
aload 2
invokevirtual org.graalvm.compiler.nodes.PhiNode.duplicateOn:(Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Lorg/graalvm/compiler/nodes/PhiNode;
astore 9
start local 9 23: aload 9
aload 8
invokevirtual org.graalvm.compiler.nodes.PhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
24: aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.orderedLoopEnds:()[Lorg/graalvm/compiler/nodes/LoopEndNode;
dup
astore 13
arraylength
istore 12
iconst_0
istore 11
goto 28
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.PhiNode top int int org.graalvm.compiler.nodes.LoopEndNode[]
StackMap stack:
25: aload 13
iload 11
aaload
astore 10
start local 10 26: aload 9
aload 6
aload 10
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.PhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 10 27: iinc 11 1
StackMap locals:
StackMap stack:
28: iload 11
iload 12
if_icmplt 25
29: aload 1
aload 6
aload 9
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.putDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
30: aload 3
aload 9
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
31: aload 6
invokevirtual org.graalvm.compiler.nodes.PhiNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 11
goto 35
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
32: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 10
start local 10 33: aload 4
aload 10
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarkedAndGrow:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 35
34: aload 10
aload 6
aload 9
invokevirtual org.graalvm.compiler.graph.Node.replaceFirstInput:(Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/graph/Node;)V
end local 10 35: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 32
end local 9 end local 8 end local 6 36: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
37: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 48
StackMap locals:
StackMap stack:
38: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 6
start local 6 39: iconst_0
istore 8
start local 8 40: goto 47
41: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List org.graalvm.compiler.nodes.PhiNode java.util.Iterator int
StackMap stack:
aload 6
iload 8
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(I)Lorg/graalvm/compiler/nodes/ValueNode;
astore 9
start local 9 42: aload 2
aload 9
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 46
43: aload 1
aload 9
checkcast org.graalvm.compiler.nodes.PhiNode
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 10
start local 10 44: aload 10
ifnull 46
45: aload 6
iload 8
aload 10
invokevirtual org.graalvm.compiler.nodes.PhiNode.setValueAt:(ILorg/graalvm/compiler/nodes/ValueNode;)V
end local 10 end local 9 46: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
47: iload 8
aload 6
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueCount:()I
if_icmplt 41
end local 8 end local 6 48: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 38
49: iconst_1
istore 6
start local 6 50: goto 64
51: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List int
StackMap stack:
iconst_0
istore 6
52: iconst_0
istore 7
start local 7 53: goto 63
54: StackMap locals: int
StackMap stack:
aload 5
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 8
start local 8 55: aload 8
invokevirtual org.graalvm.compiler.nodes.PhiNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 10
goto 61
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List int int org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
56: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 9
start local 9 57: aload 9
instanceof org.graalvm.compiler.nodes.PhiNode
ifeq 58
aload 5
aload 9
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 61
58: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List int int org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.graph.Node java.util.Iterator
StackMap stack:
aload 5
iload 7
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
59: iconst_1
istore 6
60: goto 63
end local 9 61: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List int int org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 56
62: iinc 7 1
end local 8 63: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List int int
StackMap stack:
iload 7
aload 5
invokeinterface java.util.List.size:()I
if_icmplt 54
end local 7 64: StackMap locals:
StackMap stack:
iload 6
ifne 51
65: aload 5
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 68
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.loop.LoopFragmentInside org.graalvm.compiler.nodes.LoopBeginNode java.util.List org.graalvm.compiler.graph.NodeBitMap java.util.List int top java.util.Iterator
StackMap stack:
66: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 7
start local 7 67: aload 7
invokevirtual org.graalvm.compiler.nodes.PhiNode.clearInputs:()V
end local 7 68: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 66
69: aload 5
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 73
StackMap locals:
StackMap stack:
70: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 7
start local 7 71: aload 7
invokevirtual org.graalvm.compiler.nodes.PhiNode.isAlive:()Z
ifeq 73
72: aload 7
invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killWithUnusedFloatingInputs:(Lorg/graalvm/compiler/graph/Node;)V
end local 7 73: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 70
74: 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 75 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 75 1 peel Lorg/graalvm/compiler/loop/LoopFragmentInside;
1 75 2 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
2 75 3 newPhis Ljava/util/List<Lorg/graalvm/compiler/nodes/PhiNode;>;
3 75 4 usagesToPatch Lorg/graalvm/compiler/graph/NodeBitMap;
5 10 5 exit Lorg/graalvm/compiler/nodes/LoopExitNode;
8 9 7 proxy Lorg/graalvm/compiler/nodes/ProxyNode;
13 75 5 oldPhis Ljava/util/List<Lorg/graalvm/compiler/nodes/PhiNode;>;
15 36 6 phi Lorg/graalvm/compiler/nodes/PhiNode;
20 21 8 first Lorg/graalvm/compiler/nodes/ValueNode;
22 36 8 first Lorg/graalvm/compiler/nodes/ValueNode;
19 20 9 b Lorg/graalvm/compiler/nodes/ValueNode;
23 36 9 newPhi Lorg/graalvm/compiler/nodes/PhiNode;
26 27 10 end Lorg/graalvm/compiler/nodes/LoopEndNode;
33 35 10 usage Lorg/graalvm/compiler/graph/Node;
39 48 6 phi Lorg/graalvm/compiler/nodes/PhiNode;
40 48 8 i I
42 46 9 v Lorg/graalvm/compiler/nodes/ValueNode;
44 46 10 newV Lorg/graalvm/compiler/nodes/PhiNode;
50 75 6 progress Z
53 64 7 i I
55 63 8 oldPhi Lorg/graalvm/compiler/nodes/PhiNode;
57 61 9 usage Lorg/graalvm/compiler/graph/Node;
67 68 7 deadPhi Lorg/graalvm/compiler/nodes/PhiNode;
71 73 7 deadPhi Lorg/graalvm/compiler/nodes/PhiNode;
MethodParameters:
Name Flags
peel
private static void markStateNodes(org.graalvm.compiler.nodes.StateSplit, org.graalvm.compiler.graph.NodeBitMap);
descriptor: (Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/graph/NodeBitMap;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokeinterface org.graalvm.compiler.nodes.StateSplit.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
aload 1
invokedynamic apply(Lorg/graalvm/compiler/graph/NodeBitMap;)Lorg/graalvm/compiler/nodes/VirtualState$VirtualClosure;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Lorg/graalvm/compiler/nodes/VirtualState;)V
org/graalvm/compiler/loop/LoopFragmentInside.lambda$2(Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/nodes/VirtualState;)V (6)
(Lorg/graalvm/compiler/nodes/VirtualState;)V
invokevirtual org.graalvm.compiler.nodes.FrameState.applyToVirtual:(Lorg/graalvm/compiler/nodes/VirtualState$VirtualClosure;)V
3: StackMap locals: org.graalvm.compiler.nodes.FrameState
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 stateSplit Lorg/graalvm/compiler/nodes/StateSplit;
0 4 1 marks Lorg/graalvm/compiler/graph/NodeBitMap;
1 4 2 exitState Lorg/graalvm/compiler/nodes/FrameState;
MethodParameters:
Name Flags
stateSplit
marks
protected org.graalvm.compiler.nodes.ValueNode prim(org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 2
start local 2 2: aload 2
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 5
3: aload 1
checkcast org.graalvm.compiler.nodes.PhiNode
astore 3
start local 3 4: aload 3
aload 2
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.forwardEnd:()Lorg/graalvm/compiler/nodes/AbstractEndNode;
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
areturn
end local 3 5: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodesReady:Z
ifeq 10
6: aload 0
aload 1
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 3
start local 3 7: aload 3
ifnonnull 9
8: aload 1
areturn
9: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 3
areturn
end local 3 10: StackMap locals:
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 11 1 b Lorg/graalvm/compiler/nodes/ValueNode;
2 11 2 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
4 5 3 phi Lorg/graalvm/compiler/nodes/PhiNode;
7 10 3 v Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
b
protected org.graalvm.compiler.nodes.ValueNode primAfter(org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 2
start local 2 2: aload 2
aload 1
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.isPhiAtMerge:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 6
3: aload 1
checkcast org.graalvm.compiler.nodes.PhiNode
astore 3
start local 3 4: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 5
aload 3
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueCount:()I
iconst_2
if_icmpeq 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals: org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.PhiNode
StackMap stack:
aload 3
iconst_1
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(I)Lorg/graalvm/compiler/nodes/ValueNode;
areturn
end local 3 6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodesReady:Z
ifeq 11
7: aload 0
aload 1
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 3
start local 3 8: aload 3
ifnonnull 10
9: aload 1
areturn
10: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 3
areturn
end local 3 11: StackMap locals:
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 12 1 b Lorg/graalvm/compiler/nodes/ValueNode;
2 12 2 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
4 6 3 phi Lorg/graalvm/compiler/nodes/PhiNode;
8 11 3 v Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
b
private org.graalvm.compiler.nodes.AbstractBeginNode mergeEnds();
descriptor: ()Lorg/graalvm/compiler/nodes/AbstractBeginNode;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=16, args_size=1
start local 0 0: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.isDuplicate:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 1
start local 1 2: getstatic org.graalvm.collections.Equivalence.IDENTITY:Lorg/graalvm/collections/Equivalence;
invokestatic org.graalvm.collections.EconomicMap.create:(Lorg/graalvm/collections/Equivalence;)Lorg/graalvm/collections/EconomicMap;
astore 2
start local 2 3: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.loop:()Lorg/graalvm/compiler/loop/LoopEx;
invokevirtual org.graalvm.compiler.loop.LoopEx.loopBegin:()Lorg/graalvm/compiler/nodes/LoopBeginNode;
astore 3
start local 3 4: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopEnds:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
astore 5
goto 10
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode top java.util.Iterator
StackMap stack:
5: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopEndNode
astore 4
start local 4 6: aload 0
aload 4
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.getDuplicatedNode:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
astore 6
start local 6 7: aload 6
ifnull 10
8: aload 1
aload 6
checkcast org.graalvm.compiler.nodes.EndNode
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
9: aload 2
aload 6
aload 4
invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 end local 4 10: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
11: aload 0
getstatic org.graalvm.collections.Equivalence.IDENTITY:Lorg/graalvm/collections/Equivalence;
invokestatic org.graalvm.collections.EconomicMap.create:(Lorg/graalvm/collections/Equivalence;)Lorg/graalvm/collections/EconomicMap;
putfield org.graalvm.compiler.loop.LoopFragmentInside.mergedInitializers:Lorg/graalvm/collections/EconomicMap;
12: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 5
start local 5 13: aload 1
invokeinterface java.util.List.size:()I
iconst_1
if_icmpne 27
14: aload 1
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
astore 6
start local 6 15: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 16
aload 6
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.hasNoUsages:()Z
ifne 16
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
16: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode top org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractEndNode
StackMap stack:
aconst_null
astore 7
aconst_null
astore 8
17: aload 6
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.withNodeSourcePosition:()Lorg/graalvm/compiler/debug/DebugCloseable;
astore 9
start local 9 18: aload 5
new org.graalvm.compiler.nodes.BeginNode
dup
invokespecial org.graalvm.compiler.nodes.BeginNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractBeginNode
astore 4
start local 4 19: aload 6
aload 4
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.replaceAtPredecessor:(Lorg/graalvm/compiler/graph/Node;)V
20: aload 6
invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.safeDelete:()V
21: aload 9
ifnull 56
aload 9
invokeinterface org.graalvm.compiler.debug.DebugCloseable.close:()V
goto 56
end local 4 StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode top org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractEndNode java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugCloseable
StackMap stack: java.lang.Throwable
22: astore 7
aload 9
ifnull 23
aload 9
invokeinterface org.graalvm.compiler.debug.DebugCloseable.close:()V
end local 9 StackMap locals:
StackMap stack:
23: aload 7
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
24: astore 8
aload 7
ifnonnull 25
aload 8
astore 7
goto 26
StackMap locals:
StackMap stack:
25: aload 7
aload 8
if_acmpeq 26
aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
26: aload 7
athrow
end local 6 27: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 28
aload 1
invokeinterface java.util.List.size:()I
iconst_1
if_icmpgt 28
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
28: StackMap locals:
StackMap stack:
aload 5
new org.graalvm.compiler.nodes.MergeNode
dup
invokespecial org.graalvm.compiler.nodes.MergeNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.AbstractMergeNode
astore 6
start local 6 29: aload 6
astore 4
start local 4 30: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 7
start local 7 31: aconst_null
astore 8
start local 8 32: aload 7
ifnull 35
33: aload 7
invokevirtual org.graalvm.compiler.nodes.FrameState.duplicateWithVirtualState:()Lorg/graalvm/compiler/nodes/FrameState;
astore 8
34: aload 6
aload 8
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
35: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState
StackMap stack:
aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 38
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState top java.util.Iterator
StackMap stack:
36: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.EndNode
astore 9
start local 9 37: aload 6
aload 9
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.addForwardEnd:(Lorg/graalvm/compiler/nodes/EndNode;)V
end local 9 38: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 36
39: aload 3
invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.snapshot:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 55
StackMap locals:
StackMap stack:
40: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.PhiNode
astore 9
start local 9 41: aload 9
invokevirtual org.graalvm.compiler.nodes.PhiNode.hasNoUsages:()Z
ifeq 43
42: goto 55
43: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.PhiNode java.util.Iterator
StackMap stack:
aload 9
aload 6
invokevirtual org.graalvm.compiler.nodes.PhiNode.duplicateOn:(Lorg/graalvm/compiler/nodes/AbstractMergeNode;)Lorg/graalvm/compiler/nodes/PhiNode;
astore 11
start local 11 44: aload 6
invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.forwardEnds:()Lorg/graalvm/compiler/graph/NodeInputList;
invokevirtual org.graalvm.compiler.graph.NodeInputList.iterator:()Ljava/util/Iterator;
astore 13
goto 50
StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
45: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.AbstractEndNode
astore 12
start local 12 46: aload 2
aload 12
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.LoopEndNode
astore 14
start local 14 47: aload 0
aload 9
aload 14
invokevirtual org.graalvm.compiler.nodes.PhiNode.valueAt:(Lorg/graalvm/compiler/nodes/AbstractEndNode;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.prim:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 15
start local 15 48: getstatic org.graalvm.compiler.loop.LoopFragmentInside.$assertionsDisabled:Z
ifne 49
aload 15
ifnonnull 49
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
49: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.nodes.AbstractEndNode java.util.Iterator org.graalvm.compiler.nodes.LoopEndNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 11
aload 15
invokevirtual org.graalvm.compiler.nodes.PhiNode.addInput:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 15 end local 14 end local 12 50: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode top java.util.Iterator
StackMap stack:
aload 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 45
51: aload 11
astore 12
start local 12 52: aload 8
ifnull 54
53: aload 8
new org.graalvm.compiler.loop.LoopFragmentInside$5
dup
aload 0
aload 9
aload 11
invokespecial org.graalvm.compiler.loop.LoopFragmentInside$5.<init>:(Lorg/graalvm/compiler/loop/LoopFragmentInside;Lorg/graalvm/compiler/nodes/PhiNode;Lorg/graalvm/compiler/nodes/PhiNode;)V
invokevirtual org.graalvm.compiler.nodes.FrameState.applyToNonVirtual:(Lorg/graalvm/compiler/nodes/VirtualState$NodePositionClosure;)V
54: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.PhiNode java.util.Iterator org.graalvm.compiler.nodes.PhiNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.mergedInitializers:Lorg/graalvm/collections/EconomicMap;
aload 9
aload 12
invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 12 end local 11 end local 9 55: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.FrameState top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 40
end local 8 end local 7 end local 6 56: StackMap locals: org.graalvm.compiler.loop.LoopFragmentInside java.util.List org.graalvm.collections.EconomicMap org.graalvm.compiler.nodes.LoopBeginNode org.graalvm.compiler.nodes.AbstractBeginNode org.graalvm.compiler.nodes.StructuredGraph
StackMap stack:
aload 4
areturn
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 57 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
2 57 1 endsToMerge Ljava/util/List<Lorg/graalvm/compiler/nodes/EndNode;>;
3 57 2 reverseEnds Lorg/graalvm/collections/EconomicMap<Lorg/graalvm/compiler/nodes/AbstractEndNode;Lorg/graalvm/compiler/nodes/LoopEndNode;>;
4 57 3 loopBegin Lorg/graalvm/compiler/nodes/LoopBeginNode;
6 10 4 le Lorg/graalvm/compiler/nodes/LoopEndNode;
7 10 6 duplicate Lorg/graalvm/compiler/nodes/AbstractEndNode;
19 22 4 newExit Lorg/graalvm/compiler/nodes/AbstractBeginNode;
30 57 4 newExit Lorg/graalvm/compiler/nodes/AbstractBeginNode;
13 57 5 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
15 27 6 end Lorg/graalvm/compiler/nodes/AbstractEndNode;
18 23 9 position Lorg/graalvm/compiler/debug/DebugCloseable;
29 56 6 newExitMerge Lorg/graalvm/compiler/nodes/AbstractMergeNode;
31 56 7 state Lorg/graalvm/compiler/nodes/FrameState;
32 56 8 duplicateState Lorg/graalvm/compiler/nodes/FrameState;
37 38 9 end Lorg/graalvm/compiler/nodes/EndNode;
41 55 9 phi Lorg/graalvm/compiler/nodes/PhiNode;
44 55 11 firstPhi Lorg/graalvm/compiler/nodes/PhiNode;
46 50 12 end Lorg/graalvm/compiler/nodes/AbstractEndNode;
47 50 14 loopEnd Lorg/graalvm/compiler/nodes/LoopEndNode;
48 50 15 prim Lorg/graalvm/compiler/nodes/ValueNode;
52 55 12 initializer Lorg/graalvm/compiler/nodes/ValueNode;
Exception table:
from to target type
18 21 22 any
17 24 24 any
public org.graalvm.compiler.loop.LoopFragment original();
descriptor: ()Lorg/graalvm/compiler/loop/LoopFragment;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.original:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
areturn
LocalVariableTable:
Start End Slot Name Signature
public org.graalvm.compiler.loop.LoopFragment duplicate();
descriptor: ()Lorg/graalvm/compiler/loop/LoopFragment;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.graalvm.compiler.loop.LoopFragmentInside.duplicate:()Lorg/graalvm/compiler/loop/LoopFragmentInside;
areturn
LocalVariableTable:
Start End Slot Name Signature
private void lambda$0(org.graalvm.compiler.nodes.StateSplit, org.graalvm.compiler.nodes.VirtualState);
descriptor: (Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/nodes/VirtualState;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 2 0: aload 2
invokevirtual org.graalvm.compiler.nodes.VirtualState.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
aload 0
aload 1
invokedynamic apply(Lorg/graalvm/compiler/loop/LoopFragmentInside;Lorg/graalvm/compiler/nodes/StateSplit;)Lorg/graalvm/compiler/graph/iterators/NodePredicate;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Lorg/graalvm/compiler/graph/Node;)Z
org/graalvm/compiler/loop/LoopFragmentInside.lambda$1(Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/graph/Node;)Z (7)
(Lorg/graalvm/compiler/graph/Node;)Z
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Lorg/graalvm/compiler/graph/iterators/NodePredicate;)Lorg/graalvm/compiler/graph/iterators/FilteredNodeIterable;
invokevirtual org.graalvm.compiler.graph.iterators.FilteredNodeIterable.isEmpty:()Z
ifeq 2
1: aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
aload 2
invokevirtual org.graalvm.compiler.graph.NodeBitMap.clear:(Lorg/graalvm/compiler/graph/Node;)V
2: StackMap locals:
StackMap stack:
return
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 3 2 v Lorg/graalvm/compiler/nodes/VirtualState;
private static void lambda$2(org.graalvm.compiler.graph.NodeBitMap, org.graalvm.compiler.nodes.VirtualState);
descriptor: (Lorg/graalvm/compiler/graph/NodeBitMap;Lorg/graalvm/compiler/nodes/VirtualState;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 1 0: aload 0
aload 1
invokevirtual org.graalvm.compiler.graph.NodeBitMap.markAndGrow:(Lorg/graalvm/compiler/graph/Node;)V
return
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 1 1 v Lorg/graalvm/compiler/nodes/VirtualState;
private boolean lambda$1(org.graalvm.compiler.nodes.StateSplit, org.graalvm.compiler.graph.Node);
descriptor: (Lorg/graalvm/compiler/nodes/StateSplit;Lorg/graalvm/compiler/graph/Node;)Z
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 2 0: aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
aload 2
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isNew:(Lorg/graalvm/compiler/graph/Node;)Z
ifne 1
aload 0
getfield org.graalvm.compiler.loop.LoopFragmentInside.nodes:Lorg/graalvm/compiler/graph/NodeBitMap;
aload 2
invokevirtual org.graalvm.compiler.graph.NodeBitMap.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
ifeq 1
aload 2
aload 1
if_acmpeq 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/loop/LoopFragmentInside;
0 3 2 n Lorg/graalvm/compiler/graph/Node;
}
SourceFile: "LoopFragmentInside.java"
NestMembers:
org.graalvm.compiler.loop.LoopFragmentInside$1 org.graalvm.compiler.loop.LoopFragmentInside$2 org.graalvm.compiler.loop.LoopFragmentInside$3 org.graalvm.compiler.loop.LoopFragmentInside$4 org.graalvm.compiler.loop.LoopFragmentInside$5
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract DuplicationReplacement = org.graalvm.compiler.graph.Graph$DuplicationReplacement of org.graalvm.compiler.graph.Graph
public final Direction = org.graalvm.compiler.loop.InductionVariable$Direction of org.graalvm.compiler.loop.InductionVariable
org.graalvm.compiler.loop.LoopFragmentInside$1
org.graalvm.compiler.loop.LoopFragmentInside$2
org.graalvm.compiler.loop.LoopFragmentInside$3
org.graalvm.compiler.loop.LoopFragmentInside$4
org.graalvm.compiler.loop.LoopFragmentInside$5
public abstract NodePositionClosure = org.graalvm.compiler.nodes.VirtualState$NodePositionClosure of org.graalvm.compiler.nodes.VirtualState
public abstract VirtualClosure = org.graalvm.compiler.nodes.VirtualState$VirtualClosure of org.graalvm.compiler.nodes.VirtualState