public class org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase extends org.graalvm.compiler.phases.Phase
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase
super_class: org.graalvm.compiler.phases.Phase
{
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/hotspot/phases/OnStackReplacementPhase;
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.hotspot.phases.OnStackReplacementPhase.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.graalvm.compiler.phases.Phase.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/hotspot/phases/OnStackReplacementPhase;
protected void run(org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=12, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getEntryBCI:()I
iconst_m1
if_icmpne 3
1: getstatic org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase.$assertionsDisabled:Z
ifne 2
aload 1
getstatic org.graalvm.compiler.nodes.EntryMarkerNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:(Lorg/graalvm/compiler/graph/NodeClass;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.isEmpty:()Z
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
return
3: StackMap locals:
StackMap stack:
iconst_2
aload 1
ldc "OnStackReplacement initial"
invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;)V
4: iconst_m1
istore 3
start local 3 5: iconst_0
istore 4
start local 4 6: StackMap locals: org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase org.graalvm.compiler.nodes.StructuredGraph top int int
StackMap stack:
aload 1
invokestatic org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase.getEntryMarker:(Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/EntryMarkerNode;
astore 2
start local 2 7: new org.graalvm.compiler.loop.LoopsData
dup
aload 1
invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
astore 5
start local 5 8: aload 5
invokevirtual org.graalvm.compiler.loop.LoopsData.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getNodeToBlock:()Lorg/graalvm/compiler/graph/NodeMap;
aload 2
invokevirtual org.graalvm.compiler.graph.NodeMap.get:(Lorg/graalvm/compiler/graph/Node;)Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.cfg.Block
invokevirtual org.graalvm.compiler.nodes.cfg.Block.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 6
start local 6 9: aload 6
ifnonnull 11
10: goto 29
11: StackMap locals: org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.EntryMarkerNode int int org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.core.common.cfg.Loop
StackMap stack:
iinc 4 1
12: iload 3
iconst_m1
if_icmpne 15
13: aload 6
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
istore 3
14: goto 18
StackMap locals:
StackMap stack:
15: iload 4
iload 3
if_icmple 18
16: invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:()Ljava/lang/RuntimeException;
athrow
17: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
astore 6
18: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getParent:()Lorg/graalvm/compiler/core/common/cfg/Loop;
ifnonnull 17
19: aload 5
aload 6
invokevirtual org.graalvm.compiler.loop.LoopsData.loop:(Lorg/graalvm/compiler/core/common/cfg/Loop;)Lorg/graalvm/compiler/loop/LoopEx;
invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.peel:(Lorg/graalvm/compiler/loop/LoopEx;)V
20: aload 2
getstatic org.graalvm.compiler.nodeinfo.InputType.Guard:Lorg/graalvm/compiler/nodeinfo/InputType;
aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.FixedNode
invokestatic org.graalvm.compiler.nodes.AbstractBeginNode.prevBegin:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/AbstractBeginNode;
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.replaceAtUsages:(Lorg/graalvm/compiler/nodeinfo/InputType;Lorg/graalvm/compiler/graph/Node;)V
21: aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.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 8
goto 25
StackMap locals: org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.EntryMarkerNode int int org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.core.common.cfg.Loop top java.util.Iterator
StackMap stack:
22: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.graph.Node
astore 7
start local 7 23: aload 7
checkcast org.graalvm.compiler.nodes.EntryProxyNode
astore 9
start local 9 24: aload 9
aload 9
invokevirtual org.graalvm.compiler.nodes.EntryProxyNode.value:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.EntryProxyNode.replaceAndDelete:(Lorg/graalvm/compiler/graph/Node;)V
end local 9 end local 7 25: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
26: aload 2
invokestatic org.graalvm.compiler.nodes.util.GraphUtil.removeFixedWithUnusedInputs:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
27: iconst_2
aload 1
ldc "OnStackReplacement loop peeling result"
invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;)V
end local 6 end local 5 28: goto 6
29: StackMap locals: org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.EntryMarkerNode int int
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
astore 5
start local 5 30: aload 2
aconst_null
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
31: aload 1
new org.graalvm.compiler.nodes.extended.OSRStartNode
dup
invokespecial org.graalvm.compiler.nodes.extended.OSRStartNode.<init>:()V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.extended.OSRStartNode
astore 6
start local 6 32: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.start:()Lorg/graalvm/compiler/nodes/StartNode;
astore 7
start local 7 33: aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
astore 8
start local 8 34: aload 2
aconst_null
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
35: aload 6
aload 8
invokevirtual org.graalvm.compiler.nodes.extended.OSRStartNode.setNext:(Lorg/graalvm/compiler/nodes/FixedNode;)V
36: aload 1
aload 6
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.setStart:(Lorg/graalvm/compiler/nodes/StartNode;)V
37: aload 6
aload 5
invokevirtual org.graalvm.compiler.nodes.extended.OSRStartNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
38: iconst_0
istore 9
start local 9 39: goto 47
40: StackMap locals: org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.EntryMarkerNode int int org.graalvm.compiler.nodes.FrameState org.graalvm.compiler.nodes.extended.OSRStartNode org.graalvm.compiler.nodes.StartNode org.graalvm.compiler.nodes.FixedNode int
StackMap stack:
aload 5
iload 9
invokevirtual org.graalvm.compiler.nodes.FrameState.localAt:(I)Lorg/graalvm/compiler/nodes/ValueNode;
astore 10
start local 10 41: aload 10
instanceof org.graalvm.compiler.nodes.EntryProxyNode
ifeq 45
42: aload 10
checkcast org.graalvm.compiler.nodes.EntryProxyNode
astore 11
start local 11 43: aload 11
aload 1
new org.graalvm.compiler.nodes.extended.OSRLocalNode
dup
iload 9
aload 11
invokevirtual org.graalvm.compiler.nodes.EntryProxyNode.stamp:()Lorg/graalvm/compiler/core/common/type/Stamp;
invokevirtual org.graalvm.compiler.core.common.type.Stamp.unrestricted:()Lorg/graalvm/compiler/core/common/type/Stamp;
invokespecial org.graalvm.compiler.nodes.extended.OSRLocalNode.<init>:(ILorg/graalvm/compiler/core/common/type/Stamp;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.nodes.EntryProxyNode.replaceAndDelete:(Lorg/graalvm/compiler/graph/Node;)V
end local 11 44: goto 46
45: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
getstatic org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase.$assertionsDisabled:Z
ifne 46
aload 10
ifnull 46
aload 10
instanceof org.graalvm.compiler.nodes.extended.OSRLocalNode
ifne 46
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 10 46: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
47: iload 9
aload 5
invokevirtual org.graalvm.compiler.nodes.FrameState.localsSize:()I
if_icmplt 40
end local 9 48: aload 2
getstatic org.graalvm.compiler.nodeinfo.InputType.Guard:Lorg/graalvm/compiler/nodeinfo/InputType;
aload 6
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.replaceAtUsages:(Lorg/graalvm/compiler/nodeinfo/InputType;Lorg/graalvm/compiler/graph/Node;)V
49: getstatic org.graalvm.compiler.hotspot.phases.OnStackReplacementPhase.$assertionsDisabled:Z
ifne 50
aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.usages:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.isEmpty:()Z
ifne 50
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
50: StackMap locals:
StackMap stack:
aload 7
invokestatic org.graalvm.compiler.nodes.util.GraphUtil.killCFG:(Lorg/graalvm/compiler/nodes/FixedNode;)V
51: iconst_2
aload 1
ldc "OnStackReplacement result"
invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;)V
52: new org.graalvm.compiler.phases.common.DeadCodeEliminationPhase
dup
getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality.Required:Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;
invokespecial org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.<init>:(Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;)V
aload 1
invokevirtual org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
53: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Lorg/graalvm/compiler/hotspot/phases/OnStackReplacementPhase;
0 54 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
7 54 2 osr Lorg/graalvm/compiler/nodes/EntryMarkerNode;
5 54 3 maxIterations I
6 54 4 iterations I
8 28 5 loops Lorg/graalvm/compiler/loop/LoopsData;
9 28 6 l Lorg/graalvm/compiler/core/common/cfg/Loop<Lorg/graalvm/compiler/nodes/cfg/Block;>;
23 25 7 usage Lorg/graalvm/compiler/graph/Node;
24 25 9 proxy Lorg/graalvm/compiler/nodes/EntryProxyNode;
30 54 5 osrState Lorg/graalvm/compiler/nodes/FrameState;
32 54 6 osrStart Lorg/graalvm/compiler/nodes/extended/OSRStartNode;
33 54 7 start Lorg/graalvm/compiler/nodes/StartNode;
34 54 8 next Lorg/graalvm/compiler/nodes/FixedNode;
39 48 9 i I
41 46 10 value Lorg/graalvm/compiler/nodes/ValueNode;
43 44 11 proxy Lorg/graalvm/compiler/nodes/EntryProxyNode;
MethodParameters:
Name Flags
graph
private static org.graalvm.compiler.nodes.EntryMarkerNode getEntryMarker(org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/EntryMarkerNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=3, args_size=1
start local 0 0: aload 0
getstatic org.graalvm.compiler.nodes.EntryMarkerNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:(Lorg/graalvm/compiler/graph/NodeClass;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
astore 1
start local 1 1: aload 1
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.first:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.EntryMarkerNode
astore 2
start local 2 2: aload 2
ifnonnull 4
3: new org.graalvm.compiler.common.PermanentBailoutException
dup
ldc "No OnStackReplacementNode generated"
invokespecial org.graalvm.compiler.common.PermanentBailoutException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: org.graalvm.compiler.graph.iterators.NodeIterable org.graalvm.compiler.nodes.EntryMarkerNode
StackMap stack:
aload 1
invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
iconst_1
if_icmple 6
5: new org.graalvm.compiler.debug.GraalError
dup
ldc "Multiple OnStackReplacementNodes generated"
invokespecial org.graalvm.compiler.debug.GraalError.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
invokevirtual org.graalvm.compiler.nodes.FrameState.locksSize:()I
ifeq 8
7: new org.graalvm.compiler.common.PermanentBailoutException
dup
ldc "OSR with locks not supported"
invokespecial org.graalvm.compiler.common.PermanentBailoutException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
invokevirtual org.graalvm.compiler.nodes.FrameState.stackSize:()I
ifeq 10
9: new org.graalvm.compiler.common.PermanentBailoutException
dup
ldc "OSR with stack entries not supported: %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 2
invokevirtual org.graalvm.compiler.nodes.EntryMarkerNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
getstatic org.graalvm.compiler.nodeinfo.Verbosity.Debugger:Lorg/graalvm/compiler/nodeinfo/Verbosity;
invokevirtual org.graalvm.compiler.nodes.FrameState.toString:(Lorg/graalvm/compiler/nodeinfo/Verbosity;)Ljava/lang/String;
aastore
invokespecial org.graalvm.compiler.common.PermanentBailoutException.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
1 11 1 osrNodes Lorg/graalvm/compiler/graph/iterators/NodeIterable<Lorg/graalvm/compiler/nodes/EntryMarkerNode;>;
2 11 2 osr Lorg/graalvm/compiler/nodes/EntryMarkerNode;
MethodParameters:
Name Flags
graph
public float codeSizeIncrease();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc 5.0
freturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/hotspot/phases/OnStackReplacementPhase;
}
SourceFile: "OnStackReplacementPhase.java"
InnerClasses:
public final Optionality = org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality of org.graalvm.compiler.phases.common.DeadCodeEliminationPhase