class org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker extends org.graalvm.compiler.lir.alloc.lsra.IntervalWalker
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker
super_class: org.graalvm.compiler.lir.alloc.lsra.IntervalWalker
{
protected jdk.vm.ci.code.Register[] availableRegs;
descriptor: [Ljdk/vm/ci/code/Register;
flags: (0x0004) ACC_PROTECTED
protected final int[] usePos;
descriptor: [I
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected final int[] blockPos;
descriptor: [I
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected java.util.List<org.graalvm.compiler.lir.alloc.lsra.Interval>[] spillIntervals;
descriptor: [Ljava/util/List;
flags: (0x0004) ACC_PROTECTED
Signature: [Ljava/util/List<Lorg/graalvm/compiler/lir/alloc/lsra/Interval;>;
private org.graalvm.compiler.lir.alloc.lsra.MoveResolver moveResolver;
descriptor: Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
flags: (0x0002) ACC_PRIVATE
private int minReg;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int maxReg;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private static final java.util.List<org.graalvm.compiler.lir.alloc.lsra.Interval> EMPTY_LIST;
descriptor: Ljava/util/List;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/List<Lorg/graalvm/compiler/lir/alloc/lsra/Interval;>;
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$org$graalvm$compiler$lir$alloc$lsra$Interval$SpillState;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
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.LinearScanWalker.$assertionsDisabled:Z
3: new java.util.ArrayList
dup
iconst_0
invokespecial java.util.ArrayList.<init>:(I)V
putstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.EMPTY_LIST:Ljava/util/List;
return
LocalVariableTable:
Start End Slot Name Signature
int blockCount();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockCount:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> blockAt(int);
descriptor: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockAt:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 1 1 idx I
Signature: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
idx
org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> blockOfOpWithId(int);
descriptor: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 1 1 opId I
Signature: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
opId
void <init>(org.graalvm.compiler.lir.alloc.lsra.LinearScan, org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
invokespecial org.graalvm.compiler.lir.alloc.lsra.IntervalWalker.<init>:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
1: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.createMoveResolver:()Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
putfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
2: 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
anewarray java.util.List
invokestatic org.graalvm.compiler.core.common.util.Util.uncheckedCast:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List[]
putfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
3: iconst_0
istore 4
start local 4 4: goto 7
5: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.LinearScan org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.alloc.lsra.Interval int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 4
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.EMPTY_LIST:Ljava/util/List;
aastore
6: iinc 4 1
StackMap locals:
StackMap stack:
7: iload 4
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
if_icmplt 5
end local 4 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.LinearScanWalker.usePos:[I
9: 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.LinearScanWalker.blockPos:[I
10: return
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/LinearScanWalker;
0 11 1 allocator Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
0 11 2 unhandledFixedFirst Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 11 3 unhandledAnyFirst Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
4 8 4 i I
MethodParameters:
Name Flags
allocator
unhandledFixedFirst
unhandledAnyFirst
void initUseLists(boolean);
descriptor: (Z)V
flags: (0x0000)
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 8
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker int top int int jdk.vm.ci.code.Register[]
StackMap stack:
1: aload 5
iload 3
aaload
astore 2
start local 2 2: aload 2
getfield jdk.vm.ci.code.Register.number:I
istore 6
start local 6 3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 6
ldc 2147483647
iastore
4: iload 1
ifne 7
5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
iload 6
ldc 2147483647
iastore
6: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 6
aaload
invokeinterface java.util.List.clear:()V
end local 6 end local 2 7: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
8: iload 3
iload 4
if_icmplt 1
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 10 1 onlyProcessUsePos Z
2 7 2 register Ljdk/vm/ci/code/Register;
3 7 6 i I
MethodParameters:
Name Flags
onlyProcessUsePos
int maxRegisterNumber();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.maxReg:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
int minRegisterNumber();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.minReg:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
boolean isRegisterInRange(int);
descriptor: (I)Z
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.minRegisterNumber:()I
if_icmplt 1
iload 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.maxRegisterNumber:()I
if_icmpgt 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 2 1 reg I
MethodParameters:
Name Flags
reg
void excludeFromUse(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=3, 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 2
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
istore 3
start local 3 2: aload 0
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.isRegisterInRange:(I)Z
ifeq 4
3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 3
iconst_0
iastore
4: StackMap locals: jdk.vm.ci.meta.Value int
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 5 1 i Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 5 2 location Ljdk/vm/ci/meta/Value;
2 5 3 i1 I
MethodParameters:
Name Flags
i
void setUsePos(org.graalvm.compiler.lir.alloc.lsra.Interval, int, boolean);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
flags: (0x0000)
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iconst_m1
if_icmpeq 12
1: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 2
iload 2
ifne 2
new java.lang.AssertionError
dup
ldc "must use excludeFromUse to set usePos to 0"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: 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.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
istore 4
start local 4 3: aload 0
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.isRegisterInRange:(I)Z
ifeq 12
4: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 4
iaload
iload 2
if_icmple 6
5: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 4
iload 2
iastore
6: StackMap locals: int
StackMap stack:
iload 3
ifne 12
7: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 4
aaload
astore 5
start local 5 8: aload 5
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.EMPTY_LIST:Ljava/util/List;
if_acmpne 11
9: new java.util.ArrayList
dup
iconst_2
invokespecial java.util.ArrayList.<init>:(I)V
astore 5
10: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 4
aload 5
aastore
11: StackMap locals: java.util.List
StackMap stack:
aload 5
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 5 end local 4 12: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 13 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 13 2 usePos I
0 13 3 onlyProcessUsePos Z
3 12 4 i I
8 12 5 list Ljava/util/List<Lorg/graalvm/compiler/lir/alloc/lsra/Interval;>;
MethodParameters:
Name Flags
interval
usePos
onlyProcessUsePos
void setBlockPos(org.graalvm.compiler.lir.alloc.lsra.Interval, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: iload 2
iconst_m1
if_icmpeq 7
1: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
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
istore 3
start local 3 2: aload 0
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.isRegisterInRange:(I)Z
ifeq 7
3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
iload 3
iaload
iload 2
if_icmple 5
4: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
iload 3
iload 2
iastore
5: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 3
iaload
iload 2
if_icmple 7
6: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 3
iload 2
iastore
end local 3 7: StackMap locals:
StackMap stack:
return
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/LinearScanWalker;
0 8 1 i Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 8 2 blockPos I
2 7 3 reg I
MethodParameters:
Name Flags
i
blockPos
void freeExcludeActiveFixed();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 1
start local 1 1: goto 5
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
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 3
new java.lang.AssertionError
dup
ldc "active interval must have a register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.excludeFromUse:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
4: aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 1
5: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
1 7 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
void freeExcludeActiveAny();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 1
start local 1 1: goto 5
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
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 3
new java.lang.AssertionError
dup
ldc "active interval must have a register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.excludeFromUse:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
4: aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 1
5: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
1 7 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
void freeCollectInactiveFixed(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.inactiveLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 1: goto 8
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentFrom:()I
if_icmpgt 6
3: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
iconst_m1
if_icmpeq 4
new java.lang.AssertionError
dup
ldc "must not intersect"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentFrom:()I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
5: goto 7
6: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
7: StackMap locals:
StackMap stack:
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
8: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 10 1 current Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 10 2 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
current
void freeCollectInactiveAny(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.inactiveLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 2
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
3: aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
4: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
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/LinearScanWalker;
0 6 1 current Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 6 2 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
current
void freeCollectUnhandled(org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
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.LinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 3
start local 3 1: goto 6
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 3
aload 3
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.intersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
3: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
if_acmpne 5
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpgt 5
4: aload 0
aload 3
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
5: StackMap locals:
StackMap stack:
aload 3
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 3
6: StackMap locals:
StackMap stack:
aload 3
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
7: return
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/LinearScanWalker;
0 8 1 kind Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
0 8 2 current Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 8 3 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
kind
current
void spillExcludeActiveFixed();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 1
start local 1 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.excludeFromUse:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
3: aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 1
4: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
1 6 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
void spillBlockUnhandledFixed(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 2
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.intersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setBlockPos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
3: aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
4: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
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/LinearScanWalker;
0 6 1 current Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 6 2 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
current
void spillBlockInactiveFixed(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.inactiveLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 1: goto 7
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentFrom:()I
if_icmple 5
3: aload 0
aload 2
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setBlockPos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
4: goto 6
5: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 6
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)I
iconst_m1
if_icmpeq 6
new java.lang.AssertionError
dup
ldc "invalid optimization: intervals intersect"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
7: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
8: return
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/LinearScanWalker;
0 9 1 current Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 9 2 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
current
void spillCollectActiveAny(org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
aload 2
aload 2
aload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
invokestatic java.lang.Math.min:(II)I
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
3: aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
4: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
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/LinearScanWalker;
0 6 1 registerPriority Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
1 6 2 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
registerPriority
void spillCollectInactiveAny(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.inactiveLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 1: goto 5
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentIntersects:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifeq 4
3: aload 0
aload 2
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
invokestatic java.lang.Math.min:(II)I
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IZ)V
4: StackMap locals:
StackMap stack:
aload 2
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
5: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpne 2
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/LinearScanWalker;
0 7 1 current Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 7 2 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
current
void insertMove(int, org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (ILorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=3, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iconst_1
iadd
bipush -2
iand
istore 4
start local 4 1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 5
start local 5 2: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 4
iload 4
ifle 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 4
iconst_2
isub
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
aload 5
if_acmpeq 4
StackMap locals: int org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
3: new java.lang.AssertionError
dup
ldc "cannot insert move at block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 5
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
astore 6
start local 6 5: iload 4
aload 6
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
isub
iconst_1
ishr
istore 7
start local 7 6: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 10
aload 6
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
iload 4
if_icmple 10
new java.lang.AssertionError
dup
ldc "error in calculation"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals: java.util.List int
StackMap stack:
iinc 7 1
8: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 10
iload 7
iflt 9
iload 7
aload 6
invokeinterface java.util.List.size:()I
if_icmplt 10
StackMap locals:
StackMap stack:
9: new java.lang.AssertionError
dup
ldc "index out of bounds"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
aload 6
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
iload 4
if_icmpne 7
11: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 13
iconst_1
iload 7
if_icmpgt 12
iload 7
aload 6
invokeinterface java.util.List.size:()I
if_icmplt 13
StackMap locals:
StackMap stack:
12: new java.lang.AssertionError
dup
ldc "index out of bounds"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
13: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 14
aload 6
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
iload 4
if_icmpeq 14
new java.lang.AssertionError
dup
ldc "error in calculation"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
aload 6
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.moveInsertPosition:(Ljava/util/List;I)V
15: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
aload 2
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.addMapping:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
16: return
end local 7 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 17 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 17 1 operandId I
0 17 2 srcIt Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 17 3 dstIt Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 17 4 opId I
2 17 5 opBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
5 17 6 instructions Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
6 17 7 index I
MethodParameters:
Name Flags
operandId
srcIt
dstIt
int findOptimalSplitPos(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, );
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;I)I
flags: (0x0000)
Code:
stack=3, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
istore 4
start local 4 1: aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
istore 5
start local 5 2: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 4
iload 4
iflt 3
iload 4
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockCount:()I
if_icmplt 4
StackMap locals: int int
StackMap stack:
3: new java.lang.AssertionError
dup
ldc "out of range"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 5
iflt 5
iload 5
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockCount:()I
if_icmplt 6
StackMap locals:
StackMap stack:
5: new java.lang.AssertionError
dup
ldc "out of range"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 7
iload 4
iload 5
if_icmplt 7
new java.lang.AssertionError
dup
ldc "must cross block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
iadd
istore 6
start local 6 8: iload 6
iload 3
if_icmple 10
9: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getFirstLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
istore 6
10: StackMap locals: int
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
istore 7
start local 7 11: iload 5
iconst_1
isub
istore 8
start local 8 12: goto 18
13: StackMap locals: int int
StackMap stack:
aload 0
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockAt:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 9
start local 9 14: aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
iload 7
if_icmpge 17
15: aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
istore 7
16: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
iadd
istore 6
end local 9 17: StackMap locals:
StackMap stack:
iinc 8 -1
StackMap locals:
StackMap stack:
18: iload 7
ifle 19
iload 8
iload 4
if_icmpge 13
end local 8 19: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 20
iload 6
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.maxOpId:()I
if_icmpgt 20
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 20
new java.lang.AssertionError
dup
ldc "algorithm must move split pos to block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
20: StackMap locals:
StackMap stack:
iload 6
ireturn
end local 7 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 21 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 21 1 minBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 21 2 maxBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 21 3 maxSplitPos I
1 21 4 fromBlockNr I
2 21 5 toBlockNr I
8 21 6 optimalSplitPos I
11 21 7 minLoopDepth I
12 19 8 i I
14 17 9 cur Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;I)I
MethodParameters:
Name Flags
minBlock
maxBlock
maxSplitPos
int findOptimalSplitPos(org.graalvm.compiler.lir.alloc.lsra.Interval, int, int, boolean);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IIZ)I
flags: (0x0000)
Code:
stack=4, locals=11, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: iconst_m1
istore 5
start local 5 1: iload 2
iload 3
if_icmpne 6
2: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 4
3: ldc "min-pos and max-pos are equal, no optimization possible"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
4: StackMap locals: int
StackMap stack:
iload 2
istore 5
5: goto 44
6: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 7
iload 2
iload 3
if_icmplt 7
new java.lang.AssertionError
dup
ldc "must be true then"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 8
iload 2
ifgt 8
new java.lang.AssertionError
dup
ldc "cannot access minSplitPos - 1 otherwise"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 2
iconst_1
isub
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 6
start local 6 9: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 3
iconst_1
isub
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 7
start local 7 10: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 11
aload 6
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
if_icmple 11
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 6
aload 7
if_acmpne 16
12: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 14
13: ldc "cannot move split pos to block boundary because minPos and maxPos are in same block"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
14: StackMap locals:
StackMap stack:
iload 3
istore 5
15: goto 44
16: StackMap locals:
StackMap stack:
aload 1
iload 3
iconst_1
isub
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.hasHoleBetween:(II)Z
ifeq 21
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 21
17: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 19
18: ldc "interval has hole just before maxSplitPos, so splitting at maxSplitPos"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
19: StackMap locals:
StackMap stack:
iload 3
istore 5
20: goto 44
21: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 23
22: ldc "moving split pos to optimal block boundary between block B%d and B%d"
aload 6
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;II)V
23: StackMap locals:
StackMap stack:
iload 4
ifeq 42
24: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
iadd
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.nextUsageExact:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
istore 8
start local 8 25: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 27
26: ldc "loop optimization: loop end found at pos %d"
iload 8
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
27: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 28
iload 8
iload 2
if_icmpgt 28
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
28: StackMap locals:
StackMap stack:
iload 8
iload 3
if_icmpge 42
29: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 9
start local 9 30: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 32
31: ldc "interval is used in loop that ends in block B%d, so trying to move maxBlock back from B%d to B%d"
aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;III)V
32: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 33
aload 9
aload 6
if_acmpne 33
new java.lang.AssertionError
dup
ldc "loopBlock and minBlock must be different because block boundary is needed between"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
33: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
iadd
istore 10
start local 10 34: aload 0
aload 6
aload 9
iload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;I)I
istore 5
35: iload 5
iload 10
if_icmpne 40
36: iconst_m1
istore 5
37: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 42
38: ldc "loop optimization not necessary"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
39: goto 42
40: StackMap locals: int
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 42
41: ldc "loop optimization successful"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
end local 10 end local 9 end local 8 42: StackMap locals:
StackMap stack:
iload 5
iconst_m1
if_icmpne 44
43: aload 0
aload 6
aload 7
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;I)I
istore 5
end local 7 end local 6 44: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 46
45: ldc "optimal split position: %d"
iload 5
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
46: StackMap locals:
StackMap stack:
iload 5
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 47 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 47 2 minSplitPos I
0 47 3 maxSplitPos I
0 47 4 doLoopOptimization Z
1 47 5 optimalSplitPos I
9 44 6 minBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
10 44 7 maxBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
25 42 8 loopEndPos I
30 42 9 loopBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
34 42 10 maxSpillPos I
MethodParameters:
Name Flags
interval
minSplitPos
maxSplitPos
doLoopOptimization
void splitBeforeUsage(org.graalvm.compiler.lir.alloc.lsra.Interval, int, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;II)V
flags: (0x0000)
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aconst_null
astore 4
aconst_null
astore 5
1: ldc "splitting interval %s between %d and %d"
aload 1
iload 2
iload 3
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;II)Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 2: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iload 2
if_icmplt 3
new java.lang.AssertionError
dup
ldc "cannot split at start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
iload 2
if_icmplt 4
new java.lang.AssertionError
dup
ldc "cannot split before current position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 5
iload 2
iload 3
if_icmple 5
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmple 6
new java.lang.AssertionError
dup
ldc "cannot split after end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 3
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IIZ)I
istore 7
start local 7 7: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 9
iload 2
iload 7
if_icmpgt 8
iload 7
iload 3
if_icmple 9
StackMap locals: int
StackMap stack:
8: new java.lang.AssertionError
dup
ldc "out of range"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 10
iload 7
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmple 10
new java.lang.AssertionError
dup
ldc "cannot split after end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 11
iload 7
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpgt 11
new java.lang.AssertionError
dup
ldc "cannot split at start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals:
StackMap stack:
iload 7
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmpne 16
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
ldc 2147483647
if_icmpne 16
12: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 14
13: ldc "no split necessary because optimal split position is at end of interval"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
14: StackMap locals:
StackMap stack:
aload 6
ifnull 15
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
15: StackMap locals:
StackMap stack:
return
16: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 17
aload 1
iload 7
iconst_1
isub
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.hasHoleBetween:(II)Z
ifne 17
iconst_1
goto 18
StackMap locals:
StackMap stack:
17: iconst_0
StackMap locals:
StackMap stack: int
18: istore 8
start local 8 19: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 21
20: iload 7
iconst_1
isub
iconst_1
ior
istore 7
21: StackMap locals: int
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 23
22: ldc "splitting at position %d"
iload 7
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
23: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 24
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 24
iload 7
iconst_1
iand
iconst_1
if_icmpeq 24
new java.lang.AssertionError
dup
ldc "split pos must be odd when not on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
24: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 25
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifeq 25
iload 7
iconst_1
iand
ifeq 25
new java.lang.AssertionError
dup
ldc "split pos must be even on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
25: StackMap locals:
StackMap stack:
aload 1
iload 7
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.split:(ILorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 9
start local 9 26: aload 9
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setInsertMoveWhenActivated:(Z)V
27: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 28
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
if_icmpge 28
new java.lang.AssertionError
dup
ldc "cannot append new interval before current walk position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
28: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.addToListSortedByStartAndUsePositions:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
29: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 36
30: ldc "left interval %s: %s"
iload 8
ifeq 31
ldc " "
goto 32
StackMap locals:
StackMap stack: java.lang.String
31: ldc ""
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack: java.lang.String java.lang.String
32: aload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.logString:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
33: ldc "right interval %s: %s"
iload 8
ifeq 34
ldc "(move)"
goto 35
StackMap locals:
StackMap stack: java.lang.String
34: ldc ""
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack: java.lang.String java.lang.String
35: aload 9
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.logString:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 9 end local 8 end local 7 36: StackMap locals:
StackMap stack:
aload 6
ifnull 42
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 42
StackMap locals:
StackMap stack: java.lang.Throwable
37: astore 4
aload 6
ifnull 38
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
38: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
39: astore 5
aload 4
ifnonnull 40
aload 5
astore 4
goto 41
StackMap locals:
StackMap stack:
40: aload 4
aload 5
if_acmpeq 41
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
41: aload 4
athrow
42: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 43 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 43 2 minSplitPos I
0 43 3 maxSplitPos I
2 38 6 indent Lorg/graalvm/compiler/debug/Indent;
7 36 7 optimalSplitPos I
19 36 8 moveNecessary Z
26 36 9 splitPart Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
2 14 37 any
16 36 37 any
1 15 39 any
16 39 39 any
MethodParameters:
Name Flags
interval
minSplitPos
maxSplitPos
void splitForSpilling(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=7, locals=13, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
istore 2
start local 2 1: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
istore 3
start local 3 2: iload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
if_icmpne 4
3: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
istore 3
4: StackMap locals: int int
StackMap stack:
iload 3
iconst_1
iadd
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
invokestatic java.lang.Math.max:(II)I
istore 4
start local 4 5: aconst_null
astore 5
aconst_null
astore 6
6: ldc "splitting and spilling interval %s between %d and %d"
aload 1
iload 4
iload 2
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;II)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 7: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 8
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.state:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$State.Active:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
if_acmpeq 8
new java.lang.AssertionError
dup
ldc "why spill interval that is not active?"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 9
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iload 4
if_icmple 9
new java.lang.AssertionError
dup
ldc "cannot split before start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 10
iload 4
iload 2
if_icmple 10
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 11
iload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmplt 11
new java.lang.AssertionError
dup
ldc "cannot split at end end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 12
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmplt 12
new java.lang.AssertionError
dup
ldc "interval must not end before current position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
iload 4
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpne 39
13: aconst_null
astore 8
aconst_null
astore 9
14: ldc "spilling entire interval because split pos is at beginning of interval (use positions: %d)"
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.usePosList:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval$UsePosList;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$UsePosList.size:()I
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 10
start local 10 15: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 18
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
if_icmpgt 18
new java.lang.AssertionError
dup
ldc "interval %s must not have use position before currentPosition %d"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
dup
iconst_1
16: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
17: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
18: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
19: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
20: aload 0
aload 1
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.changeSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
21: aload 1
astore 11
start local 11 22: goto 32
23: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 11
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.getSplitChildBeforeOpId:(I)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 11
24: aload 11
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 32
25: aload 11
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
ldc 2147483647
if_icmpne 31
26: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 28
27: ldc "kicking out interval %d out of its register because it is never used"
aload 11
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
28: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
29: aload 0
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
30: goto 32
31: StackMap locals:
StackMap stack:
aconst_null
astore 11
32: StackMap locals:
StackMap stack:
aload 11
ifnull 33
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitChild:()Z
ifne 23
end local 11 33: StackMap locals:
StackMap stack:
aload 10
ifnull 69
aload 10
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 69
StackMap locals:
StackMap stack: java.lang.Throwable
34: astore 8
aload 10
ifnull 35
aload 10
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 10 StackMap locals:
StackMap stack:
35: aload 8
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
36: astore 9
aload 8
ifnonnull 37
aload 9
astore 8
goto 38
StackMap locals:
StackMap stack:
37: aload 8
aload 9
if_acmpeq 38
aload 8
aload 9
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
38: aload 8
athrow
39: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 4
iload 2
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IIZ)I
istore 8
start local 8 40: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 42
iload 4
iload 8
if_icmpgt 41
iload 8
iload 2
if_icmple 42
StackMap locals: int
StackMap stack:
41: new java.lang.AssertionError
dup
ldc "out of range"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
42: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 43
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmplt 43
new java.lang.AssertionError
dup
ldc "cannot split at end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
43: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 44
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpge 44
new java.lang.AssertionError
dup
ldc "cannot split before start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
44: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 46
45: iload 8
iconst_1
isub
iconst_1
ior
istore 8
46: StackMap locals:
StackMap stack:
aconst_null
astore 9
aconst_null
astore 10
47: ldc "splitting at position %d"
iload 8
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 11
start local 11 48: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 49
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 49
iload 8
iconst_1
iand
iconst_1
if_icmpeq 49
new java.lang.AssertionError
dup
ldc "split pos must be odd when not on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
49: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 50
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifeq 50
iload 8
iconst_1
iand
ifeq 50
new java.lang.AssertionError
dup
ldc "split pos must be even on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
50: StackMap locals:
StackMap stack:
aload 1
iload 8
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.split:(ILorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 12
start local 12 51: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
52: aload 0
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
53: aload 0
aload 12
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.changeSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
54: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 58
55: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 57
56: ldc "inserting move from interval %d to %d"
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
aload 12
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;II)V
57: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
iload 8
aload 1
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.insertMove:(ILorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
58: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 59
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
aload 1
if_acmpeq 59
new java.lang.AssertionError
dup
ldc "overwriting wrong currentSplitChild"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
59: StackMap locals:
StackMap stack:
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.makeCurrentSplitChild:()V
60: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 63
61: ldc "left interval: %s"
aload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.logString:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
62: ldc "spilled interval : %s"
aload 12
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.logString:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
end local 12 63: StackMap locals:
StackMap stack:
aload 11
ifnull 69
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 69
StackMap locals:
StackMap stack: java.lang.Throwable
64: astore 9
aload 11
ifnull 65
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 11 StackMap locals:
StackMap stack:
65: aload 9
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
66: astore 10
aload 9
ifnonnull 67
aload 10
astore 9
goto 68
StackMap locals:
StackMap stack:
67: aload 9
aload 10
if_acmpeq 68
aload 9
aload 10
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
68: aload 9
athrow
end local 8 69: StackMap locals:
StackMap stack:
aload 7
ifnull 75
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 75
StackMap locals:
StackMap stack: java.lang.Throwable
70: astore 5
aload 7
ifnull 71
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
71: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
72: astore 6
aload 5
ifnonnull 73
aload 6
astore 5
goto 74
StackMap locals:
StackMap stack:
73: aload 5
aload 6
if_acmpeq 74
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
74: aload 5
athrow
75: StackMap locals:
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 76 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 76 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 76 2 maxSplitPos I
2 76 3 previousUsage I
5 76 4 minSplitPos I
7 71 7 indent Lorg/graalvm/compiler/debug/Indent;
15 35 10 indent2 Lorg/graalvm/compiler/debug/Indent;
22 33 11 parent Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
40 69 8 optimalSplitPos I
48 65 11 indent2 Lorg/graalvm/compiler/debug/Indent;
51 63 12 spilledPart Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
15 33 34 any
14 36 36 any
48 63 64 any
47 66 66 any
7 69 70 any
6 72 72 any
MethodParameters:
Name Flags
interval
private void changeSpillState(org.graalvm.compiler.lir.alloc.lsra.Interval, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: invokestatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$SWITCH_TABLE$org$graalvm$compiler$lir$alloc$lsra$Interval$SpillState:()[I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillState:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
iaload
tableswitch { // 1 - 7
1: 16
2: 1
3: 11
4: 16
5: 16
6: 16
7: 16
default: 17
}
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillDefinitionPos:()I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
istore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
istore 4
start local 4 3: iload 3
iload 4
if_icmpge 9
4: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScan$Options.LIROptLSRAOptimizeSpillPosition:Lorg/graalvm/compiler/options/OptionValue;
invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 7
5: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.SpillInDominator:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;)V
6: goto 18
7: StackMap locals: int int
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.StoreAtDefinition:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;)V
8: goto 18
9: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.OneSpillStore:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;)V
10: goto 18
end local 4 end local 3 11: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScan$Options.LIROptLSRAOptimizeSpillPosition:Lorg/graalvm/compiler/options/OptionValue;
invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 14
12: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.SpillInDominator:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;)V
13: goto 18
14: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.StoreAtDefinition:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;)V
15: goto 18
16: StackMap locals:
StackMap stack:
goto 18
17: StackMap locals:
StackMap stack:
ldc "other states not allowed at this time"
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
18: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 19 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 19 2 spillPos I
2 11 3 defLoopDepth I
3 11 4 spillLoopDepth I
MethodParameters:
Name Flags
interval
spillPos
protected void handleSpillSlot(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 1
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifne 2
aload 1
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
ifne 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "interval not assigned to a stack slot "
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
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 3 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
interval
void splitStackInterval(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
iconst_1
iadd
istore 2
start local 2 1: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
invokestatic java.lang.Math.min:(II)I
istore 3
start local 3 2: aload 0
aload 1
iload 2
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;II)V
3: return
end local 3 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/LinearScanWalker;
0 4 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 4 2 minSplitPos I
2 4 3 maxSplitPos I
MethodParameters:
Name Flags
interval
void splitWhenPartialRegisterAvailable(org.graalvm.compiler.lir.alloc.lsra.Interval, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
invokestatic java.lang.Math.max:(II)I
istore 3
start local 3 1: aload 0
aload 1
iload 3
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;II)V
2: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 3 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 3 2 registerAvailableUntil I
1 3 3 minSplitPos I
MethodParameters:
Name Flags
interval
registerAvailableUntil
void splitAndSpillInterval(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.state:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$State.Active:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
if_acmpeq 1
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.state:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
if_acmpeq 1
new java.lang.AssertionError
dup
ldc "other states not allowed"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
istore 2
start local 2 2: aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.state:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
if_acmpne 6
3: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 1
iload 2
iconst_1
isub
iload 2
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.hasHoleBetween:(II)Z
ifne 4
new java.lang.AssertionError
dup
ldc "interval can not be inactive otherwise"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals: int
StackMap stack:
aload 0
aload 1
iload 2
iconst_1
iadd
iload 2
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;II)V
5: goto 11
6: StackMap locals:
StackMap stack:
iload 2
iconst_1
iadd
istore 3
start local 3 7: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
invokestatic java.lang.Math.min:(II)I
istore 4
start local 4 8: aload 0
aload 1
iload 3
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;II)V
9: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 10
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
ldc 2147483647
if_icmpeq 10
new java.lang.AssertionError
dup
ldc "the remaining part is spilled to stack and therefore has no register"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals: int int
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitForSpilling:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
end local 4 end local 3 11: StackMap locals:
StackMap stack:
return
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/LinearScanWalker;
0 12 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 12 2 currentPos I
7 11 3 minSplitPos I
8 11 4 maxSplitPos I
MethodParameters:
Name Flags
interval
boolean allocFreeRegister(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
flags: (0x0000)
Code:
stack=4, locals=19, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: ldc "trying to find free register for %s"
aload 1
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 2: aload 0
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.initUseLists:(Z)V
3: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeExcludeActiveFixed:()V
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeExcludeActiveAny:()V
5: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeCollectInactiveFixed:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
6: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeCollectInactiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
7: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 8
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpeq 8
new java.lang.AssertionError
dup
ldc "must not have unhandled fixed intervals because all fixed intervals have a use at position 0"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 23
9: aconst_null
astore 5
aconst_null
astore 6
10: ldc "state of registers:"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 11: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 16
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
12: aload 11
iload 9
aaload
astore 8
start local 8 13: aload 8
getfield jdk.vm.ci.code.Register.number:I
istore 12
start local 12 14: ldc "reg %d: usePos: %d"
aload 8
getfield jdk.vm.ci.code.Register.number:I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 12
iaload
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;II)V
end local 12 end local 8 15: iinc 9 1
StackMap locals:
StackMap stack:
16: iload 9
iload 10
if_icmplt 12
17: aload 7
ifnull 23
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 23
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
18: astore 5
aload 7
ifnull 19
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
19: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
20: astore 6
aload 5
ifnonnull 21
aload 6
astore 5
goto 22
StackMap locals:
StackMap stack:
21: aload 5
aload 6
if_acmpeq 22
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
22: aload 5
athrow
23: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 24: aload 1
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.locationHint:(Z)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 6
start local 6 25: aload 6
ifnull 29
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 29
aload 6
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 29
26: aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
astore 5
27: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 29
28: ldc "hint register %d from interval %s"
aload 5
getfield jdk.vm.ci.code.Register.number:I
aload 6
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;ILjava/lang/Object;)V
29: StackMap locals: jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 30
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 30
new java.lang.AssertionError
dup
ldc "register already assigned to interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
30: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
istore 7
start local 7 31: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
istore 8
start local 8 32: iconst_0
istore 9
start local 9 33: iconst_m1
istore 10
start local 10 34: aconst_null
astore 11
start local 11 35: aconst_null
astore 12
start local 12 36: aconst_null
astore 13
start local 13 37: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 17
arraylength
istore 16
iconst_0
istore 15
goto 48
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register top int int jdk.vm.ci.code.Register[]
StackMap stack:
38: aload 17
iload 15
aaload
astore 14
start local 14 39: aload 14
getfield jdk.vm.ci.code.Register.number:I
istore 18
start local 18 40: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 18
iaload
iload 8
if_icmplt 44
41: aload 12
ifnull 42
aload 14
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 42
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 18
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 12
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmpge 47
aload 12
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 47
42: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int
StackMap stack:
aload 14
astore 12
43: goto 47
StackMap locals:
StackMap stack:
44: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 18
iaload
iload 7
if_icmple 47
45: aload 13
ifnull 46
aload 14
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 46
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 18
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 13
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmple 47
aload 13
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 47
46: StackMap locals:
StackMap stack:
aload 14
astore 13
end local 18 end local 14 47: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 15 1
StackMap locals:
StackMap stack:
48: iload 15
iload 16
if_icmplt 38
49: aload 12
ifnull 52
50: aload 12
astore 11
51: goto 58
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register
StackMap stack:
52: aload 13
ifnull 56
53: iconst_1
istore 9
54: aload 13
astore 11
55: goto 58
56: StackMap locals:
StackMap stack:
aload 4
ifnull 57
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
57: StackMap locals:
StackMap stack:
iconst_0
ireturn
58: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 11
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 10
59: aload 1
aload 11
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual jdk.vm.ci.code.Register.asValue:(Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/code/RegisterValue;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
60: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 62
61: ldc "selected register %d"
aload 11
getfield jdk.vm.ci.code.Register.number:I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
62: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 63
iload 10
ifgt 63
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
63: StackMap locals:
StackMap stack:
iload 9
ifeq 65
64: aload 0
aload 1
iload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
65: StackMap locals:
StackMap stack:
aload 4
ifnull 66
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
66: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
67: astore 2
68: aload 4
ifnull 69
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
69: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
70: astore 3
aload 2
ifnonnull 71
aload 3
astore 2
goto 72
StackMap locals:
StackMap stack:
71: aload 2
aload 3
if_acmpeq 72
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
72: aload 2
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 73 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 73 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 69 4 indent Lorg/graalvm/compiler/debug/Indent;
11 19 7 indent2 Lorg/graalvm/compiler/debug/Indent;
13 15 8 register Ljdk/vm/ci/code/Register;
14 15 12 i I
24 67 5 hint Ljdk/vm/ci/code/Register;
25 67 6 locationHint Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
31 67 7 regNeededUntil I
32 67 8 intervalTo I
33 67 9 needSplit Z
34 67 10 splitPos I
35 67 11 reg Ljdk/vm/ci/code/Register;
36 67 12 minFullReg Ljdk/vm/ci/code/Register;
37 67 13 maxPartialReg Ljdk/vm/ci/code/Register;
39 47 14 availableReg Ljdk/vm/ci/code/Register;
40 47 18 number I
Exception table:
from to target type
11 17 18 any
10 20 20 any
2 56 67 any
58 65 67 any
1 57 70 any
58 66 70 any
67 70 70 any
MethodParameters:
Name Flags
interval
void splitAndSpillIntersectingIntervals(jdk.vm.ci.code.Register);
descriptor: (Ljdk/vm/ci/code/Register;)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 1
ifnonnull 1
new java.lang.AssertionError
dup
ldc "no register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 2: goto 7
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
aload 1
getfield jdk.vm.ci.code.Register.number:I
aaload
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 0
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.removeFromList:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
5: aload 0
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitAndSpillInterval:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
end local 3 6: iinc 2 1
StackMap locals:
StackMap stack:
7: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
aload 1
getfield jdk.vm.ci.code.Register.number:I
aaload
invokeinterface java.util.List.size:()I
if_icmplt 3
end local 2 8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 9 1 reg Ljdk/vm/ci/code/Register;
2 8 2 i I
4 6 3 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
reg
void allocLockedRegister(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=17, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: ldc "alloc locked register: need to split and spill to get register for %s"
aload 1
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 2: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
istore 5
start local 5 3: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
istore 6
start local 6 4: iload 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
invokestatic java.lang.Math.min:(II)I
istore 7
start local 7 5: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
istore 8
start local 8 6: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 8
iload 7
iflt 7
iload 7
ldc 2147483647
if_icmplt 8
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int
StackMap stack:
7: new java.lang.AssertionError
dup
ldc "interval has no use"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
astore 11
start local 11 9: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int top top org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority
StackMap stack:
aload 0
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.initUseLists:(Z)V
10: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillExcludeActiveFixed:()V
11: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 12
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval.EndMarker:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
if_acmpeq 12
new java.lang.AssertionError
dup
ldc "must not have unhandled fixed intervals because all fixed intervals have a use at position 0"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillBlockInactiveFixed:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
13: aload 0
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillCollectActiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)V
14: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillCollectInactiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
15: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 17
16: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.printRegisterState:()V
17: StackMap locals:
StackMap stack:
aconst_null
astore 9
start local 9 18: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 19
aload 1
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 19
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
goto 20
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int jdk.vm.ci.code.Register top org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority
StackMap stack:
19: aconst_null
StackMap locals:
StackMap stack: jdk.vm.ci.code.Register
20: astore 10
start local 10 21: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 15
arraylength
istore 14
iconst_0
istore 13
goto 29
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority top int int jdk.vm.ci.code.Register[]
StackMap stack:
22: aload 15
iload 13
aaload
astore 12
start local 12 23: aload 12
getfield jdk.vm.ci.code.Register.number:I
istore 16
start local 16 24: aload 12
aload 10
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 28
25: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 16
iaload
iload 7
if_icmple 28
26: aload 9
ifnull 27
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 16
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmple 28
27: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int
StackMap stack:
aload 12
astore 9
end local 16 end local 12 28: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
29: iload 13
iload 14
if_icmplt 22
30: aload 9
ifnonnull 31
iconst_0
goto 32
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority
StackMap stack:
31: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
StackMap locals:
StackMap stack: int
32: istore 12
start local 12 33: iload 12
iload 6
if_icmpgt 50
34: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 36
35: ldc "able to spill current interval. firstUsage(register): %d, usePos: %d"
iload 5
iload 12
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;II)V
36: StackMap locals: int
StackMap stack:
iload 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
if_icmpgt 45
37: aload 11
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.equals:(Ljava/lang/Object;)Z
ifeq 40
38: ldc "retry with register priority must have register"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
39: goto 48
40: StackMap locals:
StackMap stack:
aload 1
iload 5
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
invokestatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.generateOutOfRegErrorMsg:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I[Ljdk/vm/ci/code/Register;)Ljava/lang/String;
astore 13
start local 13 41: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
42: iconst_2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 13
invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;)V
43: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 13
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.printIntervals:(Ljava/lang/String;)V
44: new org.graalvm.compiler.lir.alloc.OutOfRegistersException
dup
ldc "LinearScan: no register found"
aload 13
invokespecial org.graalvm.compiler.lir.alloc.OutOfRegistersException.<init>:(Ljava/lang/String;Ljava/lang/String;)V
athrow
end local 13 45: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitAndSpillInterval:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
46: aload 4
ifnull 47
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
47: StackMap locals:
StackMap stack:
return
end local 12 48: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
astore 11
end local 10 end local 9 49: goto 9
end local 11 start local 9 start local 10 50: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
iload 8
if_icmpgt 51
iconst_1
goto 52
StackMap locals:
StackMap stack:
51: iconst_0
StackMap locals:
StackMap stack: int
52: istore 11
start local 11 53: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 12
start local 12 54: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 56
55: ldc "decided to use register %d"
aload 9
getfield jdk.vm.ci.code.Register.number:I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
56: StackMap locals: int int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 57
iload 12
ifgt 57
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
57: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 58
iload 11
ifne 58
iload 12
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpgt 58
new java.lang.AssertionError
dup
ldc "splitting interval at from"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
58: StackMap locals:
StackMap stack:
aload 1
aload 9
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual jdk.vm.ci.code.Register.asValue:(Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/code/RegisterValue;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
59: iload 11
ifeq 61
60: aload 0
aload 1
iload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
61: StackMap locals:
StackMap stack:
aload 0
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitAndSpillIntersectingIntervals:(Ljdk/vm/ci/code/Register;)V
62: aload 4
ifnull 63
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
63: StackMap locals:
StackMap stack:
return
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
64: astore 2
65: aload 4
ifnull 66
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
66: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
67: astore 3
aload 2
ifnonnull 68
aload 3
astore 2
goto 69
StackMap locals:
StackMap stack:
68: aload 2
aload 3
if_acmpeq 69
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
69: aload 2
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 70 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 70 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 66 4 indent Lorg/graalvm/compiler/debug/Indent;
3 64 5 firstUsage I
4 64 6 firstShouldHaveUsage I
5 64 7 regNeededUntil I
6 64 8 intervalTo I
18 49 9 reg Ljdk/vm/ci/code/Register;
50 64 9 reg Ljdk/vm/ci/code/Register;
21 49 10 ignore Ljdk/vm/ci/code/Register;
50 64 10 ignore Ljdk/vm/ci/code/Register;
9 50 11 registerPriority Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
23 28 12 availableReg Ljdk/vm/ci/code/Register;
24 28 16 number I
33 48 12 regUsePos I
41 45 13 description Ljava/lang/String;
53 64 11 needSplit Z
54 64 12 splitPos I
Exception table:
from to target type
2 46 64 any
48 62 64 any
1 47 67 any
48 63 67 any
64 67 67 any
MethodParameters:
Name Flags
interval
private static java.lang.String generateOutOfRegErrorMsg(org.graalvm.compiler.lir.alloc.lsra.Interval, int, jdk.vm.ci.code.Register[]);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I[Ljdk/vm/ci/code/Register;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: new java.lang.StringBuilder
dup
ldc "Cannot spill interval ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ") that is used in first instruction (possible reason: no register found) firstUsage="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
1: ldc ", interval.from()="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "; already used candidates: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 3 1 firstUsage I
0 3 2 availableRegs [Ljdk/vm/ci/code/Register;
MethodParameters:
Name Flags
interval
firstUsage
availableRegs
void printRegisterState();
descriptor: ()V
flags: (0x0000)
Code:
stack=5, locals=13, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: ldc "state of registers:"
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.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 19
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
3: aload 7
iload 5
aaload
astore 4
start local 4 4: aload 4
getfield jdk.vm.ci.code.Register.number:I
istore 8
start local 8 5: aconst_null
astore 9
aconst_null
astore 10
6: ldc "reg %d: usePos: %d, blockPos: %d, intervals: "
iload 8
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 8
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
iload 8
iaload
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;III)Lorg/graalvm/compiler/debug/Indent;
astore 11
start local 11 7: iconst_0
istore 12
start local 12 8: goto 11
9: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
ldc "%s "
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 8
aaload
iload 12
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
10: iinc 12 1
StackMap locals:
StackMap stack:
11: iload 12
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 8
aaload
invokeinterface java.util.List.size:()I
if_icmplt 9
end local 12 12: aload 11
ifnull 18
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 18
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
13: astore 9
aload 11
ifnull 14
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 11 StackMap locals:
StackMap stack:
14: aload 9
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
15: astore 10
aload 9
ifnonnull 16
aload 10
astore 9
goto 17
StackMap locals:
StackMap stack:
16: aload 9
aload 10
if_acmpeq 17
aload 9
aload 10
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
17: aload 9
athrow
end local 8 end local 4 18: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
19: iload 5
iload 6
if_icmplt 3
20: aload 3
ifnull 26
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 26
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
21: astore 1
aload 3
ifnull 22
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
22: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
23: astore 2
aload 1
ifnonnull 24
aload 2
astore 1
goto 25
StackMap locals:
StackMap stack:
24: aload 1
aload 2
if_acmpeq 25
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
25: aload 1
athrow
26: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
2 22 3 indent2 Lorg/graalvm/compiler/debug/Indent;
4 18 4 reg Ljdk/vm/ci/code/Register;
5 18 8 i I
7 14 11 indent3 Lorg/graalvm/compiler/debug/Indent;
8 12 12 j I
Exception table:
from to target type
7 12 13 any
6 15 15 any
2 20 21 any
1 23 23 any
boolean noAllocationPossible(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
flags: (0x0000)
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.callKillsRegisters:()Z
ifeq 8
1: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
istore 2
start local 2 2: iload 2
invokestatic jdk.vm.ci.code.CodeUtil.isOdd:(I)Z
ifeq 8
3: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.maxOpId:()I
if_icmpge 8
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 2
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.hasCall:(I)Z
ifeq 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
iload 2
iconst_1
iadd
if_icmple 8
4: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 6
5: ldc "free register cannot be available because all registers blocked by following call"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
6: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 7
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocFreeRegister:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifeq 7
new java.lang.AssertionError
dup
ldc "found a register for this interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 8: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 9 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 8 2 pos I
MethodParameters:
Name Flags
interval
void initVarsForAlloc(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getRegisterAllocationConfig:()Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual jdk.vm.ci.meta.ValueKind.getPlatformKind:()Ljdk/vm/ci/meta/PlatformKind;
invokevirtual org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig.getAllocatableRegisters:(Ljdk/vm/ci/meta/PlatformKind;)Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig$AllocatableRegisters;
astore 2
start local 2 1: aload 0
aload 2
getfield org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig$AllocatableRegisters.allocatableRegisters:[Ljdk/vm/ci/code/Register;
putfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
2: aload 0
aload 2
getfield org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig$AllocatableRegisters.minRegisterNumber:I
putfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.minReg:I
3: aload 0
aload 2
getfield org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig$AllocatableRegisters.maxRegisterNumber:I
putfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.maxReg:I
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 5 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 5 2 allocatableRegisters Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig$AllocatableRegisters;
MethodParameters:
Name Flags
interval
static boolean isMove(org.graalvm.compiler.lir.LIRInstruction, org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
instanceof org.graalvm.compiler.lir.StandardOp$ValueMoveOp
ifeq 5
1: aload 0
checkcast org.graalvm.compiler.lir.StandardOp$ValueMoveOp
astore 3
start local 3 2: aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isVariable:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isVariable:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
3: aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 4
aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
aload 1
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 4
aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 4
aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()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 4
iconst_1
ireturn
StackMap locals: org.graalvm.compiler.lir.StandardOp$ValueMoveOp
StackMap stack:
4: iconst_0
ireturn
end local 3 5: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 op Lorg/graalvm/compiler/lir/LIRInstruction;
0 6 1 from Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 6 2 to Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 5 3 move Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
MethodParameters:
Name Flags
op
from
to
void combineSpilledIntervals(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitChild:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 1
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.locationHint:(Z)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 2
start local 2 3: aload 2
ifnonnull 5
4: return
5: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 6
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitParent:()Z
ifne 6
new java.lang.AssertionError
dup
ldc "register hint must be split parent"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillState:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
if_acmpne 7
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillState:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
if_acmpeq 8
7: StackMap locals:
StackMap stack:
return
8: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
istore 3
start local 3 9: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
istore 4
start local 4 10: iload 4
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.maxOpId:()I
if_icmpgt 11
iload 3
invokestatic jdk.vm.ci.code.CodeUtil.isOdd:(I)Z
ifne 11
iload 4
invokestatic jdk.vm.ci.code.CodeUtil.isOdd:(I)Z
ifeq 12
11: StackMap locals: int int
StackMap stack:
return
12: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
aload 2
aload 1
invokestatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.isMove:(Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifeq 13
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
aload 1
aload 2
invokestatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.isMove:(Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifne 14
13: StackMap locals:
StackMap stack:
return
14: StackMap locals:
StackMap stack:
aload 2
iload 3
getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.USE:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.getSplitChildAtOpId:(ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 5
start local 5 15: aload 2
iload 4
getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.DEF:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.getSplitChildAtOpId:(ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 6
start local 6 16: aload 5
aload 6
if_acmpeq 17
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
iload 3
if_icmpne 17
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iload 4
if_icmpeq 18
17: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
return
18: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 19
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 19
new java.lang.AssertionError
dup
ldc "must have register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
19: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 20
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 20
new java.lang.AssertionError
dup
ldc "must not have register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
20: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 21
aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
iload 3
if_icmpeq 21
new java.lang.AssertionError
dup
ldc "must have use position at begin of interval because of move"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
21: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 22
aload 6
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)I
iload 4
if_icmpeq 22
new java.lang.AssertionError
dup
ldc "must have use position at begin of interval because of move"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
22: StackMap locals:
StackMap stack:
aload 5
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 24
23: return
24: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 25
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 25
new java.lang.AssertionError
dup
ldc "must be set when part of interval was spilled"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
25: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setSpillSlot:(Ljdk/vm/ci/meta/AllocatableValue;)V
26: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.removeFirstUsePos:()V
27: aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.removeFirstUsePos:()V
28: 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 29 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 29 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
3 29 2 registerHint Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
9 29 3 beginPos I
10 29 4 endPos I
15 29 5 beginHint Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
16 29 6 endHint Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
interval
protected boolean activateCurrent(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: iconst_1
istore 2
start local 2 1: aconst_null
astore 3
aconst_null
astore 4
2: ldc "activating interval %s, splitParent: %d"
aload 1
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.splitParent:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;I)Lorg/graalvm/compiler/debug/Indent;
astore 5
start local 5 3: aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
astore 6
start local 6 4: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 10
aload 1
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 10
5: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 7
6: ldc "interval has spill slot assigned (method parameter) . split it before first use"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
7: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.meta.Value
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitStackInterval:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
8: iconst_0
istore 2
9: goto 19
10: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 19
11: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 13
12: ldc "normal allocation of register"
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;)V
13: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.combineSpilledIntervals:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
14: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.initVarsForAlloc:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
15: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.noAllocationPossible:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifne 16
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocFreeRegister:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifne 17
16: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocLockedRegister:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
17: 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.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifne 19
18: iconst_0
istore 2
19: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.insertMoveWhenActivated:()Z
ifeq 26
20: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 21
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitChild:()Z
ifne 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
21: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 22
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
ifnonnull 22
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
22: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 23
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
aload 6
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ifeq 23
new java.lang.AssertionError
dup
ldc "cannot insert move between same interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
23: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 25
24: ldc "Inserting move from interval %d to %d because insertMoveWhenActivated is set"
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;II)V
25: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.insertMove:(ILorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
26: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.makeCurrentSplitChild:()V
end local 6 27: aload 5
ifnull 33
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 33
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
28: astore 3
aload 5
ifnull 29
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 5 StackMap locals:
StackMap stack:
29: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
30: astore 4
aload 3
ifnonnull 31
aload 4
astore 3
goto 32
StackMap locals:
StackMap stack:
31: aload 3
aload 4
if_acmpeq 32
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
32: aload 3
athrow
33: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 34 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 34 2 result Z
3 29 5 indent Lorg/graalvm/compiler/debug/Indent;
4 27 6 operand Ljdk/vm/ci/meta/Value;
Exception table:
from to target type
3 27 28 any
2 30 30 any
MethodParameters:
Name Flags
interval
public void finishAllocation();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.resolveAndAppendMoves:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
static int[] $SWITCH_TABLE$org$graalvm$compiler$lir$alloc$lsra$Interval$SpillState();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$SWITCH_TABLE$org$graalvm$compiler$lir$alloc$lsra$Interval$SpillState:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.values:()[Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
arraylength
newarray 10
astore 0
2: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.NoDefinitionFound:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
iconst_1
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
bipush 7
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.NoSpillStore:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
iconst_2
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.OneSpillStore:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
iconst_3
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.SpillInDominator:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
iconst_4
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.StartInMemory:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
bipush 6
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.StoreAtDefinition:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState.ordinal:()I
iconst_5
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
dup
putstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$SWITCH_TABLE$org$graalvm$compiler$lir$alloc$lsra$Interval$SpillState:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
17 18 19 Class java.lang.NoSuchFieldError
20 21 22 Class java.lang.NoSuchFieldError
}
SourceFile: "LinearScanWalker.java"
InnerClasses:
public final AllocatableRegisters = org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig$AllocatableRegisters of org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig
public final OperandMode = org.graalvm.compiler.lir.LIRInstruction$OperandMode of org.graalvm.compiler.lir.LIRInstruction
public abstract ValueMoveOp = org.graalvm.compiler.lir.StandardOp$ValueMoveOp of org.graalvm.compiler.lir.StandardOp
final RegisterBinding = org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding of org.graalvm.compiler.lir.alloc.lsra.Interval
final RegisterBindingLists = org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists of org.graalvm.compiler.lir.alloc.lsra.Interval
public final RegisterPriority = org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority of org.graalvm.compiler.lir.alloc.lsra.Interval
public final SpillState = org.graalvm.compiler.lir.alloc.lsra.Interval$SpillState of org.graalvm.compiler.lir.alloc.lsra.Interval
final State = org.graalvm.compiler.lir.alloc.lsra.Interval$State of org.graalvm.compiler.lir.alloc.lsra.Interval
public final UsePosList = org.graalvm.compiler.lir.alloc.lsra.Interval$UsePosList of org.graalvm.compiler.lir.alloc.lsra.Interval
public Options = org.graalvm.compiler.lir.alloc.lsra.LinearScan$Options of org.graalvm.compiler.lir.alloc.lsra.LinearScan