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=1, 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: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 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
invokevirtual java.util.ArrayList.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
invokevirtual java.util.ArrayList.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.ArrayList 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
invokevirtual java.util.ArrayList.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
invokevirtual java.util.ArrayList.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
invokevirtual java.util.ArrayList.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
invokevirtual java.util.ArrayList.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/ArrayList;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/ArrayList<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=5, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 5
start local 5 1: iconst_m1
istore 6
start local 6 2: iload 2
iload 3
if_icmpne 7
3: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 5
4: aload 5
ldc "min-pos and max-pos are equal, no optimization possible"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
5: StackMap locals: org.graalvm.compiler.debug.DebugContext int
StackMap stack:
iload 2
istore 6
6: goto 45
7: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 8
iload 2
iload 3
if_icmplt 8
new java.lang.AssertionError
dup
ldc "must be true then"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 9
iload 2
ifgt 9
new java.lang.AssertionError
dup
ldc "cannot access minSplitPos - 1 otherwise"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: 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 7
start local 7 10: 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 8
start local 8 11: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 12
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
if_icmple 12
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 7
aload 8
if_acmpne 17
13: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 15
14: aload 5
ldc "cannot move split pos to block boundary because minPos and maxPos are in same block"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
15: StackMap locals:
StackMap stack:
iload 3
istore 6
16: goto 45
17: 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 22
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 22
18: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 20
19: aload 5
ldc "interval has hole just before maxSplitPos, so splitting at maxSplitPos"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
20: StackMap locals:
StackMap stack:
iload 3
istore 6
21: goto 45
22: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 24
23: aload 5
ldc "moving split pos to optimal block boundary between block B%d and B%d"
aload 7
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
24: StackMap locals:
StackMap stack:
iload 4
ifeq 43
25: 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 7
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 9
start local 9 26: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 28
27: aload 5
ldc "loop optimization: loop end found at pos %d"
iload 9
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
28: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 29
iload 9
iload 2
if_icmpgt 29
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
29: StackMap locals:
StackMap stack:
iload 9
iload 3
if_icmpge 43
30: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 10
start local 10 31: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 33
32: aload 5
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 10
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 10
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;III)V
33: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 34
aload 10
aload 7
if_acmpne 34
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
34: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
iadd
istore 11
start local 11 35: aload 0
aload 7
aload 10
iload 11
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 6
36: iload 6
iload 11
if_icmpne 41
37: iconst_m1
istore 6
38: aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 43
39: aload 5
ldc "loop optimization not necessary"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
40: goto 43
41: StackMap locals: int
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 43
42: aload 5
ldc "loop optimization successful"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
end local 11 end local 10 end local 9 43: StackMap locals:
StackMap stack:
iload 6
iconst_m1
if_icmpne 45
44: aload 0
aload 7
aload 8
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 6
end local 8 end local 7 45: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 47
46: aload 5
ldc "optimal split position: %d"
iload 6
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
47: StackMap locals:
StackMap stack:
iload 6
ireturn
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 48 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 48 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 48 2 minSplitPos I
0 48 3 maxSplitPos I
0 48 4 doLoopOptimization Z
1 48 5 debug Lorg/graalvm/compiler/debug/DebugContext;
2 48 6 optimalSplitPos I
10 45 7 minBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
11 45 8 maxBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
26 43 9 loopEndPos I
31 43 10 loopBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
35 43 11 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=11, args_size=4
start local 0 start local 1 start local 2 start local 3 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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 4
start local 4 1: aconst_null
astore 5
aconst_null
astore 6
2: aload 4
ldc "splitting interval %s between %d and %d"
aload 1
iload 2
iload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;II)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 3: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iload 2
if_icmplt 4
new java.lang.AssertionError
dup
ldc "cannot split at start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 5
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
iload 2
if_icmplt 5
new java.lang.AssertionError
dup
ldc "cannot split before current position"
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 2
iload 3
if_icmple 6
new java.lang.AssertionError
dup
ldc "invalid order"
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 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmple 7
new java.lang.AssertionError
dup
ldc "cannot split after end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: 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 8
start local 8 8: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 10
iload 2
iload 8
if_icmpgt 9
iload 8
iload 3
if_icmple 10
StackMap locals: int
StackMap stack:
9: new java.lang.AssertionError
dup
ldc "out of range"
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 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmple 11
new java.lang.AssertionError
dup
ldc "cannot split after 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
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpgt 12
new java.lang.AssertionError
dup
ldc "cannot split at start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmpne 17
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 17
13: aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 15
14: aload 4
ldc "no split necessary because optimal split position is at end of interval"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
15: StackMap locals:
StackMap stack:
aload 7
ifnull 16
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
16: StackMap locals:
StackMap stack:
return
17: 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 18
aload 1
iload 8
iconst_1
isub
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.hasHoleBetween:(II)Z
ifne 18
iconst_1
goto 19
StackMap locals:
StackMap stack:
18: iconst_0
StackMap locals:
StackMap stack: int
19: istore 9
start local 9 20: 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 22
21: iload 8
iconst_1
isub
iconst_1
ior
istore 8
22: StackMap locals: int
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 24
23: aload 4
ldc "splitting at position %d"
iload 8
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
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 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 25
iload 8
iconst_1
iand
iconst_1
if_icmpeq 25
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
25: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 26
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 26
iload 8
iconst_1
iand
ifeq 26
new java.lang.AssertionError
dup
ldc "split pos must be even on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
26: 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 10
start local 10 27: aload 10
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.setInsertMoveWhenActivated:(Z)V
28: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 29
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
if_icmpge 29
new java.lang.AssertionError
dup
ldc "cannot append new interval before current walk position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
29: 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 10
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
30: aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 37
31: aload 4
ldc "left interval %s: %s"
iload 9
ifeq 32
ldc " "
goto 33
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String
32: ldc ""
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String java.lang.String
33: 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;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
34: aload 4
ldc "right interval %s: %s"
iload 9
ifeq 35
ldc "(move)"
goto 36
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String
35: ldc ""
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String java.lang.String
36: aload 10
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;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 10 end local 9 end local 8 37: StackMap locals:
StackMap stack:
aload 7
ifnull 43
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 43
StackMap locals:
StackMap stack: java.lang.Throwable
38: astore 5
aload 7
ifnull 39
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
39: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
40: astore 6
aload 5
ifnonnull 41
aload 6
astore 5
goto 42
StackMap locals:
StackMap stack:
41: aload 5
aload 6
if_acmpeq 42
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
42: aload 5
athrow
43: 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 44 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 44 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 44 2 minSplitPos I
0 44 3 maxSplitPos I
1 44 4 debug Lorg/graalvm/compiler/debug/DebugContext;
3 39 7 indent Lorg/graalvm/compiler/debug/Indent;
8 37 8 optimalSplitPos I
20 37 9 moveNecessary Z
27 37 10 splitPart Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
3 15 38 any
17 37 38 any
2 16 40 any
17 40 40 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=14, 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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 2
start local 2 1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
istore 3
start local 3 2: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
istore 4
start local 4 3: iload 4
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
if_icmpne 5
4: 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.previousUsage:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;I)I
istore 4
5: StackMap locals: org.graalvm.compiler.debug.DebugContext int int
StackMap stack:
iload 4
iconst_1
iadd
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
invokestatic java.lang.Math.max:(II)I
istore 5
start local 5 6: aconst_null
astore 6
aconst_null
astore 7
7: aload 2
ldc "splitting and spilling interval %s between %d and %d"
aload 1
iload 5
iload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;II)Lorg/graalvm/compiler/debug/Indent;
astore 8
start local 8 8: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 9
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 9
new java.lang.AssertionError
dup
ldc "why spill interval that is not active?"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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 10
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iload 5
if_icmple 10
new java.lang.AssertionError
dup
ldc "cannot split before start 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 5
iload 3
if_icmple 11
new java.lang.AssertionError
dup
ldc "invalid order"
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
iload 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmplt 12
new java.lang.AssertionError
dup
ldc "cannot split at end end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 13
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 13
new java.lang.AssertionError
dup
ldc "interval must not end before current position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
13: StackMap locals:
StackMap stack:
iload 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpne 40
14: aconst_null
astore 9
aconst_null
astore 10
15: aload 2
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
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 11
start local 11 16: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 19
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 19
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
17: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.currentPosition:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
18: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
19: 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
20: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
21: aload 0
aload 1
iload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.changeSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
22: aload 1
astore 12
start local 12 23: goto 33
24: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 12
aload 12
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 12
25: aload 12
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 33
26: aload 12
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 32
27: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 29
28: aload 2
ldc "kicking out interval %d out of its register because it is never used"
aload 12
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
29: StackMap locals:
StackMap stack:
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
30: aload 0
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
31: goto 33
32: StackMap locals:
StackMap stack:
aconst_null
astore 12
33: StackMap locals:
StackMap stack:
aload 12
ifnull 34
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitChild:()Z
ifne 24
end local 12 34: StackMap locals:
StackMap stack:
aload 11
ifnull 70
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 70
StackMap locals:
StackMap stack: java.lang.Throwable
35: astore 9
aload 11
ifnull 36
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 11 StackMap locals:
StackMap stack:
36: aload 9
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
37: astore 10
aload 9
ifnonnull 38
aload 10
astore 9
goto 39
StackMap locals:
StackMap stack:
38: aload 9
aload 10
if_acmpeq 39
aload 9
aload 10
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
39: aload 9
athrow
40: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 5
iload 3
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;IIZ)I
istore 9
start local 9 41: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 43
iload 5
iload 9
if_icmpgt 42
iload 9
iload 3
if_icmple 43
StackMap locals: int
StackMap stack:
42: new java.lang.AssertionError
dup
ldc "out of range"
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 9
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmplt 44
new java.lang.AssertionError
dup
ldc "cannot split at end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
44: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 45
iload 9
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpge 45
new java.lang.AssertionError
dup
ldc "cannot split before start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
45: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 47
46: iload 9
iconst_1
isub
iconst_1
ior
istore 9
47: StackMap locals:
StackMap stack:
aconst_null
astore 10
aconst_null
astore 11
48: aload 2
ldc "splitting at position %d"
iload 9
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 12
start local 12 49: 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 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 50
iload 9
iconst_1
iand
iconst_1
if_icmpeq 50
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
50: 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 51
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifeq 51
iload 9
iconst_1
iand
ifeq 51
new java.lang.AssertionError
dup
ldc "split pos must be even on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
51: StackMap locals:
StackMap stack:
aload 1
iload 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.split:(ILorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 13
start local 13 52: 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.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
53: aload 0
aload 13
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
54: aload 0
aload 13
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.changeSpillState:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
55: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifne 59
56: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 58
57: aload 2
ldc "inserting move from interval %d to %d"
aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
aload 13
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
58: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
iload 9
aload 1
aload 13
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.insertMove:(ILorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
59: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 60
aload 13
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
aload 1
if_acmpeq 60
new java.lang.AssertionError
dup
ldc "overwriting wrong currentSplitChild"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
60: StackMap locals:
StackMap stack:
aload 13
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.makeCurrentSplitChild:()V
61: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 64
62: aload 2
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;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
63: aload 2
ldc "spilled interval : %s"
aload 13
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;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
end local 13 64: StackMap locals:
StackMap stack:
aload 12
ifnull 70
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 70
StackMap locals:
StackMap stack: java.lang.Throwable
65: astore 10
aload 12
ifnull 66
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 12 StackMap locals:
StackMap stack:
66: aload 10
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
67: astore 11
aload 10
ifnonnull 68
aload 11
astore 10
goto 69
StackMap locals:
StackMap stack:
68: aload 10
aload 11
if_acmpeq 69
aload 10
aload 11
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
69: aload 10
athrow
end local 9 70: StackMap locals:
StackMap stack:
aload 8
ifnull 76
aload 8
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 76
StackMap locals:
StackMap stack: java.lang.Throwable
71: astore 6
aload 8
ifnull 72
aload 8
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 8 StackMap locals:
StackMap stack:
72: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
73: astore 7
aload 6
ifnonnull 74
aload 7
astore 6
goto 75
StackMap locals:
StackMap stack:
74: aload 6
aload 7
if_acmpeq 75
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
75: aload 6
athrow
76: StackMap locals:
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 77 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 77 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 77 2 debug Lorg/graalvm/compiler/debug/DebugContext;
2 77 3 maxSplitPos I
3 77 4 previousUsage I
6 77 5 minSplitPos I
8 72 8 indent Lorg/graalvm/compiler/debug/Indent;
16 36 11 indent2 Lorg/graalvm/compiler/debug/Indent;
23 34 12 parent Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
41 70 9 optimalSplitPos I
49 66 12 indent2 Lorg/graalvm/compiler/debug/Indent;
52 64 13 spilledPart Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
16 34 35 any
15 37 37 any
49 64 65 any
48 67 67 any
8 70 71 any
7 73 73 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: 19
2: 1
3: 11
4: 19
5: 19
6: 19
7: 19
default: 20
}
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/OptionKey;
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.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
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 21
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 21
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 21
end local 4 end local 3 11: 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 12: 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 13: iload 3
iload 4
if_icmpgt 21
14: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScan$Options.LIROptLSRAOptimizeSpillPosition:Lorg/graalvm/compiler/options/OptionKey;
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.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 17
15: 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
16: goto 21
17: 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
18: goto 21
end local 4 end local 3 19: StackMap locals:
StackMap stack:
goto 21
20: 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
21: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 22 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 22 2 spillPos I
2 11 3 defLoopDepth I
3 11 4 spillLoopDepth I
12 19 3 defLoopDepth I
13 19 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=5, locals=20, 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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 2
start local 2 1: aconst_null
astore 3
aconst_null
astore 4
2: aload 2
ldc "trying to find free register for %s"
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 5
start local 5 3: aload 0
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.initUseLists:(Z)V
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeExcludeActiveFixed:()V
5: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeExcludeActiveAny:()V
6: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeCollectInactiveFixed:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
7: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.freeCollectInactiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
8: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 9
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;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifne 9
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
9: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 24
10: aconst_null
astore 6
aconst_null
astore 7
11: aload 2
ldc "state of registers:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 8
start local 8 12: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 12
arraylength
istore 11
iconst_0
istore 10
goto 17
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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:
13: aload 12
iload 10
aaload
astore 9
start local 9 14: aload 9
getfield jdk.vm.ci.code.Register.number:I
istore 13
start local 13 15: aload 2
ldc "reg %d: usePos: %d"
aload 9
getfield jdk.vm.ci.code.Register.number:I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 13
iaload
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
end local 13 end local 9 16: iinc 10 1
StackMap locals:
StackMap stack:
17: iload 10
iload 11
if_icmplt 13
18: aload 8
ifnull 24
aload 8
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 24
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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
19: astore 6
aload 8
ifnull 20
aload 8
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 8 StackMap locals:
StackMap stack:
20: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
21: astore 7
aload 6
ifnonnull 22
aload 7
astore 6
goto 23
StackMap locals:
StackMap stack:
22: aload 6
aload 7
if_acmpeq 23
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
23: aload 6
athrow
24: StackMap locals:
StackMap stack:
aconst_null
astore 6
start local 6 25: aload 1
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.locationHint:(Z)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 7
start local 7 26: aload 7
ifnull 30
aload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 30
aload 7
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 30
27: aload 7
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 6
28: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 30
29: aload 2
ldc "hint register %d from interval %s"
aload 6
getfield jdk.vm.ci.code.Register.number:I
aload 7
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;ILjava/lang/Object;)V
30: 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 31
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 31
new java.lang.AssertionError
dup
ldc "register already assigned to interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
31: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
istore 8
start local 8 32: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
istore 9
start local 9 33: iconst_0
istore 10
start local 10 34: iconst_m1
istore 11
start local 11 35: aconst_null
astore 12
start local 12 36: aconst_null
astore 13
start local 13 37: aconst_null
astore 14
start local 14 38: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 18
arraylength
istore 17
iconst_0
istore 16
goto 49
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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:
39: aload 18
iload 16
aaload
astore 15
start local 15 40: aload 15
getfield jdk.vm.ci.code.Register.number:I
istore 19
start local 19 41: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 19
iaload
iload 9
if_icmplt 45
42: aload 13
ifnull 43
aload 15
aload 6
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 43
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 19
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_icmpge 48
aload 13
aload 6
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 48
43: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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 15
astore 13
44: goto 48
StackMap locals:
StackMap stack:
45: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 19
iaload
iload 8
if_icmple 48
46: aload 14
ifnull 47
aload 15
aload 6
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 47
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 19
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 14
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmple 48
aload 14
aload 6
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 48
47: StackMap locals:
StackMap stack:
aload 15
astore 14
end local 19 end local 15 48: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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 16 1
StackMap locals:
StackMap stack:
49: iload 16
iload 17
if_icmplt 39
50: aload 13
ifnull 53
51: aload 13
astore 12
52: goto 59
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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:
53: aload 14
ifnull 57
54: iconst_1
istore 10
55: aload 14
astore 12
56: goto 59
57: StackMap locals:
StackMap stack:
aload 5
ifnull 58
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
58: StackMap locals:
StackMap stack:
iconst_0
ireturn
59: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 12
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 11
60: aload 1
aload 12
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
61: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 63
62: aload 2
ldc "selected register %d"
aload 12
getfield jdk.vm.ci.code.Register.number:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
63: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 64
iload 11
ifgt 64
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
64: StackMap locals:
StackMap stack:
iload 10
ifeq 66
65: aload 0
aload 1
iload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
66: StackMap locals:
StackMap stack:
aload 5
ifnull 67
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
67: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
68: astore 3
69: aload 5
ifnull 70
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 5 StackMap locals:
StackMap stack:
70: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
71: astore 4
aload 3
ifnonnull 72
aload 4
astore 3
goto 73
StackMap locals:
StackMap stack:
72: aload 3
aload 4
if_acmpeq 73
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
73: aload 3
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 74 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 74 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 74 2 debug Lorg/graalvm/compiler/debug/DebugContext;
3 70 5 indent Lorg/graalvm/compiler/debug/Indent;
12 20 8 indent2 Lorg/graalvm/compiler/debug/Indent;
14 16 9 register Ljdk/vm/ci/code/Register;
15 16 13 i I
25 68 6 hint Ljdk/vm/ci/code/Register;
26 68 7 locationHint Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
32 68 8 regNeededUntil I
33 68 9 intervalTo I
34 68 10 needSplit Z
35 68 11 splitPos I
36 68 12 reg Ljdk/vm/ci/code/Register;
37 68 13 minFullReg Ljdk/vm/ci/code/Register;
38 68 14 maxPartialReg Ljdk/vm/ci/code/Register;
40 48 15 availableReg Ljdk/vm/ci/code/Register;
41 48 19 number I
Exception table:
from to target type
12 18 19 any
11 21 21 any
3 57 68 any
59 66 68 any
2 58 71 any
59 67 71 any
68 71 71 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=18, 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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 2
start local 2 1: aconst_null
astore 3
aconst_null
astore 4
2: aload 2
ldc "alloc locked register: need to split and spill to get register for %s"
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 5
start local 5 3: 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 6
start local 6 4: 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 7
start local 7 5: iload 6
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
invokestatic java.lang.Math.min:(II)I
istore 8
start local 8 6: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
istore 9
start local 9 7: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 9
iload 8
iflt 8
iload 8
ldc 2147483647
if_icmplt 9
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int
StackMap stack:
8: new java.lang.AssertionError
dup
ldc "interval has no use"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
astore 12
start local 12 10: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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
11: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillExcludeActiveFixed:()V
12: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 13
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;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifne 13
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
13: 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
14: aload 0
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillCollectActiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)V
15: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillCollectInactiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
16: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 18
17: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.printRegisterState:()V
18: StackMap locals:
StackMap stack:
aconst_null
astore 10
start local 10 19: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 20
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 20
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 21
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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:
20: aconst_null
StackMap locals:
StackMap stack: jdk.vm.ci.code.Register
21: astore 11
start local 11 22: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 16
arraylength
istore 15
iconst_0
istore 14
goto 30
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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:
23: aload 16
iload 14
aaload
astore 13
start local 13 24: aload 13
getfield jdk.vm.ci.code.Register.number:I
istore 17
start local 17 25: aload 13
aload 11
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 29
26: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 17
iaload
iload 8
if_icmple 29
27: aload 10
ifnull 28
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 17
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 10
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmple 29
28: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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 13
astore 10
end local 17 end local 13 29: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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 14 1
StackMap locals:
StackMap stack:
30: iload 14
iload 15
if_icmplt 23
31: aload 10
ifnonnull 32
iconst_0
goto 33
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext 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:
32: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
aload 10
getfield jdk.vm.ci.code.Register.number:I
iaload
StackMap locals:
StackMap stack: int
33: istore 13
start local 13 34: iload 13
iload 7
if_icmpgt 51
35: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 37
36: aload 2
ldc "able to spill current interval. firstUsage(register): %d, usePos: %d"
iload 6
iload 13
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
37: StackMap locals: int
StackMap stack:
iload 6
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iconst_1
iadd
if_icmpgt 46
38: aload 12
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 41
39: aload 2
ldc "retry with register priority must have register"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
40: goto 49
41: StackMap locals:
StackMap stack:
aload 1
iload 6
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 14
start local 14 42: 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
43: aload 2
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 14
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
44: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.printIntervals:(Ljava/lang/String;)V
45: new org.graalvm.compiler.lir.alloc.OutOfRegistersException
dup
ldc "LinearScan: no register found"
aload 14
invokespecial org.graalvm.compiler.lir.alloc.OutOfRegistersException.<init>:(Ljava/lang/String;Ljava/lang/String;)V
athrow
end local 14 46: 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
47: aload 5
ifnull 48
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
48: StackMap locals:
StackMap stack:
return
end local 13 49: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
astore 12
end local 11 end local 10 50: goto 10
end local 12 start local 10 start local 11 51: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
aload 10
getfield jdk.vm.ci.code.Register.number:I
iaload
iload 9
if_icmpgt 52
iconst_1
goto 53
StackMap locals:
StackMap stack:
52: iconst_0
StackMap locals:
StackMap stack: int
53: istore 12
start local 12 54: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
aload 10
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 13
start local 13 55: aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 57
56: aload 2
ldc "decided to use register %d"
aload 10
getfield jdk.vm.ci.code.Register.number:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
57: StackMap locals: int int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 58
iload 13
ifgt 58
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
58: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 59
iload 12
ifne 59
iload 13
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpgt 59
new java.lang.AssertionError
dup
ldc "splitting interval at from"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
59: StackMap locals:
StackMap stack:
aload 1
aload 10
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: iload 12
ifeq 62
61: aload 0
aload 1
iload 13
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
62: StackMap locals:
StackMap stack:
aload 0
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.splitAndSpillIntersectingIntervals:(Ljdk/vm/ci/code/Register;)V
63: aload 5
ifnull 64
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
64: StackMap locals:
StackMap stack:
return
end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
65: astore 3
66: aload 5
ifnull 67
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 5 StackMap locals:
StackMap stack:
67: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
68: astore 4
aload 3
ifnonnull 69
aload 4
astore 3
goto 70
StackMap locals:
StackMap stack:
69: aload 3
aload 4
if_acmpeq 70
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
70: aload 3
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 71 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 71 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 71 2 debug Lorg/graalvm/compiler/debug/DebugContext;
3 67 5 indent Lorg/graalvm/compiler/debug/Indent;
4 65 6 firstUsage I
5 65 7 firstShouldHaveUsage I
6 65 8 regNeededUntil I
7 65 9 intervalTo I
19 50 10 reg Ljdk/vm/ci/code/Register;
51 65 10 reg Ljdk/vm/ci/code/Register;
22 50 11 ignore Ljdk/vm/ci/code/Register;
51 65 11 ignore Ljdk/vm/ci/code/Register;
10 51 12 registerPriority Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
24 29 13 availableReg Ljdk/vm/ci/code/Register;
25 29 17 number I
34 49 13 regUsePos I
42 46 14 description Ljava/lang/String;
54 65 12 needSplit Z
55 65 13 splitPos I
Exception table:
from to target type
3 47 65 any
49 63 65 any
2 48 68 any
49 64 68 any
65 68 68 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=6, locals=14, 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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: aload 1
ldc "state of registers:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 4
start local 4 3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 20
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
4: aload 8
iload 6
aaload
astore 5
start local 5 5: aload 5
getfield jdk.vm.ci.code.Register.number:I
istore 9
start local 9 6: aconst_null
astore 10
aconst_null
astore 11
7: aload 1
ldc "reg %d: usePos: %d, blockPos: %d, intervals: "
iload 9
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.usePos:[I
iload 9
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.blockPos:[I
iload 9
iaload
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;III)Lorg/graalvm/compiler/debug/Indent;
astore 12
start local 12 8: iconst_0
istore 13
start local 13 9: goto 12
10: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.debug.DebugContext 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:
aload 1
ldc "%s "
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 9
aaload
iload 13
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
11: iinc 13 1
StackMap locals:
StackMap stack:
12: iload 13
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.spillIntervals:[Ljava/util/List;
iload 9
aaload
invokeinterface java.util.List.size:()I
if_icmplt 10
end local 13 13: aload 12
ifnull 19
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 19
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.debug.DebugContext 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
14: astore 10
aload 12
ifnull 15
aload 12
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 12 StackMap locals:
StackMap stack:
15: aload 10
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 11
aload 10
ifnonnull 17
aload 11
astore 10
goto 18
StackMap locals:
StackMap stack:
17: aload 10
aload 11
if_acmpeq 18
aload 10
aload 11
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
18: aload 10
athrow
end local 9 end local 5 19: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
20: iload 6
iload 7
if_icmplt 4
21: aload 4
ifnull 27
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 27
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
22: astore 2
aload 4
ifnull 23
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
23: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
24: astore 3
aload 2
ifnonnull 25
aload 3
astore 2
goto 26
StackMap locals:
StackMap stack:
25: aload 2
aload 3
if_acmpeq 26
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
26: aload 2
athrow
27: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
1 28 1 debug Lorg/graalvm/compiler/debug/DebugContext;
3 23 4 indent2 Lorg/graalvm/compiler/debug/Indent;
5 19 5 reg Ljdk/vm/ci/code/Register;
6 19 9 i I
8 15 12 indent3 Lorg/graalvm/compiler/debug/Indent;
9 13 13 j I
Exception table:
from to target type
8 13 14 any
7 16 16 any
3 21 22 any
2 24 24 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=4, 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 9
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 9
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 9
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 9
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
iload 2
iconst_1
iadd
if_icmple 9
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.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 3
start local 3 5: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 7
6: aload 3
ldc "free register cannot be available because all registers blocked by following call"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
7: StackMap locals: int org.graalvm.compiler.debug.DebugContext
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 8
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocFreeRegister:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifeq 8
new java.lang.AssertionError
dup
ldc "found a register for this interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 3 end local 2 9: StackMap locals:
StackMap stack:
iconst_0
ireturn
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 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
2 9 2 pos I
5 9 3 debug Lorg/graalvm/compiler/debug/DebugContext;
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
invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.isValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
ifeq 5
1: aload 0
invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.asValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/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=8, args_size=2
start local 0 start local 1 0: iconst_1
istore 2
start local 2 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.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 3
start local 3 2: aconst_null
astore 4
aconst_null
astore 5
3: aload 3
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
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;I)Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 4: aload 1
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operand:Ljdk/vm/ci/meta/AllocatableValue;
astore 7
start local 7 5: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 11
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 11
6: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 8
7: aload 3
ldc "interval has spill slot assigned (method parameter) . split it before first use"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
8: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int org.graalvm.compiler.debug.DebugContext 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
9: iconst_0
istore 2
10: goto 20
11: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 20
12: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 14
13: aload 3
ldc "normal allocation of register"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
14: 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
15: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.initVarsForAlloc:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
16: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.noAllocationPossible:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifne 17
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.allocFreeRegister:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
ifne 18
17: 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
18: 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 20
19: iconst_0
istore 2
20: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.insertMoveWhenActivated:()Z
ifeq 27
21: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 22
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitChild:()Z
ifne 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;
ifnonnull 23
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
23: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.$assertionsDisabled:Z
ifne 24
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 7
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ifeq 24
new java.lang.AssertionError
dup
ldc "cannot insert move between same interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
24: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 26
25: aload 3
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
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
26: 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
27: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.makeCurrentSplitChild:()V
end local 7 28: aload 6
ifnull 34
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 34
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
29: astore 4
aload 6
ifnull 30
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
30: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
31: astore 5
aload 4
ifnonnull 32
aload 5
astore 4
goto 33
StackMap locals:
StackMap stack:
32: aload 4
aload 5
if_acmpeq 33
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
33: aload 4
athrow
34: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanWalker;
0 35 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
1 35 2 result Z
2 35 3 debug Lorg/graalvm/compiler/debug/DebugContext;
4 30 6 indent Lorg/graalvm/compiler/debug/Indent;
5 28 7 operand Ljdk/vm/ci/meta/Value;
Exception table:
from to target type
4 28 29 any
3 31 31 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