public class org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering extends org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering
super_class: org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering
{
private static final int ADDRESS_BITS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 64
private static final int INT_BITS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 32
private final long heapBase;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final jdk.vm.ci.code.Register heapBaseRegister;
descriptor: Ljdk/vm/ci/code/Register;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config;
descriptor: Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean generatePIC;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(org.graalvm.compiler.hotspot.GraalHotSpotVMConfig, jdk.vm.ci.code.Register, org.graalvm.compiler.options.OptionValues);
descriptor: (Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Ljdk/vm/ci/code/Register;Lorg/graalvm/compiler/options/OptionValues;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering.<init>:()V
1: aload 0
aload 1
invokevirtual org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.getOopEncoding:()Lorg/graalvm/compiler/core/common/CompressEncoding;
invokevirtual org.graalvm.compiler.core.common.CompressEncoding.getBase:()J
putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBase:J
2: aload 0
aload 1
putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
3: aload 0
getstatic org.graalvm.compiler.core.common.GraalOptions.GeneratePIC:Lorg/graalvm/compiler/options/OptionKey;
aload 3
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.generatePIC:Z
4: aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBase:J
lconst_0
lcmp
ifne 7
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.generatePIC:Z
ifne 7
5: aload 0
aconst_null
putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
6: goto 8
7: StackMap locals: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering org.graalvm.compiler.hotspot.GraalHotSpotVMConfig jdk.vm.ci.code.Register org.graalvm.compiler.options.OptionValues
StackMap stack:
aload 0
aload 2
putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
8: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
0 9 1 config Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
0 9 2 heapBaseRegister Ljdk/vm/ci/code/Register;
0 9 3 options Lorg/graalvm/compiler/options/OptionValues;
MethodParameters:
Name Flags
config
heapBaseRegister
options
protected final boolean improveUncompression(org.graalvm.compiler.core.amd64.AMD64AddressNode, org.graalvm.compiler.nodes.CompressionNode, org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;Lorg/graalvm/compiler/nodes/CompressionNode;Lorg/graalvm/compiler/nodes/ValueNode;)Z
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=6, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokevirtual org.graalvm.compiler.nodes.CompressionNode.getEncoding:()Lorg/graalvm/compiler/core/common/CompressEncoding;
astore 4
start local 4 1: aload 4
invokevirtual org.graalvm.compiler.core.common.CompressEncoding.getShift:()I
invokestatic org.graalvm.compiler.asm.amd64.AMD64Address$Scale.fromShift:(I)Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;
astore 5
start local 5 2: aload 5
ifnonnull 4
3: iconst_0
ireturn
4: StackMap locals: org.graalvm.compiler.core.common.CompressEncoding org.graalvm.compiler.asm.amd64.AMD64Address$Scale
StackMap stack:
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
ifnull 11
aload 4
invokevirtual org.graalvm.compiler.core.common.CompressEncoding.getBase:()J
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBase:J
lcmp
ifne 11
5: aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.generatePIC:Z
ifeq 6
aload 2
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.CompressionNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
instanceof org.graalvm.compiler.core.common.type.ObjectStamp
ifeq 10
StackMap locals:
StackMap stack:
6: aload 3
ifnonnull 10
7: aload 2
invokevirtual org.graalvm.compiler.nodes.CompressionNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering$HeapBaseNode
dup
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
invokespecial org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering$HeapBaseNode.<init>:(Ljdk/vm/ci/code/Register;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 6
start local 6 8: aload 1
aload 6
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 6 9: goto 23
10: StackMap locals:
StackMap stack:
iconst_0
ireturn
11: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.core.common.CompressEncoding.getBase:()J
lconst_0
lcmp
ifne 12
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.generatePIC:Z
ifeq 22
aload 2
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.CompressionNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
instanceof org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp
ifeq 22
12: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.generatePIC:Z
ifeq 18
13: aload 3
ifnonnull 17
14: aload 2
invokevirtual org.graalvm.compiler.nodes.CompressionNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
new org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode
dup
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
aload 0
getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
getfield org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.MARKID_NARROW_KLASS_BASE_ADDRESS:I
getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
invokespecial org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.<init>:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;ILjdk/vm/ci/meta/JavaKind;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
astore 6
start local 6 15: aload 1
aload 6
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
end local 6 16: goto 23
17: StackMap locals:
StackMap stack:
iconst_0
ireturn
18: StackMap locals:
StackMap stack:
aload 1
aload 4
invokevirtual org.graalvm.compiler.core.common.CompressEncoding.getBase:()J
iconst_0
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.updateDisplacement:(Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;JZ)Z
ifeq 21
19: aload 1
aload 3
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
20: goto 23
21: StackMap locals:
StackMap stack:
iconst_0
ireturn
22: StackMap locals:
StackMap stack:
aload 1
aload 3
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
23: StackMap locals:
StackMap stack:
aload 1
aload 5
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setScale:(Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;)V
24: aload 1
aload 2
invokevirtual org.graalvm.compiler.nodes.CompressionNode.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setIndex:(Lorg/graalvm/compiler/nodes/ValueNode;)V
25: iconst_1
ireturn
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 26 0 this Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
0 26 1 addr Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;
0 26 2 compression Lorg/graalvm/compiler/nodes/CompressionNode;
0 26 3 other Lorg/graalvm/compiler/nodes/ValueNode;
1 26 4 encoding Lorg/graalvm/compiler/core/common/CompressEncoding;
2 26 5 scale Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;
8 9 6 base Lorg/graalvm/compiler/nodes/ValueNode;
15 16 6 base Lorg/graalvm/compiler/nodes/ValueNode;
MethodParameters:
Name Flags
addr
compression
other
public void preProcess(org.graalvm.compiler.nodes.StructuredGraph);
descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasLoops:()Z
ifeq 10
1: new org.graalvm.compiler.loop.LoopsData
dup
aload 1
invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
astore 2
start local 2 2: aload 2
invokevirtual org.graalvm.compiler.loop.LoopsData.detectedCountedLoops:()V
3: aload 2
invokevirtual org.graalvm.compiler.loop.LoopsData.countedLoops:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 9
StackMap locals: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopsData top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.LoopEx
astore 3
start local 3 5: aload 3
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/memory/address/OffsetAddressNode;
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 6
goto 8
StackMap locals: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.loop.LoopEx java.util.Iterator top java.util.Iterator
StackMap stack:
6: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
astore 5
start local 5 7: aload 5
aload 3
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.tryOptimize:(Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;Lorg/graalvm/compiler/loop/LoopEx;)V
end local 5 8: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 3 9: StackMap locals: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.loop.LoopsData top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 2 10: StackMap locals: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering org.graalvm.compiler.nodes.StructuredGraph
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
0 11 1 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
2 10 2 loopsData Lorg/graalvm/compiler/loop/LoopsData;
5 9 3 loop Lorg/graalvm/compiler/loop/LoopEx;
7 8 5 offsetAdressNode Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;
MethodParameters:
Name Flags
graph
public void postProcess(org.graalvm.compiler.nodes.memory.address.AddressNode);
descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
checkcast org.graalvm.compiler.core.amd64.AMD64AddressNode
astore 2
start local 2 1: aload 2
aload 2
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.tryImplicitZeroExtend:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
2: aload 2
aload 2
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getIndex:()Lorg/graalvm/compiler/nodes/ValueNode;
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.tryImplicitZeroExtend:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setIndex:(Lorg/graalvm/compiler/nodes/ValueNode;)V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
0 4 1 lowered Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
1 4 2 address Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;
MethodParameters:
Name Flags
lowered
private static void tryOptimize(org.graalvm.compiler.nodes.memory.address.OffsetAddressNode, org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.getInductionVariables:()Ljdk/internal/vm/compiler/collections/EconomicMap;
astore 2
start local 2 1: aload 2
aload 0
invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getOffset:()Lorg/graalvm/compiler/nodes/ValueNode;
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.InductionVariable
astore 3
start local 3 2: goto 20
3: StackMap locals: jdk.internal.vm.compiler.collections.EconomicMap org.graalvm.compiler.loop.InductionVariable
StackMap stack:
aload 3
instanceof org.graalvm.compiler.loop.DerivedInductionVariable
ifne 5
4: goto 21
5: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.loop.InductionVariable.valueNode:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 4
start local 4 6: aload 4
invokevirtual org.graalvm.compiler.nodes.ValueNode.isDeleted:()Z
ifeq 8
7: goto 21
8: StackMap locals: org.graalvm.compiler.nodes.ValueNode
StackMap stack:
aload 4
instanceof org.graalvm.compiler.nodes.calc.ZeroExtendNode
ifeq 19
9: aload 4
checkcast org.graalvm.compiler.nodes.calc.ZeroExtendNode
astore 5
start local 5 10: aload 5
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.applicableToImplicitZeroExtend:(Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;)Z
ifeq 19
11: aload 5
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
astore 6
start local 6 12: aload 6
instanceof org.graalvm.compiler.nodes.calc.AddNode
ifeq 19
13: aload 6
checkcast org.graalvm.compiler.nodes.calc.AddNode
astore 7
start local 7 14: aload 7
invokevirtual org.graalvm.compiler.nodes.calc.AddNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 17
15: aload 5
aload 7
invokevirtual org.graalvm.compiler.nodes.calc.AddNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
checkcast org.graalvm.compiler.nodes.ConstantNode
aload 7
invokevirtual org.graalvm.compiler.nodes.calc.AddNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.optimizeAdd:(Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;Lorg/graalvm/compiler/nodes/ConstantNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/loop/LoopEx;)V
16: goto 19
StackMap locals: org.graalvm.compiler.nodes.calc.ZeroExtendNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.calc.AddNode
StackMap stack:
17: aload 7
invokevirtual org.graalvm.compiler.nodes.calc.AddNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
ifeq 19
18: aload 5
aload 7
invokevirtual org.graalvm.compiler.nodes.calc.AddNode.getY:()Lorg/graalvm/compiler/nodes/ValueNode;
checkcast org.graalvm.compiler.nodes.ConstantNode
aload 7
invokevirtual org.graalvm.compiler.nodes.calc.AddNode.getX:()Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.optimizeAdd:(Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;Lorg/graalvm/compiler/nodes/ConstantNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/loop/LoopEx;)V
end local 7 end local 6 end local 5 19: StackMap locals:
StackMap stack:
aload 3
checkcast org.graalvm.compiler.loop.DerivedInductionVariable
invokevirtual org.graalvm.compiler.loop.DerivedInductionVariable.getBase:()Lorg/graalvm/compiler/loop/InductionVariable;
astore 3
end local 4 20: StackMap locals:
StackMap stack:
aload 3
ifnonnull 3
21: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 offsetAddress Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;
0 22 1 loop Lorg/graalvm/compiler/loop/LoopEx;
1 22 2 ivs Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
2 22 3 currentIV Lorg/graalvm/compiler/loop/InductionVariable;
6 20 4 currentValue Lorg/graalvm/compiler/nodes/ValueNode;
10 19 5 zeroExtendNode Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;
12 19 6 input Lorg/graalvm/compiler/nodes/ValueNode;
14 19 7 add Lorg/graalvm/compiler/nodes/calc/AddNode;
MethodParameters:
Name Flags
offsetAddress
loop
private static void optimizeAdd(org.graalvm.compiler.nodes.calc.ZeroExtendNode, org.graalvm.compiler.nodes.ConstantNode, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;Lorg/graalvm/compiler/nodes/ConstantNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/loop/LoopEx;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 4
start local 4 1: aload 4
new org.graalvm.compiler.nodes.calc.AddNode
dup
aload 2
aload 3
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.signExtend:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/loop/LoopEx;)Lorg/graalvm/compiler/nodes/ValueNode;
aload 1
invokevirtual org.graalvm.compiler.nodes.ConstantNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
i2l
aload 4
invokestatic org.graalvm.compiler.nodes.ConstantNode.forLong:(JLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
invokespecial org.graalvm.compiler.nodes.calc.AddNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.calc.AddNode
astore 5
start local 5 2: aload 0
aload 5
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.replaceAtUsages:(Lorg/graalvm/compiler/graph/Node;)V
3: 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 4 0 zeroExtendNode Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;
0 4 1 constant Lorg/graalvm/compiler/nodes/ConstantNode;
0 4 2 other Lorg/graalvm/compiler/nodes/ValueNode;
0 4 3 loop Lorg/graalvm/compiler/loop/LoopEx;
1 4 4 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
2 4 5 addNode Lorg/graalvm/compiler/nodes/calc/AddNode;
MethodParameters:
Name Flags
zeroExtendNode
constant
other
loop
private static org.graalvm.compiler.nodes.ValueNode signExtend(org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.loop.LoopEx);
descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/loop/LoopEx;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=15, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.graalvm.compiler.nodes.ValueNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
astore 2
start local 2 1: aload 0
instanceof org.graalvm.compiler.nodes.PhiNode
ifeq 18
2: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.getInductionVariables:()Ljdk/internal/vm/compiler/collections/EconomicMap;
astore 3
start local 3 3: aload 3
aload 0
invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.loop.InductionVariable
astore 4
start local 4 4: aload 4
ifnull 18
aload 4
instanceof org.graalvm.compiler.loop.BasicInductionVariable
ifeq 18
5: aload 1
invokevirtual org.graalvm.compiler.loop.LoopEx.counted:()Lorg/graalvm/compiler/loop/CountedLoopInfo;
astore 5
start local 5 6: aload 4
invokevirtual org.graalvm.compiler.loop.InductionVariable.initNode:()Lorg/graalvm/compiler/nodes/ValueNode;
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
checkcast org.graalvm.compiler.core.common.type.IntegerStamp
astore 6
start local 6 7: aload 6
invokevirtual org.graalvm.compiler.core.common.type.IntegerStamp.isPositive:()Z
ifeq 18
8: aload 4
invokevirtual org.graalvm.compiler.loop.InductionVariable.isConstantExtremum:()Z
ifeq 16
9: aload 4
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantInit:()J
lstore 7
start local 7 10: aload 4
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantStride:()J
lstore 9
start local 9 11: aload 4
invokevirtual org.graalvm.compiler.loop.InductionVariable.constantExtremum:()J
lstore 11
start local 11 12: lload 7
lconst_0
lcmp
iflt 16
lload 11
lconst_0
lcmp
iflt 16
13: lload 11
lload 7
lsub
lload 9
ldiv
lconst_1
ladd
lstore 13
start local 13 14: aload 5
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.constantMaxTripCount:()Lorg/graalvm/compiler/core/common/util/UnsignedLong;
lload 13
invokevirtual org.graalvm.compiler.core.common.util.UnsignedLong.equals:(J)Z
ifeq 16
15: aload 2
new org.graalvm.compiler.nodes.calc.ZeroExtendNode
dup
aload 0
bipush 32
bipush 64
iconst_1
invokespecial org.graalvm.compiler.nodes.calc.ZeroExtendNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;IIZ)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
areturn
end local 13 end local 11 end local 9 end local 7 16: StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.StructuredGraph jdk.internal.vm.compiler.collections.EconomicMap org.graalvm.compiler.loop.InductionVariable org.graalvm.compiler.loop.CountedLoopInfo org.graalvm.compiler.core.common.type.IntegerStamp
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getCounter:()Lorg/graalvm/compiler/loop/InductionVariable;
aload 4
if_acmpne 18
aload 4
invokevirtual org.graalvm.compiler.loop.InductionVariable.direction:()Lorg/graalvm/compiler/loop/InductionVariable$Direction;
getstatic org.graalvm.compiler.loop.InductionVariable$Direction.Up:Lorg/graalvm/compiler/loop/InductionVariable$Direction;
if_acmpne 18
aload 5
invokevirtual org.graalvm.compiler.loop.CountedLoopInfo.getOverFlowGuard:()Lorg/graalvm/compiler/nodes/extended/GuardingNode;
ifnull 18
17: aload 2
new org.graalvm.compiler.nodes.calc.ZeroExtendNode
dup
aload 0
bipush 32
bipush 64
iconst_1
invokespecial org.graalvm.compiler.nodes.calc.ZeroExtendNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;IIZ)V
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
areturn
end local 6 end local 5 end local 4 end local 3 18: StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.loop.LoopEx org.graalvm.compiler.nodes.StructuredGraph
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.nodes.ValueNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
aload 0
bipush 64
getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
invokestatic org.graalvm.compiler.nodes.calc.SignExtendNode.create:(Lorg/graalvm/compiler/nodes/ValueNode;ILorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
invokevirtual org.graalvm.compiler.nodes.StructuredGraph.maybeAddOrUnique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
checkcast org.graalvm.compiler.nodes.ValueNode
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 input Lorg/graalvm/compiler/nodes/ValueNode;
0 19 1 loop Lorg/graalvm/compiler/loop/LoopEx;
1 19 2 graph Lorg/graalvm/compiler/nodes/StructuredGraph;
3 18 3 ivs Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/graph/Node;Lorg/graalvm/compiler/loop/InductionVariable;>;
4 18 4 inductionVariable Lorg/graalvm/compiler/loop/InductionVariable;
6 18 5 countedLoopInfo Lorg/graalvm/compiler/loop/CountedLoopInfo;
7 18 6 initStamp Lorg/graalvm/compiler/core/common/type/IntegerStamp;
10 16 7 init J
11 16 9 stride J
12 16 11 extremum J
14 16 13 shortestTrip J
MethodParameters:
Name Flags
input
loop
private static boolean applicableToImplicitZeroExtend(org.graalvm.compiler.nodes.calc.ZeroExtendNode);
descriptor: (Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.isInputAlwaysPositive:()Z
ifeq 1
aload 0
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.getInputBits:()I
bipush 32
if_icmpne 1
aload 0
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.getResultBits:()I
bipush 64
if_icmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 zeroExtendNode Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;
MethodParameters:
Name Flags
zeroExtendNode
private static org.graalvm.compiler.nodes.ValueNode tryImplicitZeroExtend(org.graalvm.compiler.nodes.ValueNode);
descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
instanceof org.graalvm.compiler.nodes.calc.ZeroExtendNode
ifeq 4
1: aload 0
checkcast org.graalvm.compiler.nodes.calc.ZeroExtendNode
astore 1
start local 1 2: aload 1
invokestatic org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.applicableToImplicitZeroExtend:(Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;)Z
ifeq 4
3: aload 1
invokevirtual org.graalvm.compiler.nodes.calc.ZeroExtendNode.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
areturn
end local 1 4: StackMap locals:
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 input Lorg/graalvm/compiler/nodes/ValueNode;
2 4 1 zeroExtendNode Lorg/graalvm/compiler/nodes/calc/ZeroExtendNode;
MethodParameters:
Name Flags
input
}
SourceFile: "AMD64HotSpotAddressLowering.java"
InnerClasses:
public final Scale = org.graalvm.compiler.asm.amd64.AMD64Address$Scale of org.graalvm.compiler.asm.amd64.AMD64Address
public HeapBaseNode = org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering$HeapBaseNode of org.graalvm.compiler.core.amd64.AMD64CompressAddressLowering
public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node
public final Direction = org.graalvm.compiler.loop.InductionVariable$Direction of org.graalvm.compiler.loop.InductionVariable