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.DebugCounter cycleBreakingSlotsAllocated;
descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
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.List<org.graalvm.compiler.lir.alloc.lsra.Interval> mappingFrom;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/graalvm/compiler/lir/alloc/lsra/Interval;>;
private final java.util.List<jdk.vm.ci.meta.Constant> mappingFromOpr;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljdk/vm/ci/meta/Constant;>;
private final java.util.List<org.graalvm.compiler.lir.alloc.lsra.Interval> mappingTo;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<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
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.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
putstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/DebugCounter;
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/List;
iload 1
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.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/List;
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/List;
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/List;
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: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 10 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/List;
invokeinterface java.util.List.size:()I
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/List;
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.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/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
ifnull 9
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 2
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.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/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
iload 2
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.size:()I
if_icmplt 15
22: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
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 java.util.HashSet
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 1
invokeinterface java.util.List.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;
invokevirtual java.util.HashSet.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/List;
invokeinterface java.util.List.size:()I
if_icmplt 25
31: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.HashSet.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/List;
iload 1
invokeinterface java.util.List.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;
invokevirtual java.util.HashSet.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/List;
invokeinterface java.util.List.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 Ljava/util/HashSet<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: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 7
3: StackMap locals: java.util.HashSet int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 2
invokeinterface java.util.List.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;
invokevirtual java.util.HashSet.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/List;
invokeinterface java.util.List.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/List;
iload 2
invokeinterface java.util.List.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;
invokevirtual java.util.HashSet.contains:(Ljava/lang/Object;)Z
ifeq 13
12: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 2
invokeinterface java.util.List.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/List;
iload 2
invokeinterface java.util.List.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/List;
invokeinterface java.util.List.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 Ljava/util/HashSet<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: ldc "block %s"
aload 2
invokestatic org.graalvm.compiler.debug.Debug.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: ldc "unblock %s"
aload 2
invokestatic org.graalvm.compiler.debug.Debug.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;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)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.List<org.graalvm.compiler.lir.LIRInstruction>);
descriptor: (Ljava/util/List;)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/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
Signature: (Ljava/util/List<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 void 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;)V
flags: (0x0002) ACC_PRIVATE
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 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;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)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
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 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;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
4: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 6
5: 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;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
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 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 7 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
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 void 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;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, 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 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 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 3: 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
4: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 6
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;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
6: StackMap locals: jdk.vm.ci.meta.AllocatableValue org.graalvm.compiler.lir.LIRInstruction
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 7 1 fromOpr Ljdk/vm/ci/meta/Constant;
0 7 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 7 3 toOpr Ljdk/vm/ci/meta/AllocatableValue;
3 7 4 move Lorg/graalvm/compiler/lir/LIRInstruction;
MethodParameters:
Name Flags
fromOpr
toInterval
private void resolveMappings();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=10, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: ldc "resolveMapping"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.verifyBeforeResolve:()Z
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 5
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.printMapping:()V
5: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 4
start local 4 6: goto 11
7: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 5
start local 5 8: aload 5
ifnull 10
9: aload 0
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.blockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
end local 5 10: StackMap locals:
StackMap stack:
iinc 4 -1
StackMap locals:
StackMap stack:
11: iload 4
ifge 7
12: aconst_null
astore 5
start local 5 13: goto 41
14: StackMap locals: java.util.ArrayList
StackMap stack:
iconst_0
istore 6
start local 6 15: iconst_m1
istore 7
start local 7 16: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 4
goto 38
17: StackMap locals: int int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 8
start local 8 18: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 9
start local 9 19: aload 0
aload 8
aload 9
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 34
20: aload 8
ifnull 24
21: aload 0
aload 8
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertMove:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
22: aload 0
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.unblockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
23: goto 25
24: 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/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.insertMove:(Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
25: StackMap locals:
StackMap stack:
aload 9
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 29
26: aload 5
ifnonnull 28
27: new java.util.ArrayList
dup
iconst_2
invokespecial java.util.ArrayList.<init>:(I)V
astore 5
28: StackMap locals:
StackMap stack:
aload 5
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
29: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 4
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
30: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/List;
iload 4
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
31: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
iload 4
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
32: iconst_1
istore 6
33: goto 37
StackMap locals:
StackMap stack:
34: aload 8
ifnull 37
aload 8
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 37
35: aload 5
ifnull 36
aload 5
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
ifne 37
36: StackMap locals:
StackMap stack:
iload 4
istore 7
end local 9 end local 8 37: StackMap locals:
StackMap stack:
iinc 4 -1
StackMap locals:
StackMap stack:
38: iload 4
ifge 17
39: iload 6
ifne 41
40: aload 0
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.breakCycle:(I)V
end local 7 end local 6 41: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifgt 14
end local 5 end local 4 42: aload 3
ifnull 48
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 48
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
43: astore 1
aload 3
ifnull 44
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
44: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
45: astore 2
aload 1
ifnonnull 46
aload 2
astore 1
goto 47
StackMap locals:
StackMap stack:
46: aload 1
aload 2
if_acmpeq 47
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
47: aload 1
athrow
48: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.multipleReadsAllowed:Z
49: getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 50
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.checkEmpty:()Z
ifne 50
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
50: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 51 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
2 44 3 indent Lorg/graalvm/compiler/debug/Indent;
6 42 4 i I
8 10 5 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
13 42 5 busySpillSlots Ljava/util/ArrayList<Ljdk/vm/ci/meta/AllocatableValue;>;
15 41 6 processedInterval Z
16 41 7 spillCandidate I
18 37 8 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
19 37 9 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
2 42 43 any
1 45 45 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/List;
iload 1
invokeinterface java.util.List.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/DebugCounter;
invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()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=5, 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/List;
iload 1
invokeinterface java.util.List.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: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 7
6: ldc "created new Interval for spilling: %s"
aload 4
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
7: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.blockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
8: 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;)V
9: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
iload 1
aload 4
invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
10: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.unblockRegisters:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
11: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 12 1 spillCandidate I
0 12 2 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 12 3 spillSlot Ljdk/vm/ci/meta/AllocatableValue;
2 12 4 spillInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
spillCandidate
fromInterval
spillSlot
private void printMapping();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=9, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: ldc "Mapping"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 4
start local 4 3: goto 13
4: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver 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/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 5
start local 5 5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
astore 6
start local 6 6: aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 8
start local 8 7: aload 5
ifnonnull 10
8: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 7
start local 7 9: goto 11
end local 7 10: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver 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 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 7
start local 7 11: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver 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:
ldc "move %s <- %s"
aload 7
aload 8
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 8 end local 7 end local 6 end local 5 12: iinc 4 -1
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
13: iload 4
ifge 4
end local 4 14: aload 3
ifnull 20
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 20
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
15: astore 1
aload 3
ifnull 16
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
16: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 2
aload 1
ifnonnull 18
aload 2
astore 1
goto 19
StackMap locals:
StackMap stack:
18: aload 1
aload 2
if_acmpeq 19
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 1
athrow
20: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
2 16 3 indent Lorg/graalvm/compiler/debug/Indent;
3 14 4 i I
5 12 5 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
6 12 6 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
9 10 7 from Ljava/lang/String;
11 12 7 from Ljava/lang/String;
7 12 8 to Ljdk/vm/ci/meta/Value;
Exception table:
from to target type
2 14 15 any
1 17 17 any
void setInsertPosition(java.util.List<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/List;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/List;)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/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
0 4 2 insertIdx I
Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;I)V
MethodParameters:
Name Flags
insertList
insertIdx
void moveInsertPosition(java.util.List<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/List;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/List;)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/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
0 7 2 newInsertIdx I
Signature: (Ljava/util/List<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=4, args_size=3
start local 0 start local 1 start local 2 0: 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 4
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifeq 4
1: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 3
2: ldc "no store to rematerializable interval %s needed"
aload 2
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
3: StackMap locals:
StackMap stack:
return
4: 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 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifeq 8
5: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.getMaterializedValue:()Ljdk/vm/ci/meta/Constant;
astore 3
start local 3 6: aload 0
aload 3
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.addMapping:(Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
7: return
end local 3 8: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 10
9: ldc "add move mapping from %s to %s"
aload 1
aload 2
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
10: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 11
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 11
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
11: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.MoveResolver.$assertionsDisabled:Z
ifne 14
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;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)Z
ifne 14
new java.lang.AssertionError
dup
ldc "Kind mismatch: %s vs. %s, from=%s, to=%s"
iconst_4
anewarray java.lang.Object
dup
iconst_0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_1
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
12: aload 2
aastore
13: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
15: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/List;
aconst_null
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
16: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
17: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 18 1 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 18 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
6 8 3 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=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 2
1: ldc "add move mapping from %s to %s"
aload 1
aload 2
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFrom:Ljava/util/List;
aconst_null
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingFromOpr:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
4: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.MoveResolver.mappingTo:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
5: 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 fromOpr Ljdk/vm/ci/meta/Constant;
0 6 2 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
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