public class org.graalvm.compiler.lir.alloc.lsra.MoveResolver
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.lsra.MoveResolver
super_class: java.lang.Object
{
private static final org.graalvm.compiler.debug.CounterKey cycleBreakingSlotsAllocated;
descriptor: Lorg/graalvm/compiler/debug/CounterKey;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final org.graalvm.compiler.lir.alloc.lsra.LinearScan allocator;
descriptor: Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int insertIdx;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.lir.LIRInsertionBuffer insertionBuffer;
descriptor: Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
flags: (0x0002) ACC_PRIVATE
private final java.util.ArrayList<org.graalvm.compiler.lir.alloc.lsra.Interval> mappingFrom;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/lsra/Interval;>;
private final java.util.ArrayList<jdk.vm.ci.meta.Constant> mappingFromOpr;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Ljdk/vm/ci/meta/Constant;>;
private final java.util.ArrayList<org.graalvm.compiler.lir.alloc.lsra.Interval> mappingTo;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/lsra/Interval;>;
private boolean multipleReadsAllowed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final int[] registerBlocked;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.lir.gen.LIRGenerationResult res;
descriptor: Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
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.alloc.lsra.MoveResolver.$assertionsDisabled:Z
3: ldc "LSRA[cycleBreakingSlotsAllocated]"
invokestatic org.graalvm.compiler.debug.DebugContext.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/CounterKey;
putstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/CounterKey;
return
LocalVariableTable:
Start End Slot Name Signature
protected void setValueBlocked(jdk.vm.ci.meta.Value, int);
descriptor: (Ljdk/vm/ci/meta/Value;I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
iload 2
iconst_1
if_icmpeq 1
iload 2
iconst_m1
if_icmpeq 1
new java.lang.AssertionError
dup
ldc "out of bounds"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 4
2: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.registerBlocked:[I
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
dup2
iaload
iload 2
iadd
iastore
3: goto 5
4: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "unhandled value "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 6 1 location Ljdk/vm/ci/meta/Value;
0 6 2 direction I
MethodParameters:
Name Flags
location
direction
protected org.graalvm.compiler.lir.alloc.lsra.Interval getMappingFrom(int);
descriptor: (I)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 1 1 i I
MethodParameters:
Name Flags
i
protected int mappingFromSize();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
protected int valueBlocked(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, 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 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.registerBlocked:[I
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
iaload
ireturn
2: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "unhandled value "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 3 1 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
location
void setMultipleReadsAllowed();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.multipleReadsAllowed:Z
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
protected boolean areMultipleReadsAllowed();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.multipleReadsAllowed:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
boolean hasMappings();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifle 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
protected org.graalvm.compiler.lir.alloc.lsra.LinearScan getAllocator();
descriptor: ()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
protected void <init>(org.graalvm.compiler.lir.alloc.lsra.LinearScan);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
2: aload 0
iconst_0
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.multipleReadsAllowed:Z
3: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
4: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
5: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
6: aload 0
iconst_m1
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
7: aload 0
new org.graalvm.compiler.lir.LIRInsertionBuffer
dup
invokespecial org.graalvm.compiler.lir.LIRInsertionBuffer.<init>:()V
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
8: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
newarray 10
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.registerBlocked:[I
9: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIRGenerationResult:()Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.res:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 11 1 allocator Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
MethodParameters:
Name Flags
allocator
protected boolean checkEmpty();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
ldc "list must be empty before and after processing"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 3: goto 6
4: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 5
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.registerBlocked:[I
iload 1
iaload
ifeq 5
new java.lang.AssertionError
dup
ldc "register map must be empty before and after processing"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
6: iload 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
if_icmplt 4
end local 1 7: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.checkMultipleReads:()V
8: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
3 7 1 i I
protected void checkMultipleReads();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.areMultipleReadsAllowed:()Z
ifeq 1
new java.lang.AssertionError
dup
ldc "must have default value"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
private boolean verifyBeforeResolve();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmpeq 1
new java.lang.AssertionError
dup
ldc "length must be equal"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmpeq 2
new java.lang.AssertionError
dup
ldc "length must be equal"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
iconst_m1
if_icmpne 3
new java.lang.AssertionError
dup
ldc "insert position not set"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.areMultipleReadsAllowed:()Z
ifne 13
4: iconst_0
istore 1
start local 1 5: goto 12
6: StackMap locals: int
StackMap stack:
iload 1
iconst_1
iadd
istore 2
start local 2 7: goto 10
8: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 9
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
ifnull 9
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
if_acmpne 9
new java.lang.AssertionError
dup
ldc "cannot read from same interval twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
10: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 8
11: iinc 1 1
end local 2 StackMap locals:
StackMap stack:
12: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 6
end local 1 13: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 14: goto 21
15: StackMap locals: int
StackMap stack:
iload 1
iconst_1
iadd
istore 2
start local 2 16: goto 19
17: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 18
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
if_acmpne 18
new java.lang.AssertionError
dup
ldc "cannot write to same interval twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
18: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
19: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 17
20: iinc 1 1
end local 2 StackMap locals:
StackMap stack:
21: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 15
22: getstatic org.graalvm.util.Equivalence.DEFAULT:Lorg/graalvm/util/Equivalence;
invokestatic org.graalvm.util.EconomicSet.create:(Lorg/graalvm/util/Equivalence;)Lorg/graalvm/util/EconomicSet;
astore 3
start local 3 23: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.areMultipleReadsAllowed:()Z
ifne 31
24: iconst_0
istore 1
goto 30
25: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver int top org.graalvm.util.EconomicSet
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 4
start local 4 26: aload 4
ifnull 29
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifne 29
27: aload 3
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokeinterface org.graalvm.util.EconomicSet.add:(Ljava/lang/Object;)Z
istore 5
start local 5 28: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 29
iload 5
ifne 29
new java.lang.AssertionError
dup
ldc "cannot read from same register twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 5 end local 4 29: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
30: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 25
31: StackMap locals:
StackMap stack:
aload 3
invokeinterface org.graalvm.util.EconomicSet.clear:()V
32: iconst_0
istore 1
goto 39
33: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 4
start local 4 34: aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 36
35: goto 38
36: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 3
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokeinterface org.graalvm.util.EconomicSet.add:(Ljava/lang/Object;)Z
istore 5
start local 5 37: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 38
iload 5
ifne 38
new java.lang.AssertionError
dup
ldc "cannot write to same register twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 5 end local 4 38: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
39: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 33
40: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.verifyStackSlotMapping:()V
41: iconst_1
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 42 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
5 13 1 i I
14 42 1 i I
7 12 2 j I
16 21 2 j I
23 42 3 usedRegs Lorg/graalvm/util/EconomicSet<Ljdk/vm/ci/meta/Value;>;
26 29 4 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
28 29 5 unique Z
34 38 4 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
37 38 5 unique Z
protected void verifyStackSlotMapping();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=1
start local 0 0: getstatic org.graalvm.util.Equivalence.DEFAULT:Lorg/graalvm/util/Equivalence;
invokestatic org.graalvm.util.EconomicSet.create:(Lorg/graalvm/util/Equivalence;)Lorg/graalvm/util/EconomicSet;
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 7
3: StackMap locals: org.graalvm.util.EconomicSet int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 3
start local 3 4: aload 3
ifnull 6
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifne 6
5: aload 1
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokeinterface org.graalvm.util.EconomicSet.add:(Ljava/lang/Object;)Z
pop
end local 3 6: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
7: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 3
end local 2 8: iconst_0
istore 2
start local 2 9: goto 14
10: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 3
start local 3 11: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 13
aload 1
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokeinterface org.graalvm.util.EconomicSet.contains:(Ljava/lang/Object;)Z
ifeq 13
12: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
aload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
invokestatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.checkIntervalLocation:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Ljdk/vm/ci/meta/Constant;)Z
ifne 13
new java.lang.AssertionError
dup
ldc "stack slots used in mappingFrom must be disjoint to mappingTo"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 3 13: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
14: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 10
end local 2 15: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
1 16 1 usedRegs Lorg/graalvm/util/EconomicSet<Ljdk/vm/ci/meta/Value;>;
2 8 2 i I
4 6 3 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
9 15 2 i I
11 13 3 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
private static boolean checkIntervalLocation(org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval, jdk.vm.ci.meta.Constant);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Ljdk/vm/ci/meta/Constant;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
ifnonnull 3
1: aload 2
ifnull 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 from Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 4 1 to Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 4 2 fromOpr Ljdk/vm/ci/meta/Constant;
MethodParameters:
Name Flags
from
to
fromOpr
private void blockRegisters(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 2
start local 2 1: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 6
2: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.areMultipleReadsAllowed:()Z
ifne 3
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
ifeq 3
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "location already marked as used: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals: jdk.vm.ci.meta.Value
StackMap stack:
iconst_1
istore 3
start local 3 4: aload 0
aload 2
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.setValueBlocked:(Ljdk/vm/ci/meta/Value;I)V
5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
ldc "block %s"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
end local 3 6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 7 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 7 2 location Ljdk/vm/ci/meta/Value;
4 6 3 direction I
MethodParameters:
Name Flags
interval
private void unblockRegisters(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 2
start local 2 1: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
2: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
ifgt 3
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "location already marked as unused: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals: jdk.vm.ci.meta.Value
StackMap stack:
aload 0
aload 2
iconst_m1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.setValueBlocked:(Ljdk/vm/ci/meta/Value;I)V
4: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
ldc "unblock %s"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 6 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 6 2 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
interval
private boolean safeToProcessMove(org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 1
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
goto 2
StackMap locals:
StackMap stack:
1: aconst_null
StackMap locals:
StackMap stack: jdk.vm.ci.meta.AllocatableValue
2: astore 3
start local 3 3: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 4
start local 4 4: aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 7
5: aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
iconst_1
if_icmpgt 6
aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
iconst_1
if_icmpne 7
aload 0
aload 3
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.isMoveToSelf:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
ifne 7
6: StackMap locals: jdk.vm.ci.meta.Value jdk.vm.ci.meta.Value
StackMap stack:
iconst_0
ireturn
7: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 8 1 from Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 8 2 to Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
3 8 3 fromReg Ljdk/vm/ci/meta/Value;
4 8 4 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
from
to
protected boolean isMoveToSelf(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 2
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 2
aload 1
invokevirtual jdk.vm.ci.meta.Value.equals:(Ljava/lang/Object;)Z
ifeq 3
2: iconst_1
ireturn
3: StackMap locals:
StackMap stack:
aload 1
ifnull 6
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 6
aload 2
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 6
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
aload 2
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifeq 6
4: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 5
aload 2
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 1
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisterAllocationConfig:()Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;)Z
ifne 5
new java.lang.AssertionError
dup
ldc "Same register but Kind mismatch %s <- %s"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 2
aastore
dup
iconst_1
aload 1
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
iconst_1
ireturn
6: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 7 1 from Ljdk/vm/ci/meta/Value;
0 7 2 to Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
from
to
protected boolean mightBeBlocked(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=2, 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
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 1 1 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
location
private void createInsertionBuffer(java.util.ArrayList<org.graalvm.compiler.lir.LIRInstruction>);
descriptor: (Ljava/util/ArrayList;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
ifeq 1
new java.lang.AssertionError
dup
ldc "overwriting existing buffer"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 1
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.init:(Ljava/util/List;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 3 1 list Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
Signature: (Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;)V
MethodParameters:
Name Flags
list
private void appendInsertionBuffer();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
ifeq 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.finish:()V
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
ifeq 3
new java.lang.AssertionError
dup
ldc "must be uninitialized now"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
iconst_m1
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
private org.graalvm.compiler.lir.LIRInstruction insertMove(org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Lorg/graalvm/compiler/lir/LIRInstruction;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ifeq 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "from and to interval equal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 2
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisterAllocationConfig:()Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;)Z
ifne 2
new java.lang.AssertionError
dup
ldc "move between different types"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
iconst_m1
if_icmpne 3
new java.lang.AssertionError
dup
ldc "must setup insert position first"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.createMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 3
start local 3 4: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
aload 3
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 4
start local 4 6: aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 8
7: aload 4
ldc "insert move from %s to %s at %d"
aload 1
aload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
8: StackMap locals: org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.debug.DebugContext
StackMap stack:
aload 3
areturn
end local 4 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/lir/alloc/lsra/MoveResolver;
0 9 1 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 9 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
4 9 3 move Lorg/graalvm/compiler/lir/LIRInstruction;
6 9 4 debug Lorg/graalvm/compiler/debug/DebugContext;
MethodParameters:
Name Flags
fromInterval
toInterval
protected org.graalvm.compiler.lir.LIRInstruction createMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue);
descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 2
aload 1
invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/LIRInstruction;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 1 1 fromOpr Ljdk/vm/ci/meta/AllocatableValue;
0 1 2 toOpr Ljdk/vm/ci/meta/AllocatableValue;
0 1 3 fromLocation Ljdk/vm/ci/meta/AllocatableValue;
0 1 4 toLocation Ljdk/vm/ci/meta/AllocatableValue;
MethodParameters:
Name Flags
fromOpr
toOpr
fromLocation
toLocation
private org.graalvm.compiler.lir.LIRInstruction insertMove(jdk.vm.ci.meta.Constant, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Lorg/graalvm/compiler/lir/LIRInstruction;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
iconst_m1
if_icmpne 1
new java.lang.AssertionError
dup
ldc "must setup insert position first"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
astore 3
start local 3 2: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
3: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 3
aload 1
invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createStackLoad:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Constant;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 4
start local 4 4: goto 6
end local 4 5: StackMap locals: jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 3
aload 1
invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createLoad:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Constant;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 4
start local 4 6: StackMap locals: org.graalvm.compiler.lir.LIRInstruction
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
aload 4
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
7: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 5
start local 5 8: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 10
9: aload 5
ldc "insert move from value %s to %s at %d"
aload 1
aload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
10: StackMap locals: org.graalvm.compiler.debug.DebugContext
StackMap stack:
aload 4
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 11 1 fromOpr Ljdk/vm/ci/meta/Constant;
0 11 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 11 3 toOpr Ljdk/vm/ci/meta/AllocatableValue;
4 5 4 move Lorg/graalvm/compiler/lir/LIRInstruction;
6 11 4 move Lorg/graalvm/compiler/lir/LIRInstruction;
8 11 5 debug Lorg/graalvm/compiler/debug/DebugContext;
MethodParameters:
Name Flags
fromOpr
toInterval
private void resolveMappings();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=12, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: aload 1
ldc "resolveMapping"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 3: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 4
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.verifyBeforeResolve:()Z
ifne 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 6
5: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.printMapping:()V
6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 5
start local 5 7: goto 12
8: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 6
start local 6 9: aload 6
ifnull 11
10: aload 0
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.blockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
end local 6 11: StackMap locals:
StackMap stack:
iinc 5 -1
StackMap locals:
StackMap stack:
12: iload 5
ifge 8
13: aconst_null
astore 6
start local 6 14: goto 43
15: StackMap locals: java.util.ArrayList
StackMap stack:
iconst_0
istore 7
start local 7 16: iconst_m1
istore 8
start local 8 17: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 5
goto 40
18: StackMap locals: int int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 9
start local 9 19: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 10
start local 10 20: aload 0
aload 9
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.safeToProcessMove:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifeq 36
21: aload 9
ifnull 25
22: aload 0
aload 9
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertMove:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 11
start local 11 23: aload 0
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.unblockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
24: goto 26
end local 11 25: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertMove:(Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 11
start local 11 26: StackMap locals: org.graalvm.compiler.lir.LIRInstruction
StackMap stack:
aload 11
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.res:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
ldc "MoveResolver resolve mapping"
invokevirtual org.graalvm.compiler.lir.LIRInstruction.setComment:(Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Ljava/lang/String;)V
27: aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 31
28: aload 6
ifnonnull 30
29: new java.util.ArrayList
dup
iconst_2
invokespecial java.util.ArrayList.<init>:(I)V
astore 6
30: StackMap locals:
StackMap stack:
aload 6
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
31: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
32: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
33: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
34: iconst_1
istore 7
end local 11 35: goto 39
StackMap locals:
StackMap stack:
36: aload 9
ifnull 39
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 39
37: aload 6
ifnull 38
aload 6
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
ifne 39
38: StackMap locals:
StackMap stack:
iload 5
istore 8
end local 10 end local 9 39: StackMap locals:
StackMap stack:
iinc 5 -1
StackMap locals:
StackMap stack:
40: iload 5
ifge 18
41: iload 7
ifne 43
42: aload 0
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.breakCycle:(I)V
end local 8 end local 7 43: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifgt 15
end local 6 end local 5 44: aload 4
ifnull 50
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 50
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
45: astore 2
aload 4
ifnull 46
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
46: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
47: astore 3
aload 2
ifnonnull 48
aload 3
astore 2
goto 49
StackMap locals:
StackMap stack:
48: aload 2
aload 3
if_acmpeq 49
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
49: aload 2
athrow
50: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.multipleReadsAllowed:Z
51: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 52
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.checkEmpty:()Z
ifne 52
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
52: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 53 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
1 53 1 debug Lorg/graalvm/compiler/debug/DebugContext;
3 46 4 indent Lorg/graalvm/compiler/debug/Indent;
7 44 5 i I
9 11 6 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
14 44 6 busySpillSlots Ljava/util/ArrayList<Ljdk/vm/ci/meta/AllocatableValue;>;
16 43 7 processedInterval Z
17 43 8 spillCandidate I
19 39 9 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
20 39 10 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
23 25 11 move Lorg/graalvm/compiler/lir/LIRInstruction;
26 35 11 move Lorg/graalvm/compiler/lir/LIRInstruction;
Exception table:
from to target type
3 44 45 any
2 47 47 any
protected void breakCycle(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
iload 1
iconst_m1
if_icmpne 1
new java.lang.AssertionError
dup
ldc "no interval in register for spilling found"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 2
start local 2 2: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
astore 3
start local 3 3: aload 3
ifnonnull 7
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getFrameMapBuilder:()Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilder.allocateSpillSlot:(Ljdk/vm/ci/meta/ValueKind;)Lorg/graalvm/compiler/lir/VirtualStackSlot;
astore 3
5: aload 2
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillSlot:(Ljdk/vm/ci/meta/AllocatableValue;)V
6: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/CounterKey;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
invokeinterface org.graalvm.compiler.debug.CounterKey.increment:(Lorg/graalvm/compiler/debug/DebugContext;)V
7: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 0
iload 1
aload 2
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.spillInterval:(ILorg/graalvm/compiler/lir/alloc/lsra/Interval;Ljdk/vm/ci/meta/AllocatableValue;)V
8: 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/lir/alloc/lsra/MoveResolver;
0 9 1 spillCandidate I
2 9 2 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
3 9 3 spillSlot Ljdk/vm/ci/meta/AllocatableValue;
MethodParameters:
Name Flags
spillCandidate
protected void spillInterval(int, org.graalvm.compiler.lir.alloc.lsra.Interval, jdk.vm.ci.meta.AllocatableValue);
descriptor: (ILorg/graalvm/compiler/lir/alloc/lsra/Interval;Ljdk/vm/ci/meta/AllocatableValue;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
aload 2
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.createDerivedInterval:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 4
start local 4 2: aload 4
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setKind:(Ljdk/vm/ci/meta/ValueKind;)V
3: aload 4
iconst_1
iconst_2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.addRange:(II)V
4: aload 4
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 5
start local 5 6: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 8
7: aload 5
ldc "created new Interval for spilling: %s"
aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
8: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext
StackMap stack:
aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.blockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
9: aload 0
aload 2
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertMove:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 6
start local 6 10: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
aload 4
invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
11: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.unblockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
12: aload 6
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.res:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
ldc "MoveResolver break cycle"
invokevirtual org.graalvm.compiler.lir.LIRInstruction.setComment:(Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Ljava/lang/String;)V
13: return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 14 1 spillCandidate I
0 14 2 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 14 3 spillSlot Ljdk/vm/ci/meta/AllocatableValue;
2 14 4 spillInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
6 14 5 debug Lorg/graalvm/compiler/debug/DebugContext;
10 14 6 move Lorg/graalvm/compiler/lir/LIRInstruction;
MethodParameters:
Name Flags
spillCandidate
fromInterval
spillSlot
private void printMapping();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: aload 1
ldc "Mapping"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 5
start local 5 4: goto 14
5: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 6
start local 6 6: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 7
start local 7 7: aload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 9
start local 9 8: aload 6
ifnonnull 11
9: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 8
start local 8 10: goto 12
end local 8 11: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.alloc.lsra.Interval top jdk.vm.ci.meta.Value
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 8
start local 8 12: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.String jdk.vm.ci.meta.Value
StackMap stack:
aload 1
ldc "move %s <- %s"
aload 8
aload 9
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 9 end local 8 end local 7 end local 6 13: iinc 5 -1
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
14: iload 5
ifge 5
end local 5 15: aload 4
ifnull 21
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 21
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
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/alloc/lsra/MoveResolver;
1 22 1 debug Lorg/graalvm/compiler/debug/DebugContext;
3 17 4 indent Lorg/graalvm/compiler/debug/Indent;
4 15 5 i I
6 13 6 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
7 13 7 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
10 11 8 from Ljava/lang/String;
12 13 8 from Ljava/lang/String;
8 13 9 to Ljdk/vm/ci/meta/Value;
Exception table:
from to target type
3 15 16 any
2 18 18 any
void setInsertPosition(java.util.ArrayList<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/ArrayList;I)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
iconst_m1
if_icmpeq 1
new java.lang.AssertionError
dup
ldc "use moveInsertPosition instead of setInsertPosition when data already set"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.createInsertionBuffer:(Ljava/util/ArrayList;)V
2: aload 0
iload 2
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 4 1 insertList Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
0 4 2 insertIdx I
Signature: (Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;I)V
MethodParameters:
Name Flags
insertList
insertIdx
void moveInsertPosition(java.util.ArrayList<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/ArrayList;I)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
ifnull 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
aload 1
if_acmpne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
iload 2
if_icmpeq 2
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.resolveMappings:()V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
aload 1
if_acmpeq 5
3: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.appendInsertionBuffer:()V
4: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.createInsertionBuffer:(Ljava/util/ArrayList;)V
5: StackMap locals:
StackMap stack:
aload 0
iload 2
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertIdx:I
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 7 1 newInsertList Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
0 7 2 newInsertIdx I
Signature: (Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;I)V
MethodParameters:
Name Flags
newInsertList
newInsertIdx
public void addMapping(org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 3
start local 3 1: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifeq 5
2: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 4
3: aload 3
ldc "no store to rematerializable interval %s needed"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
4: StackMap locals: org.graalvm.compiler.debug.DebugContext
StackMap stack:
return
5: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 9
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifeq 9
6: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.getMaterializedValue:()Ljdk/vm/ci/meta/Constant;
astore 4
start local 4 7: aload 0
aload 4
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.addMapping:(Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
8: return
end local 4 9: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 11
10: aload 3
ldc "add move mapping from %s to %s"
aload 1
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
11: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 12
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ifeq 12
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "from and to interval equal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 16
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisterAllocationConfig:()Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;)Z
ifne 16
new java.lang.AssertionError
dup
ldc "Kind mismatch: %s vs. %s, from=%s, to=%s"
iconst_4
anewarray java.lang.Object
dup
iconst_0
13: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_1
14: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_2
aload 1
aastore
dup
iconst_3
aload 2
aastore
15: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
16: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
aload 1
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
17: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
aconst_null
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
18: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
aload 2
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
19: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 20 1 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 20 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 20 3 debug Lorg/graalvm/compiler/debug/DebugContext;
7 9 4 rematValue Ljdk/vm/ci/meta/Constant;
MethodParameters:
Name Flags
fromInterval
toInterval
public void addMapping(jdk.vm.ci.meta.Constant, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 3
start local 3 1: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 3
2: aload 3
ldc "add move mapping from %s to %s"
aload 1
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
3: StackMap locals: org.graalvm.compiler.debug.DebugContext
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/ArrayList;
aconst_null
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
4: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/ArrayList;
aload 1
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/ArrayList;
aload 2
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
6: return
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/lir/alloc/lsra/MoveResolver;
0 7 1 fromOpr Ljdk/vm/ci/meta/Constant;
0 7 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 7 3 debug Lorg/graalvm/compiler/debug/DebugContext;
MethodParameters:
Name Flags
fromOpr
toInterval
void resolveAndAppendMoves();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.hasMappings:()Z
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.resolveMappings:()V
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.appendInsertionBuffer:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
}
SourceFile: "MoveResolver.java"
InnerClasses:
public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool