public class org.graalvm.compiler.phases.common.OptimizeDivPhase extends org.graalvm.compiler.phases.Phase
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.phases.common.OptimizeDivPhase
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/phases/common/OptimizeDivPhase;
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.phases.common.OptimizeDivPhase.$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/phases/common/OptimizeDivPhase;
protected void run(org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 1
getstatic org.graalvm.compiler.nodes.calc.IntegerDivRemNode.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.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: org.graalvm.compiler.phases.common.OptimizeDivPhase org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.calc.IntegerDivRemNode
astore 2
start local 2 2: aload 2
instanceof org.graalvm.compiler.nodes.calc.SignedRemNode
ifeq 4
aload 2
invokestatic org.graalvm.compiler.phases.common.OptimizeDivPhase.divByNonZeroConstant:(Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)Z
ifeq 4
3: aload 0
aload 2
invokevirtual org.graalvm.compiler.phases.common.OptimizeDivPhase.optimizeRem:(Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)V
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: aload 1
getstatic org.graalvm.compiler.nodes.calc.IntegerDivRemNode.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.iterator:()Ljava/util/Iterator;
astore 3
goto 9
StackMap locals:
StackMap stack:
6: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.calc.IntegerDivRemNode
astore 2
start local 2 7: aload 2
instanceof org.graalvm.compiler.nodes.calc.SignedDivNode
ifeq 9
aload 2
invokestatic org.graalvm.compiler.phases.common.OptimizeDivPhase.divByNonZeroConstant:(Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)Z
ifeq 9
8: aload 2
checkcast org.graalvm.compiler.nodes.calc.SignedDivNode
invokestatic org.graalvm.compiler.phases.common.OptimizeDivPhase.optimizeSignedDiv:(Lorg/graalvm/compiler/nodes/calc/SignedDivNode;)V
end local 2 9: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/phases/common/OptimizeDivPhase;
0 11 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
2 4 2 rem Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
7 9 2 div Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
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/phases/common/OptimizeDivPhase;
protected static boolean divByNonZeroConstant(org.graalvm.compiler.nodes.calc.IntegerDivRemNode);
descriptor: (Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)Z
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lconst_0
lcmp
ifeq 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 divRemNode Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
MethodParameters:
Name Flags
divRemNode
protected final void optimizeRem(org.graalvm.compiler.nodes.calc.IntegerDivRemNode);
descriptor: (Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)V
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.phases.common.OptimizeDivPhase.$assertionsDisabled:Z
ifne 1
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getOp:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Op;
getstatic org.graalvm.compiler.nodes.calc.IntegerDivRemNode$Op.REM:Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Op;
if_acmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 2
start local 2 2: aload 0
aload 1
invokevirtual org.graalvm.compiler.phases.common.OptimizeDivPhase.findDivForRem:(Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 3
start local 3 3: aload 2
aload 3
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.mul:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 4
start local 4 4: aload 2
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 4
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.sub:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 5
start local 5 5: aload 2
aload 1
aload 5
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.replaceFixedWithFloating:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
6: 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 7 0 this Lorg/graalvm/compiler/phases/common/OptimizeDivPhase;
0 7 1 rem Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
2 7 2 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 7 3 div Lorg/graalvm/compiler/nodes/ValueNode;
4 7 4 mul Lorg/graalvm/compiler/nodes/ValueNode;
5 7 5 result Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
rem
private org.graalvm.compiler.nodes.ValueNode findDivForRem(org.graalvm.compiler.nodes.calc.IntegerDivRemNode);
descriptor: (Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
instanceof org.graalvm.compiler.nodes.calc.IntegerDivRemNode
ifeq 4
1: aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.next:()Lorg/graalvm/compiler/nodes/FixedNode;
checkcast org.graalvm.compiler.nodes.calc.IntegerDivRemNode
astore 2
start local 2 2: aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getOp:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Op;
getstatic org.graalvm.compiler.nodes.calc.IntegerDivRemNode$Op.DIV:Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Op;
if_acmpne 4
aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getType:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Type;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getType:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Type;
if_acmpne 4
aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
if_acmpne 4
aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
if_acmpne 4
3: aload 2
areturn
end local 2 4: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
instanceof org.graalvm.compiler.nodes.calc.IntegerDivRemNode
ifeq 8
5: aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.calc.IntegerDivRemNode
astore 2
start local 2 6: aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getOp:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Op;
getstatic org.graalvm.compiler.nodes.calc.IntegerDivRemNode$Op.DIV:Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Op;
if_acmpne 8
aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getType:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Type;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getType:()Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode$Type;
if_acmpne 8
aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
if_acmpne 8
aload 2
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
if_acmpne 8
7: aload 2
areturn
end local 2 8: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 0
aload 1
invokevirtual org.graalvm.compiler.phases.common.OptimizeDivPhase.createDiv:(Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)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
astore 2
start local 2 9: aload 2
instanceof org.graalvm.compiler.nodes.FixedNode
ifeq 11
10: aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 1
aload 2
checkcast org.graalvm.compiler.nodes.FixedNode
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addAfterFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;Lorg/graalvm/compiler/nodes/FixedNode;)V
11: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/graalvm/compiler/phases/common/OptimizeDivPhase;
0 12 1 rem Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
2 4 2 div Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
6 8 2 div Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
9 12 2 div Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
rem
protected org.graalvm.compiler.nodes.ValueNode createDiv(org.graalvm.compiler.nodes.calc.IntegerDivRemNode);
descriptor: (Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.phases.common.OptimizeDivPhase.$assertionsDisabled:Z
ifne 1
aload 1
instanceof org.graalvm.compiler.nodes.calc.SignedRemNode
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.calc.IntegerDivRemNode.getZeroCheck:()Lorg/graalvm/compiler/nodes/extended/GuardingNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.SignedDivNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/phases/common/OptimizeDivPhase;
0 2 1 rem Lorg/graalvm/compiler/nodes/calc/IntegerDivRemNode;
MethodParameters:
Name Flags
rem
protected static void optimizeSignedDiv(org.graalvm.compiler.nodes.calc.SignedDivNode);
descriptor: (Lorg/graalvm/compiler/nodes/calc/SignedDivNode;)V
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=6, locals=14, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.SignedDivNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 1
start local 1 1: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.SignedDivNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
lstore 2
start local 2 2: getstatic org.graalvm.compiler.phases.common.OptimizeDivPhase.$assertionsDisabled:Z
ifne 4
lload 2
lconst_1
lcmp
ifeq 3
lload 2
ldc -1
lcmp
ifeq 3
lload 2
lconst_0
lcmp
ifne 4
StackMap locals: org.graalvm.compiler.nodes.ValueNode long
StackMap stack:
3: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
checkcast org.graalvm.compiler.core.common.type.IntegerStamp
astore 4
start local 4 5: aload 4
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.getBits:()I
istore 5
start local 5 6: lload 2
iload 5
invokestatic org.graalvm.compiler.phases.common.OptimizeDivPhase.magicDivideConstants:(JI)Ljdk/internal/vm/compiler/collections/Pair;
astore 6
start local 6 7: aload 6
invokevirtual jdk.internal.vm.compiler.collections.Pair.getLeft:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lstore 7
start local 7 8: aload 6
invokevirtual jdk.internal.vm.compiler.collections.Pair.getRight:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 9
start local 9 9: getstatic org.graalvm.compiler.phases.common.OptimizeDivPhase.$assertionsDisabled:Z
ifne 10
iload 9
ifge 10
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
10: StackMap locals: org.graalvm.compiler.nodes.calc.SignedDivNode org.graalvm.compiler.nodes.ValueNode long org.graalvm.compiler.core.common.type.IntegerStamp int jdk.internal.vm.compiler.collections.Pair long int
StackMap stack:
lload 7
invokestatic org.graalvm.compiler.nodes.ConstantNode.forLong:(J)Lorg/graalvm/compiler/nodes/ConstantNode;
astore 10
start local 10 11: iload 5
bipush 32
if_icmpne 26
12: new org.graalvm.compiler.nodes.calc.MulNode
dup
new org.graalvm.compiler.nodes.calc.SignExtendNode
dup
aload 1
bipush 64
invokespecial org.graalvm.compiler.nodes.calc.SignExtendNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;I)V
aload 10
invokespecial org.graalvm.compiler.nodes.calc.MulNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 11
start local 11 13: lload 2
lconst_0
lcmp
ifle 14
lload 7
lconst_0
lcmp
iflt 15
StackMap locals: org.graalvm.compiler.nodes.ConstantNode org.graalvm.compiler.nodes.ValueNode
StackMap stack:
14: lload 2
lconst_0
lcmp
ifge 23
lload 7
lconst_0
lcmp
ifle 23
15: StackMap locals:
StackMap stack:
new org.graalvm.compiler.nodes.calc.RightShiftNode
dup
aload 11
bipush 32
invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(I)Lorg/graalvm/compiler/nodes/ConstantNode;
invokespecial org.graalvm.compiler.nodes.calc.RightShiftNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
bipush 32
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.NarrowNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;ILorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
16: lload 2
lconst_0
lcmp
ifle 19
17: aload 11
aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
18: goto 20
19: StackMap locals:
StackMap stack:
aload 11
aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.sub:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
20: StackMap locals:
StackMap stack:
iload 9
ifle 35
21: new org.graalvm.compiler.nodes.calc.RightShiftNode
dup
aload 11
iload 9
invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(I)Lorg/graalvm/compiler/nodes/ConstantNode;
invokespecial org.graalvm.compiler.nodes.calc.RightShiftNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 11
22: goto 35
23: StackMap locals:
StackMap stack:
new org.graalvm.compiler.nodes.calc.RightShiftNode
dup
aload 11
bipush 32
iload 9
iadd
invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(I)Lorg/graalvm/compiler/nodes/ConstantNode;
invokespecial org.graalvm.compiler.nodes.calc.RightShiftNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 11
24: new org.graalvm.compiler.nodes.calc.NarrowNode
dup
aload 11
bipush 32
invokespecial org.graalvm.compiler.nodes.calc.NarrowNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;I)V
astore 11
25: goto 35
end local 11 26: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.phases.common.OptimizeDivPhase.$assertionsDisabled:Z
ifne 27
iload 5
bipush 64
if_icmpeq 27
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
27: StackMap locals:
StackMap stack:
new org.graalvm.compiler.nodes.calc.IntegerMulHighNode
dup
aload 1
aload 10
invokespecial org.graalvm.compiler.nodes.calc.IntegerMulHighNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 11
start local 11 28: lload 2
lconst_0
lcmp
ifle 31
lload 7
lconst_0
lcmp
ifge 31
29: aload 11
aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
30: goto 33
StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
31: lload 2
lconst_0
lcmp
ifge 33
lload 7
lconst_0
lcmp
ifle 33
32: aload 11
aload 1
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.sub:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
33: StackMap locals:
StackMap stack:
iload 9
ifle 35
34: new org.graalvm.compiler.nodes.calc.RightShiftNode
dup
aload 11
iload 9
invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(I)Lorg/graalvm/compiler/nodes/ConstantNode;
invokespecial org.graalvm.compiler.nodes.calc.RightShiftNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
astore 11
35: StackMap locals:
StackMap stack:
lload 2
lconst_0
lcmp
ifge 40
36: iload 5
iconst_1
isub
invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(I)Lorg/graalvm/compiler/nodes/ConstantNode;
astore 12
start local 12 37: aload 11
aload 12
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.UnsignedRightShiftNode.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 38: aload 11
aload 13
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
end local 13 end local 12 39: goto 44
StackMap locals:
StackMap stack:
40: aload 4
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.canBeNegative:()Z
ifeq 44
41: iload 5
iconst_1
isub
invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(I)Lorg/graalvm/compiler/nodes/ConstantNode;
astore 12
start local 12 42: aload 1
aload 12
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.UnsignedRightShiftNode.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 43: aload 11
aload 13
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.BinaryArithmeticNode.add:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
astore 11
end local 13 end local 12 44: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.nodes.calc.SignedDivNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 12
start local 12 45: aload 12
aload 0
aload 12
aload 11
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addOrUniqueWithInputs:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.replaceFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;Lorg/graalvm/compiler/graph/Node;)V
46: return
end local 12 end local 11 end local 10 end local 9 end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 47 0 div Lorg/graalvm/compiler/nodes/calc/SignedDivNode;
1 47 1 forX Lorg/graalvm/compiler/nodes/ValueNode;
2 47 2 c J
5 47 4 dividendStamp Lorg/graalvm/compiler/core/common/type/IntegerStamp;
6 47 5 bitSize I
7 47 6 nums Ljdk/internal/vm/compiler/collections/Pair<Ljava/lang/Long;Ljava/lang/Integer;>;
8 47 7 magicNum J
9 47 9 shiftNum I
11 47 10 m Lorg/graalvm/compiler/nodes/ConstantNode;
13 26 11 value Lorg/graalvm/compiler/nodes/ValueNode;
28 47 11 value Lorg/graalvm/compiler/nodes/ValueNode;
37 39 12 s Lorg/graalvm/compiler/nodes/ConstantNode;
38 39 13 sign Lorg/graalvm/compiler/nodes/ValueNode;
42 44 12 s Lorg/graalvm/compiler/nodes/ConstantNode;
43 44 13 sign Lorg/graalvm/compiler/nodes/ValueNode;
45 47 12 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
MethodParameters:
Name Flags
div
private static jdk.internal.vm.compiler.collections.Pair<java.lang.Long, java.lang.Integer> magicDivideConstants(long, int);
descriptor: (JI)Ljdk/internal/vm/compiler/collections/Pair;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=24, args_size=2
start local 0 start local 2 0: lconst_1
iload 2
iconst_1
isub
lshl
lstore 3
start local 3 1: lload 3
lload 0
bipush 63
lushr
ladd
lstore 5
start local 5 2: lload 0
invokestatic java.lang.Math.abs:(J)J
lstore 7
start local 7 3: lload 5
lconst_1
lsub
lload 5
lload 7
invokestatic java.lang.Long.remainderUnsigned:(JJ)J
lsub
lstore 9
start local 9 4: lload 3
lload 9
invokestatic java.lang.Long.divideUnsigned:(JJ)J
lstore 11
start local 11 5: lload 3
lload 9
invokestatic java.lang.Long.remainderUnsigned:(JJ)J
lstore 13
start local 13 6: lload 3
lload 7
invokestatic java.lang.Long.divideUnsigned:(JJ)J
lstore 15
start local 15 7: lload 3
lload 7
invokestatic java.lang.Long.remainderUnsigned:(JJ)J
lstore 17
start local 17 8: iload 2
iconst_1
isub
istore 21
start local 21 9: StackMap locals: long int long long long long long long long long top top int
StackMap stack:
iinc 21 1
10: lload 11
ldc 2
lmul
lstore 11
11: lload 13
ldc 2
lmul
lstore 13
12: lload 13
lload 9
invokestatic java.lang.Long.compareUnsigned:(JJ)I
iflt 15
13: lload 11
lconst_1
ladd
lstore 11
14: lload 13
lload 9
lsub
lstore 13
15: StackMap locals:
StackMap stack:
lload 15
ldc 2
lmul
lstore 15
16: lload 17
ldc 2
lmul
lstore 17
17: lload 17
lload 7
invokestatic java.lang.Long.compareUnsigned:(JJ)I
iflt 20
18: lload 15
lconst_1
ladd
lstore 15
19: lload 17
lload 7
lsub
lstore 17
20: StackMap locals:
StackMap stack:
lload 7
lload 17
lsub
lstore 19
start local 19 21: lload 11
lload 19
invokestatic java.lang.Long.compareUnsigned:(JJ)I
iflt 9
lload 11
lload 19
lcmp
ifne 22
lload 13
lconst_0
lcmp
ifeq 9
22: StackMap locals: long int long long long long long long long long long int
StackMap stack:
lload 15
lconst_1
ladd
iload 2
invokestatic jdk.vm.ci.code.CodeUtil.signExtend:(JI)J
lstore 22
start local 22 23: lload 0
lconst_0
lcmp
ifge 25
24: lload 22
lneg
lstore 22
25: StackMap locals: long
StackMap stack:
lload 22
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
iload 21
iload 2
isub
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic jdk.internal.vm.compiler.collections.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Ljdk/internal/vm/compiler/collections/Pair;
areturn
end local 22 end local 21 end local 19 end local 17 end local 15 end local 13 end local 11 end local 9 end local 7 end local 5 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 divisor J
0 26 2 size I
1 26 3 twoW J
2 26 5 t J
3 26 7 ad J
4 26 9 anc J
5 26 11 q1 J
6 26 13 r1 J
7 26 15 q2 J
8 26 17 r2 J
21 26 19 delta J
9 26 21 p I
23 26 22 magic J
Signature: (JI)Ljdk/internal/vm/compiler/collections/Pair<Ljava/lang/Long;Ljava/lang/Integer;>;
MethodParameters:
Name Flags
divisor
size
}
SourceFile: "OptimizeDivPhase.java"
InnerClasses:
public final Op = org.graalvm.compiler.nodes.calc.IntegerDivRemNode$Op of org.graalvm.compiler.nodes.calc.IntegerDivRemNode
public final Type = org.graalvm.compiler.nodes.calc.IntegerDivRemNode$Type of org.graalvm.compiler.nodes.calc.IntegerDivRemNode