final class org.graalvm.compiler.lir.RedundantMoveElimination$Optimization
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization
super_class: java.lang.Object
{
java.util.Map<org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.RedundantMoveElimination$BlockData> blockData;
descriptor: Ljava/util/Map;
flags: (0x0000)
Signature: Ljava/util/Map<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/RedundantMoveElimination$BlockData;>;
jdk.vm.ci.code.RegisterArray callerSaveRegs;
descriptor: Ljdk/vm/ci/code/RegisterArray;
flags: (0x0000)
int[] eligibleRegs;
descriptor: [I
flags: (0x0000)
java.util.Map<java.lang.Integer, java.lang.Integer> stackIndices;
descriptor: Ljava/util/Map;
flags: (0x0000)
Signature: Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/Integer;>;
int numRegs;
descriptor: I
flags: (0x0000)
private final org.graalvm.compiler.lir.framemap.FrameMap frameMap;
descriptor: Lorg/graalvm/compiler/lir/framemap/FrameMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final int INIT_VALUE;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int COMPLEXITY_LIMIT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 30000
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/lir/RedundantMoveElimination;
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.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(org.graalvm.compiler.lir.framemap.FrameMap);
descriptor: (Lorg/graalvm/compiler/lir/framemap/FrameMap;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokestatic org.graalvm.compiler.core.common.CollectionsFactory.newMap:()Ljava/util/HashMap;
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.blockData:Ljava/util/Map;
2: aload 0
invokestatic org.graalvm.compiler.core.common.CollectionsFactory.newMap:()Ljava/util/HashMap;
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
3: aload 0
aload 1
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.frameMap:Lorg/graalvm/compiler/lir/framemap/FrameMap;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 5 1 frameMap Lorg/graalvm/compiler/lir/framemap/FrameMap;
MethodParameters:
Name Flags
frameMap
private void doOptimize(org.graalvm.compiler.lir.LIR);
descriptor: (Lorg/graalvm/compiler/lir/LIR;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: ldc "eliminate redundant moves"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 2: aload 0
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.frameMap:Lorg/graalvm/compiler/lir/framemap/FrameMap;
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.getRegisterConfig:()Ljdk/vm/ci/code/RegisterConfig;
invokeinterface jdk.vm.ci.code.RegisterConfig.getCallerSaveRegisters:()Ljdk/vm/ci/code/RegisterArray;
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.callerSaveRegs:Ljdk/vm/ci/code/RegisterArray;
3: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.initBlockData:(Lorg/graalvm/compiler/lir/LIR;)V
4: aload 0
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
newarray 10
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.eligibleRegs:[I
5: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.eligibleRegs:[I
iconst_m1
invokestatic java.util.Arrays.fill:([II)V
6: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.frameMap:Lorg/graalvm/compiler/lir/framemap/FrameMap;
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.getRegisterConfig:()Ljdk/vm/ci/code/RegisterConfig;
invokeinterface jdk.vm.ci.code.RegisterConfig.getAllocatableRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.iterator:()Ljava/util/Iterator;
astore 6
goto 10
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top java.util.Iterator
StackMap stack:
7: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.vm.ci.code.Register
astore 5
start local 5 8: aload 5
getfield jdk.vm.ci.code.Register.number:I
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
if_icmpge 10
9: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.eligibleRegs:[I
aload 5
getfield jdk.vm.ci.code.Register.number:I
aload 5
getfield jdk.vm.ci.code.Register.number:I
iastore
end local 5 10: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
11: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.solveDataFlow:(Lorg/graalvm/compiler/lir/LIR;)Z
ifne 14
12: aload 4
ifnull 13
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
13: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
return
14: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.eliminateMoves:(Lorg/graalvm/compiler/lir/LIR;)V
15: aload 4
ifnull 21
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 21
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 2
aload 4
ifnull 17
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
17: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
18: astore 3
aload 2
ifnonnull 19
aload 3
astore 2
goto 20
StackMap locals:
StackMap stack:
19: aload 2
aload 3
if_acmpeq 20
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
20: aload 2
athrow
21: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 22 1 lir Lorg/graalvm/compiler/lir/LIR;
2 17 4 indent Lorg/graalvm/compiler/debug/Indent;
8 10 5 reg Ljdk/vm/ci/code/Register;
Exception table:
from to target type
2 12 16 any
14 15 16 any
1 13 18 any
14 18 18 any
MethodParameters:
Name Flags
lir
private void initBlockData(org.graalvm.compiler.lir.LIR);
descriptor: (Lorg/graalvm/compiler/lir/LIR;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=14, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.LIR.linearScanOrder:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 2
start local 2 1: aload 0
iconst_0
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
2: sipush 30000
aload 2
arraylength
idiv
istore 3
start local 3 3: aload 2
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 22
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
4: aload 7
iload 5
aaload
astore 4
start local 4 5: aload 1
aload 4
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
astore 8
start local 8 6: aload 8
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 20
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.util.List top java.util.Iterator
StackMap stack:
7: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
astore 9
start local 9 8: aload 9
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isEligibleMove:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
ifeq 20
9: aload 9
checkcast org.graalvm.compiler.lir.StandardOp$MoveOp
invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
astore 11
start local 11 10: aload 11
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 15
11: aload 11
checkcast jdk.vm.ci.code.RegisterValue
invokevirtual jdk.vm.ci.code.RegisterValue.getRegister:()Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
istore 12
start local 12 12: iload 12
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
if_icmplt 20
13: aload 0
iload 12
iconst_1
iadd
putfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
end local 12 14: goto 20
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.util.List org.graalvm.compiler.lir.LIRInstruction java.util.Iterator jdk.vm.ci.meta.Value
StackMap stack:
15: aload 11
invokestatic jdk.vm.ci.code.ValueUtil.isStackSlot:(Ljdk/vm/ci/meta/Value;)Z
ifeq 20
16: aload 11
checkcast jdk.vm.ci.code.StackSlot
astore 12
start local 12 17: aload 0
aload 12
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.getOffset:(Ljdk/vm/ci/code/StackSlot;)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 13
start local 13 18: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
aload 13
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifne 20
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
iload 3
if_icmpge 20
19: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
aload 13
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 13 end local 12 end local 11 end local 9 20: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.util.List top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 8 end local 4 21: iinc 5 1
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
22: iload 5
iload 6
if_icmplt 4
23: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
iadd
istore 4
start local 4 24: ldc "num locations = %d (regs = %d, stack = %d)"
iload 4
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;III)V
25: aload 2
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 30
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
26: aload 8
iload 6
aaload
astore 5
start local 5 27: new org.graalvm.compiler.lir.RedundantMoveElimination$BlockData
dup
iload 4
invokespecial org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.<init>:(I)V
astore 9
start local 9 28: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.blockData:Ljava/util/Map;
aload 5
aload 9
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 9 end local 5 29: iinc 6 1
StackMap locals:
StackMap stack:
30: iload 6
iload 7
if_icmplt 26
31: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 32 1 lir Lorg/graalvm/compiler/lir/LIR;
1 32 2 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
3 32 3 maxStackLocations I
5 21 4 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
6 21 8 instructions Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
8 20 9 op Lorg/graalvm/compiler/lir/LIRInstruction;
10 20 11 dest Ljdk/vm/ci/meta/Value;
12 14 12 regNum I
17 20 12 stackSlot Ljdk/vm/ci/code/StackSlot;
18 20 13 offset Ljava/lang/Integer;
24 32 4 numLocations I
27 29 5 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
28 29 9 data Lorg/graalvm/compiler/lir/RedundantMoveElimination$BlockData;
MethodParameters:
Name Flags
lir
private int getOffset(jdk.vm.ci.code.StackSlot);
descriptor: (Ljdk/vm/ci/code/StackSlot;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.frameMap:Lorg/graalvm/compiler/lir/framemap/FrameMap;
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.totalFrameSize:()I
invokevirtual jdk.vm.ci.code.StackSlot.getOffset:(I)I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 1 1 stackSlot Ljdk/vm/ci/code/StackSlot;
MethodParameters:
Name Flags
stackSlot
private boolean solveDataFlow(org.graalvm.compiler.lir.LIR);
descriptor: (Lorg/graalvm/compiler/lir/LIR;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=27, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: ldc "solve data flow"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 2: aload 1
invokevirtual org.graalvm.compiler.lir.LIR.linearScanOrder:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 5
start local 5 3: iconst_0
istore 6
start local 6 4: iconst_1
istore 7
start local 7 5: iconst_1
istore 8
start local 8 6: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int
StackMap stack:
iconst_0
istore 9
start local 9 7: aconst_null
astore 10
aconst_null
astore 11
8: ldc "new iteration"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 12
start local 12 9: aload 5
dup
astore 16
arraylength
istore 15
iconst_0
istore 14
goto 48
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
10: aload 16
iload 14
aaload
astore 13
start local 13 11: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.blockData:Ljava/util/Map;
aload 13
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.RedundantMoveElimination$BlockData
astore 17
start local 17 12: iload 8
ifeq 14
13: aload 17
iload 7
putfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryValueNum:I
14: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.lir.RedundantMoveElimination$BlockData
StackMap stack:
aload 17
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryValueNum:I
istore 18
start local 18 15: getstatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
ifne 16
iload 18
ifgt 16
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
16: StackMap locals: int
StackMap stack:
iconst_0
istore 19
start local 19 17: aload 13
aload 5
iconst_0
aaload
if_acmpeq 18
aload 13
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isExceptionEntry:()Z
ifeq 21
18: StackMap locals: int
StackMap stack:
ldc "kill all values at entry of block %d"
aload 13
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
19: aload 17
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryState:[I
iload 18
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.clearValues:([II)V
20: goto 27
21: StackMap locals:
StackMap stack:
aload 13
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 23
arraylength
istore 22
iconst_0
istore 21
goto 26
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.lir.RedundantMoveElimination$BlockData int int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
22: aload 23
iload 21
aaload
astore 20
start local 20 23: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.blockData:Ljava/util/Map;
aload 20
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.RedundantMoveElimination$BlockData
astore 24
start local 24 24: iload 19
aload 17
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryState:[I
aload 24
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.exitState:[I
iload 18
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.mergeState:([I[II)Z
ior
istore 19
end local 24 end local 20 25: iinc 21 1
StackMap locals:
StackMap stack:
26: iload 21
iload 22
if_icmplt 22
27: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.lir.RedundantMoveElimination$BlockData int int
StackMap stack:
iload 18
aload 17
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryState:[I
arraylength
iadd
istore 18
28: iload 19
ifne 29
iload 8
ifeq 45
29: StackMap locals:
StackMap stack:
aconst_null
astore 20
aconst_null
astore 21
30: ldc "update block %d"
aload 13
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 22
start local 22 31: aload 17
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.exitState:[I
astore 23
start local 23 32: aload 23
aload 17
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryState:[I
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.copyState:([I[I)V
33: aload 1
aload 13
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
astore 24
start local 24 34: aload 24
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 26
goto 37
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.lir.RedundantMoveElimination$BlockData int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int[] java.util.List top java.util.Iterator
StackMap stack:
35: aload 26
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
astore 25
start local 25 36: aload 0
aload 23
aload 25
iload 18
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.updateState:([ILorg/graalvm/compiler/lir/LIRInstruction;I)I
istore 18
end local 25 37: StackMap locals:
StackMap stack:
aload 26
invokeinterface java.util.Iterator.hasNext:()Z
ifne 35
38: iconst_1
istore 9
end local 24 end local 23 39: aload 22
ifnull 45
aload 22
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 45
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.lir.RedundantMoveElimination$BlockData int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
40: astore 20
aload 22
ifnull 41
aload 22
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 22 StackMap locals:
StackMap stack:
41: aload 20
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
42: astore 21
aload 20
ifnonnull 43
aload 21
astore 20
goto 44
StackMap locals:
StackMap stack:
43: aload 20
aload 21
if_acmpeq 44
aload 20
aload 21
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
44: aload 20
athrow
45: StackMap locals:
StackMap stack:
iload 8
ifeq 47
46: iload 18
istore 7
end local 19 end local 18 end local 17 end local 13 47: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 14 1
StackMap locals:
StackMap stack:
48: iload 14
iload 15
if_icmplt 10
49: iconst_0
istore 8
50: aload 12
ifnull 56
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 56
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] int int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
51: astore 10
aload 12
ifnull 52
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 12 StackMap locals:
StackMap stack:
52: aload 10
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
53: astore 11
aload 10
ifnonnull 54
aload 11
astore 10
goto 55
StackMap locals:
StackMap stack:
54: aload 10
aload 11
if_acmpeq 55
aload 10
aload 11
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
55: aload 10
athrow
56: StackMap locals:
StackMap stack:
iinc 6 1
57: iload 6
iconst_5
if_icmple 60
58: aload 4
ifnull 59
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
59: StackMap locals:
StackMap stack:
iconst_0
ireturn
60: StackMap locals:
StackMap stack:
iload 9
ifne 6
end local 9 end local 8 end local 7 end local 6 end local 5 61: aload 4
ifnull 67
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 67
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
62: astore 2
aload 4
ifnull 63
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
63: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
64: astore 3
aload 2
ifnonnull 65
aload 3
astore 2
goto 66
StackMap locals:
StackMap stack:
65: aload 2
aload 3
if_acmpeq 66
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
66: aload 2
athrow
67: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 68 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 68 1 lir Lorg/graalvm/compiler/lir/LIR;
2 63 4 indent Lorg/graalvm/compiler/debug/Indent;
3 61 5 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
4 61 6 numIter I
5 61 7 currentValueNum I
6 61 8 firstRound Z
7 61 9 changed Z
9 52 12 indent2 Lorg/graalvm/compiler/debug/Indent;
11 47 13 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
12 47 17 data Lorg/graalvm/compiler/lir/RedundantMoveElimination$BlockData;
15 47 18 valueNum I
17 47 19 newState Z
23 25 20 predecessor Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
24 25 24 predData Lorg/graalvm/compiler/lir/RedundantMoveElimination$BlockData;
31 41 22 indent3 Lorg/graalvm/compiler/debug/Indent;
32 39 23 iterState [I
34 39 24 instructions Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
36 37 25 op Lorg/graalvm/compiler/lir/LIRInstruction;
Exception table:
from to target type
31 39 40 any
30 42 42 any
9 50 51 any
8 53 53 any
2 58 62 any
60 61 62 any
1 59 64 any
60 64 64 any
MethodParameters:
Name Flags
lir
private void eliminateMoves(org.graalvm.compiler.lir.LIR);
descriptor: (Lorg/graalvm/compiler/lir/LIR;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=24, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: ldc "eliminate moves"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 2: aload 1
invokevirtual org.graalvm.compiler.lir.LIR.linearScanOrder:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 5
start local 5 3: aload 5
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 39
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
4: aload 9
iload 7
aaload
astore 6
start local 6 5: aconst_null
astore 10
aconst_null
astore 11
6: ldc "eliminate moves in block %d"
aload 6
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 12
start local 12 7: aload 1
aload 6
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
astore 13
start local 13 8: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.blockData:Ljava/util/Map;
aload 6
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.RedundantMoveElimination$BlockData
astore 14
start local 14 9: iconst_0
istore 15
start local 15 10: aload 14
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryState:[I
astore 16
start local 16 11: aload 14
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryValueNum:I
aload 14
getfield org.graalvm.compiler.lir.RedundantMoveElimination$BlockData.entryState:[I
arraylength
iadd
istore 17
start local 17 12: aload 13
invokeinterface java.util.List.size:()I
istore 18
start local 18 13: iconst_0
istore 19
start local 19 14: goto 29
15: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.List org.graalvm.compiler.lir.RedundantMoveElimination$BlockData int int[] int int int
StackMap stack:
aload 13
iload 19
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
astore 20
start local 20 16: aload 20
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isEligibleMove:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
ifeq 27
17: aload 20
checkcast org.graalvm.compiler.lir.StandardOp$ValueMoveOp
astore 21
start local 21 18: aload 0
aload 21
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.getStateIdx:(Ljdk/vm/ci/meta/Value;)I
istore 22
start local 22 19: aload 0
aload 21
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.getStateIdx:(Ljdk/vm/ci/meta/Value;)I
istore 23
start local 23 20: iload 22
iflt 27
iload 23
iflt 27
aload 16
iload 22
iaload
aload 16
iload 23
iaload
if_icmpne 27
21: getstatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
ifne 22
aload 16
iload 22
iaload
ifne 22
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
22: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.List org.graalvm.compiler.lir.RedundantMoveElimination$BlockData int int[] int int int org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.lir.StandardOp$ValueMoveOp int int
StackMap stack:
ldc "delete move %s"
aload 20
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
23: aload 13
iload 19
aconst_null
invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
24: iconst_1
istore 15
25: getstatic org.graalvm.compiler.lir.RedundantMoveElimination.deletedMoves:Lorg/graalvm/compiler/debug/DebugCounter;
invokeinterface org.graalvm.compiler.debug.DebugCounter.isEnabled:()Z
ifeq 27
26: getstatic org.graalvm.compiler.lir.RedundantMoveElimination.deletedMoves:Lorg/graalvm/compiler/debug/DebugCounter;
invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
end local 23 end local 22 end local 21 27: StackMap locals:
StackMap stack:
aload 0
aload 16
aload 20
iload 17
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.updateState:([ILorg/graalvm/compiler/lir/LIRInstruction;I)I
istore 17
end local 20 28: iinc 19 1
StackMap locals:
StackMap stack:
29: iload 19
iload 18
if_icmplt 15
end local 19 30: iload 15
ifeq 32
31: aload 13
aconst_null
invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
invokeinterface java.util.List.removeAll:(Ljava/util/Collection;)Z
pop
end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 32: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 12
ifnull 38
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 38
StackMap locals:
StackMap stack: java.lang.Throwable
33: astore 10
aload 12
ifnull 34
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 12 StackMap locals:
StackMap stack:
34: aload 10
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
35: astore 11
aload 10
ifnonnull 36
aload 11
astore 10
goto 37
StackMap locals:
StackMap stack:
36: aload 10
aload 11
if_acmpeq 37
aload 10
aload 11
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
37: aload 10
athrow
end local 6 38: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
39: iload 7
iload 8
if_icmplt 4
end local 5 40: aload 4
ifnull 46
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 46
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization org.graalvm.compiler.lir.LIR java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
41: astore 2
aload 4
ifnull 42
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
42: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
43: astore 3
aload 2
ifnonnull 44
aload 3
astore 2
goto 45
StackMap locals:
StackMap stack:
44: aload 2
aload 3
if_acmpeq 45
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
45: aload 2
athrow
46: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 47 1 lir Lorg/graalvm/compiler/lir/LIR;
2 42 4 indent Lorg/graalvm/compiler/debug/Indent;
3 40 5 blocks [Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
5 38 6 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
7 34 12 indent2 Lorg/graalvm/compiler/debug/Indent;
8 32 13 instructions Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
9 32 14 data Lorg/graalvm/compiler/lir/RedundantMoveElimination$BlockData;
10 32 15 hasDead Z
11 32 16 iterState [I
12 32 17 valueNum I
13 32 18 numInsts I
14 30 19 idx I
16 28 20 op Lorg/graalvm/compiler/lir/LIRInstruction;
18 27 21 moveOp Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
19 27 22 sourceIdx I
20 27 23 destIdx I
Exception table:
from to target type
7 32 33 any
6 35 35 any
2 40 41 any
1 43 43 any
MethodParameters:
Name Flags
lir
private int updateState(int[], org.graalvm.compiler.lir.LIRInstruction, int);
descriptor: ([ILorg/graalvm/compiler/lir/LIRInstruction;I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aconst_null
astore 4
aconst_null
astore 5
1: ldc "update state for op %s, initial value num = %d"
aload 2
iload 3
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;I)Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 2: aload 2
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isEligibleMove:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
ifeq 13
3: aload 2
checkcast org.graalvm.compiler.lir.StandardOp$ValueMoveOp
astore 7
start local 7 4: aload 0
aload 7
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.getStateIdx:(Ljdk/vm/ci/meta/Value;)I
istore 8
start local 8 5: aload 0
aload 7
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.getStateIdx:(Ljdk/vm/ci/meta/Value;)I
istore 9
start local 9 6: iload 8
iflt 13
iload 9
iflt 13
7: getstatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
ifne 8
aload 1
iload 8
iaload
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isObjectValue:(I)Z
ifne 8
aload 7
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.core.common.LIRKind.isValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 8
new java.lang.AssertionError
dup
ldc "move op moves object but input is not defined as object"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization int[] org.graalvm.compiler.lir.LIRInstruction int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.StandardOp$ValueMoveOp int int
StackMap stack:
aload 1
iload 9
aload 1
iload 8
iaload
iastore
9: ldc "move value %d from %d to %d"
aload 1
iload 8
iaload
iload 8
iload 9
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;III)V
10: iload 3
11: aload 6
ifnull 12
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
12: StackMap locals:
StackMap stack: int
ireturn
end local 9 end local 8 end local 7 13: StackMap locals:
StackMap stack:
iload 3
istore 7
start local 7 14: aload 2
invokevirtual org.graalvm.compiler.lir.LIRInstruction.destroysCallerSavedRegisters:()Z
ifeq 21
15: ldc "kill all caller save regs"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
16: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.callerSaveRegs:Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.iterator:()Ljava/util/Iterator;
astore 9
goto 20
StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization int[] org.graalvm.compiler.lir.LIRInstruction int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int top java.util.Iterator
StackMap stack:
17: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.vm.ci.code.Register
astore 8
start local 8 18: aload 8
getfield jdk.vm.ci.code.Register.number:I
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
if_icmpge 20
19: aload 1
aload 8
getfield jdk.vm.ci.code.Register.number:I
iload 7
iinc 7 1
iconst_1
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.encodeValueNum:(IZ)I
iastore
end local 8 20: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 17
21: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization int[] org.graalvm.compiler.lir.LIRInstruction int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
new org.graalvm.compiler.lir.RedundantMoveElimination$Optimization$1OutputValueConsumer
dup
aload 0
iload 7
aload 1
invokespecial org.graalvm.compiler.lir.RedundantMoveElimination$Optimization$1OutputValueConsumer.<init>:(Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;I[I)V
astore 8
start local 8 22: aload 2
aload 8
invokevirtual org.graalvm.compiler.lir.LIRInstruction.visitEachTemp:(Lorg/graalvm/compiler/lir/ValueConsumer;)V
23: aload 2
aload 8
invokevirtual org.graalvm.compiler.lir.LIRInstruction.visitEachOutput:(Lorg/graalvm/compiler/lir/ValueConsumer;)V
24: aload 8
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization$1OutputValueConsumer.opValueNum:I
istore 7
25: aload 2
invokevirtual org.graalvm.compiler.lir.LIRInstruction.hasState:()Z
ifeq 29
26: ldc "kill all object values"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
27: aload 1
iload 7
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.clearValuesOfKindObject:([II)V
28: iload 7
aload 1
arraylength
iadd
istore 7
29: StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization$1OutputValueConsumer
StackMap stack:
iload 7
30: aload 6
ifnull 31
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
31: StackMap locals:
StackMap stack: int
ireturn
end local 8 end local 7 StackMap locals: org.graalvm.compiler.lir.RedundantMoveElimination$Optimization int[] org.graalvm.compiler.lir.LIRInstruction int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
32: astore 4
33: aload 6
ifnull 34
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
34: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
35: astore 5
aload 4
ifnonnull 36
aload 5
astore 4
goto 37
StackMap locals:
StackMap stack:
36: aload 4
aload 5
if_acmpeq 37
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
37: aload 4
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 38 1 state [I
0 38 2 op Lorg/graalvm/compiler/lir/LIRInstruction;
0 38 3 initValueNum I
2 34 6 indent Lorg/graalvm/compiler/debug/Indent;
4 13 7 moveOp Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
5 13 8 sourceIdx I
6 13 9 destIdx I
14 32 7 valueNum I
18 20 8 reg Ljdk/vm/ci/code/Register;
22 32 8 outputValueConsumer Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization$1OutputValueConsumer;
Exception table:
from to target type
2 11 32 any
13 30 32 any
1 12 35 any
13 31 35 any
32 35 35 any
MethodParameters:
Name Flags
state final
op
initValueNum
private static boolean mergeState(int[], int[], int);
descriptor: ([I[II)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=8, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
ifne 1
aload 0
arraylength
aload 1
arraylength
if_icmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 2: iconst_0
istore 4
start local 4 3: goto 17
4: StackMap locals: int int
StackMap stack:
iload 2
iload 4
iadd
istore 5
start local 5 5: aload 0
iload 4
iaload
istore 6
start local 6 6: aload 1
iload 4
iaload
istore 7
start local 7 7: iload 6
iload 7
if_icmpeq 16
iload 7
ifeq 16
iload 6
iload 5
iload 6
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isObjectValue:(I)Z
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.encodeValueNum:(IZ)I
if_icmpeq 16
8: iload 6
ifeq 13
9: iload 5
iload 6
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isObjectValue:(I)Z
ifne 10
iload 7
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isObjectValue:(I)Z
ifne 10
iconst_0
goto 11
StackMap locals: int[] int[] int int int int int int
StackMap stack: int
10: iconst_1
StackMap locals: int[] int[] int int int int int int
StackMap stack: int int
11: invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.encodeValueNum:(IZ)I
istore 6
12: goto 14
13: StackMap locals:
StackMap stack:
iload 7
istore 6
14: StackMap locals:
StackMap stack:
aload 0
iload 4
iload 6
iastore
15: iconst_1
istore 3
end local 7 end local 6 end local 5 16: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
17: iload 4
aload 1
arraylength
if_icmplt 4
end local 4 18: iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 dest [I
0 19 1 source [I
0 19 2 defNum I
2 19 3 changed Z
3 18 4 idx I
5 16 5 phiNum I
6 16 6 dst I
7 16 7 src I
MethodParameters:
Name Flags
dest
source
defNum
private static void copyState(int[], int[]);
descriptor: ([I[I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
ifne 1
aload 0
arraylength
aload 1
arraylength
if_icmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 2: goto 5
3: StackMap locals: int
StackMap stack:
aload 0
iload 2
aload 1
iload 2
iaload
iastore
4: iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
aload 1
arraylength
if_icmplt 3
end local 2 6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 dest [I
0 7 1 source [I
2 6 2 idx I
MethodParameters:
Name Flags
dest
source
private static void clearValues(int[], int);
descriptor: ([II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 5
2: StackMap locals: int
StackMap stack:
iload 1
iload 2
iadd
istore 3
start local 3 3: aload 0
iload 2
iload 3
iconst_1
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.encodeValueNum:(IZ)I
iastore
end local 3 4: iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
aload 0
arraylength
if_icmplt 2
end local 2 6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 state [I
0 7 1 defNum I
1 6 2 idx I
3 4 3 phiNum I
MethodParameters:
Name Flags
state
defNum
private static void clearValuesOfKindObject(int[], int);
descriptor: ([II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 6
2: StackMap locals: int
StackMap stack:
iload 1
iload 2
iadd
istore 3
start local 3 3: aload 0
iload 2
iaload
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.isObjectValue:(I)Z
ifeq 5
4: aload 0
iload 2
iload 3
iconst_1
invokestatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.encodeValueNum:(IZ)I
iastore
end local 3 5: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
aload 0
arraylength
if_icmplt 2
end local 2 7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 state [I
0 8 1 defNum I
1 7 2 idx I
3 5 3 phiNum I
MethodParameters:
Name Flags
state
defNum
private int getStateIdx(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
1: aload 1
checkcast jdk.vm.ci.code.RegisterValue
invokevirtual jdk.vm.ci.code.RegisterValue.getRegister:()Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
istore 2
start local 2 2: iload 2
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
if_icmpge 4
3: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.eligibleRegs:[I
iload 2
iaload
ireturn
4: StackMap locals: int
StackMap stack:
iconst_m1
ireturn
end local 2 5: StackMap locals:
StackMap stack:
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isStackSlot:(Ljdk/vm/ci/meta/Value;)Z
ifeq 10
6: aload 1
checkcast jdk.vm.ci.code.StackSlot
astore 2
start local 2 7: aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.stackIndices:Ljava/util/Map;
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.getOffset:(Ljdk/vm/ci/code/StackSlot;)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 3
start local 3 8: aload 3
ifnull 10
9: aload 3
invokevirtual java.lang.Integer.intValue:()I
aload 0
getfield org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.numRegs:I
iadd
ireturn
end local 3 end local 2 10: StackMap locals:
StackMap stack:
iconst_m1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/lir/RedundantMoveElimination$Optimization;
0 11 1 location Ljdk/vm/ci/meta/Value;
2 5 2 regNum I
7 10 2 slot Ljdk/vm/ci/code/StackSlot;
8 10 3 index Ljava/lang/Integer;
MethodParameters:
Name Flags
location
private static int encodeValueNum(int, boolean);
descriptor: (IZ)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.RedundantMoveElimination$Optimization.$assertionsDisabled:Z
ifne 1
iload 0
ifgt 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iload 1
ifeq 3
2: iload 0
ineg
ireturn
3: StackMap locals:
StackMap stack:
iload 0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 valueNum I
0 4 1 isObjectKind Z
MethodParameters:
Name Flags
valueNum
isObjectKind
private static boolean isObjectValue(int);
descriptor: (I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iload 0
ifge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 encodedValueNum I
MethodParameters:
Name Flags
encodedValueNum
private static boolean isEligibleMove(org.graalvm.compiler.lir.LIRInstruction);
descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
instanceof org.graalvm.compiler.lir.StandardOp$ValueMoveOp
ifeq 5
1: aload 0
checkcast org.graalvm.compiler.lir.StandardOp$ValueMoveOp
astore 1
start local 1 2: aload 1
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
astore 2
start local 2 3: aload 1
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
astore 3
start local 3 4: aload 2
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 3
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ireturn
end local 3 end local 2 end local 1 5: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 op Lorg/graalvm/compiler/lir/LIRInstruction;
2 5 1 moveOp Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
3 5 2 source Ljdk/vm/ci/meta/Value;
4 5 3 dest Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
op
}
SourceFile: "RedundantMoveElimination.java"
NestHost: org.graalvm.compiler.lir.RedundantMoveElimination
InnerClasses:
private final BlockData = org.graalvm.compiler.lir.RedundantMoveElimination$BlockData of org.graalvm.compiler.lir.RedundantMoveElimination
private final Optimization = org.graalvm.compiler.lir.RedundantMoveElimination$Optimization of org.graalvm.compiler.lir.RedundantMoveElimination
OutputValueConsumer = org.graalvm.compiler.lir.RedundantMoveElimination$Optimization$1OutputValueConsumer
public abstract MoveOp = org.graalvm.compiler.lir.StandardOp$MoveOp of org.graalvm.compiler.lir.StandardOp
public abstract ValueMoveOp = org.graalvm.compiler.lir.StandardOp$ValueMoveOp of org.graalvm.compiler.lir.StandardOp