final class org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker
super_class: java.lang.Object
{
private jdk.vm.ci.code.Register[] availableRegs;
descriptor: [Ljdk/vm/ci/code/Register;
flags: (0x0002) ACC_PRIVATE
private final int[] usePos;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] blockPos;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.BitSet isInMemory;
descriptor: Ljava/util/BitSet;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.ArrayList<org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval>[] spillIntervals;
descriptor: [Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: [Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;>;
private org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver moveResolver;
descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
flags: (0x0002) ACC_PRIVATE
private int minReg;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int maxReg;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private final org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator;
descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.debug.DebugContext debug;
descriptor: Lorg/graalvm/compiler/debug/DebugContext;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval unhandledAnyList;
descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval activeAnyList;
descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval activeFixedList;
descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval inactiveFixedList;
descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
flags: (0x0002) ACC_PRIVATE
private int currentPosition;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private static final java.util.ArrayList<org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval> EMPTY_LIST;
descriptor: Ljava/util/ArrayList;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;>;
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$trace$lsra$TraceInterval$SpillState;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
3: new java.util.ArrayList
dup
iconst_0
invokespecial java.util.ArrayList.<init>:(I)V
putstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.EMPTY_LIST:Ljava/util/ArrayList;
return
LocalVariableTable:
Start End Slot Name Signature
private static org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval addToListSortedByCurrentFromPositions(org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval, org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
astore 3
start local 3 2: goto 5
3: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
aload 3
astore 2
4: aload 3
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 3
5: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentFrom:()I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentFrom:()I
if_icmplt 3
6: aload 0
astore 4
start local 4 7: aload 2
ifnonnull 10
8: aload 1
astore 4
9: goto 11
10: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
aload 2
aload 1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
11: StackMap locals:
StackMap stack:
aload 1
aload 3
putfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
12: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 list Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
0 13 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
1 13 2 prev Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
2 13 3 cur Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
7 13 4 result Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
MethodParameters:
Name Flags
list
interval
private static org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval addToListSortedByFromPositions(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
astore 3
start local 3 2: goto 5
3: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 3
astore 2
4: aload 3
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 3
5: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmplt 3
6: aload 0
astore 4
start local 4 7: aload 2
ifnonnull 10
8: aload 1
astore 4
9: goto 11
10: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 2
aload 1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
11: StackMap locals:
StackMap stack:
aload 1
aload 3
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
12: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 list Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 13 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 13 2 prev Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 13 3 cur Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
7 13 4 result Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
list
interval
private static org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval addToListSortedByStartAndUsePositions(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 2
astore 4
start local 4 3: goto 6
4: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 4
astore 3
5: aload 4
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 4
6: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmplt 4
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmpne 7
aload 4
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.None:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.None:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
if_icmplt 4
7: StackMap locals:
StackMap stack:
aload 3
ifnonnull 10
8: aload 1
astore 2
9: goto 11
10: StackMap locals:
StackMap stack:
aload 3
aload 1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
11: StackMap locals:
StackMap stack:
aload 1
aload 4
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
12: aload 2
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 list Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 13 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 13 2 newHead Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 13 3 prev Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 13 4 cur Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
list
interval
private static org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval removeAny(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 0
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 2
astore 4
start local 4 3: goto 8
4: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
aload 4
ifnull 5
aload 4
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
if_acmpne 6
StackMap locals:
StackMap stack:
5: new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "interval has not been found in list: "
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
6: StackMap locals:
StackMap stack:
aload 4
astore 3
7: aload 4
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 4
8: StackMap locals:
StackMap stack:
aload 4
aload 1
if_acmpne 4
9: aload 3
ifnonnull 12
10: aload 4
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
11: goto 13
12: StackMap locals:
StackMap stack:
aload 3
aload 4
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
13: StackMap locals:
StackMap stack:
aload 2
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 list Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 14 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 14 2 newHead Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 14 3 prev Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 14 4 cur Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
list
interval
private int blockCount();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockCount:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
private org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> blockAt(int);
descriptor: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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/trace/lsra/TraceLinearScanWalker;
0 1 1 idx I
Signature: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
idx
private org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> blockOfOpWithId(int);
descriptor: (I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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/trace/lsra/TraceLinearScanWalker;
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.trace.lsra.TraceLinearScanPhase$TraceLinearScan, org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0000)
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
2: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
3: aload 0
aload 3
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.unhandledAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
4: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
5: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
6: aload 0
aload 2
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
7: aload 0
iconst_m1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
8: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.createMoveResolver:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
9: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
istore 4
start local 4 10: aload 0
iload 4
anewarray java.util.ArrayList
invokestatic org.graalvm.compiler.core.common.util.Util.uncheckedCast:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.ArrayList[]
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
11: iconst_0
istore 5
start local 5 12: goto 15
13: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
iload 5
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.EMPTY_LIST:Ljava/util/ArrayList;
aastore
14: iinc 5 1
StackMap locals:
StackMap stack:
15: iload 5
iload 4
if_icmplt 13
end local 5 16: aload 0
iload 4
newarray 10
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
17: aload 0
iload 4
newarray 10
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
18: aload 0
new java.util.BitSet
dup
iload 4
invokespecial java.util.BitSet.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
19: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 20 1 allocator Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
0 20 2 unhandledFixedFirst Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
0 20 3 unhandledAnyFirst Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
10 20 4 numRegs I
12 16 5 i I
MethodParameters:
Name Flags
allocator
unhandledFixedFirst
unhandledAnyFirst
private void initUseLists(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 9
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker 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.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 6
ldc 2147483647
iastore
4: iload 1
ifne 8
5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
iload 6
ldc 2147483647
iastore
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
iload 6
aaload
invokevirtual java.util.ArrayList.clear:()V
7: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
iload 6
invokevirtual java.util.BitSet.clear:(I)V
end local 6 end local 2 8: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
9: iload 3
iload 4
if_icmplt 1
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 11 1 onlyProcessUsePos Z
2 8 2 register Ljdk/vm/ci/code/Register;
3 8 6 i I
MethodParameters:
Name Flags
onlyProcessUsePos
private int maxRegisterNumber();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.maxReg:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
private int minRegisterNumber();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.minReg:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
private boolean isRegisterInRange(int);
descriptor: (I)Z
flags: (0x0002) ACC_PRIVATE
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.trace.lsra.TraceLinearScanWalker.minRegisterNumber:()I
if_icmplt 1
iload 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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/trace/lsra/TraceLinearScanWalker;
0 2 1 reg I
MethodParameters:
Name Flags
reg
private void excludeFromUse(org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint.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.trace.lsra.TraceLinearScanWalker.isRegisterInRange:(I)Z
ifeq 4
3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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/trace/lsra/TraceLinearScanWalker;
0 5 1 i Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
1 5 2 location Ljdk/vm/ci/meta/Value;
2 5 3 i1 I
MethodParameters:
Name Flags
i
private void setUsePos(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, int, boolean);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;IZ)V
flags: (0x0002) ACC_PRIVATE
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 14
1: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceInterval.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.trace.lsra.TraceLinearScanWalker.isRegisterInRange:(I)Z
ifeq 14
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 4
iaload
iload 2
if_icmple 6
5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 4
iload 2
iastore
6: StackMap locals: int
StackMap stack:
iload 3
ifne 14
7: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
iload 4
aaload
astore 5
start local 5 8: aload 5
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.EMPTY_LIST:Ljava/util/ArrayList;
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.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
iload 4
aload 5
aastore
11: StackMap locals: java.util.ArrayList
StackMap stack:
aload 5
aload 1
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
12: aload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.inMemoryAt:(I)Z
ifeq 14
13: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
iload 4
invokevirtual java.util.BitSet.set:(I)V
end local 5 end local 4 14: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 15 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 15 2 usePos I
0 15 3 onlyProcessUsePos Z
3 14 4 i I
8 14 5 list Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;>;
MethodParameters:
Name Flags
interval
usePos
onlyProcessUsePos
private void setUsePos(org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval, int, boolean);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;IZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 1
iload 3
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iload 2
iconst_m1
if_icmpeq 7
2: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 3
iload 2
ifne 3
new java.lang.AssertionError
dup
ldc "must use excludeFromUse to set usePos to 0"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.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 4: aload 0
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isRegisterInRange:(I)Z
ifeq 7
5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 4
iaload
iload 2
if_icmple 7
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 4
iload 2
iastore
end local 4 7: StackMap locals:
StackMap stack:
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/trace/lsra/TraceLinearScanWalker;
0 8 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
0 8 2 usePos I
0 8 3 onlyProcessUsePos Z
4 7 4 i I
MethodParameters:
Name Flags
interval
usePos
onlyProcessUsePos
private void setBlockPos(org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;I)V
flags: (0x0002) ACC_PRIVATE
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.trace.lsra.IntervalHint.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.trace.lsra.TraceLinearScanWalker.isRegisterInRange:(I)Z
ifeq 7
3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
iload 3
iaload
iload 2
if_icmple 5
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
iload 3
iload 2
iastore
5: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 3
iaload
iload 2
if_icmple 7
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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/trace/lsra/TraceLinearScanWalker;
0 8 1 i Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
0 8 2 blockPos I
2 7 3 reg I
MethodParameters:
Name Flags
i
blockPos
private void freeExcludeActiveFixed();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 1
start local 1 1: goto 5
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.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.trace.lsra.TraceLinearScanWalker.excludeFromUse:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;)V
4: aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 1
5: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
if_acmpne 2
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
1 7 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
private void freeExcludeActiveAny();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 1
start local 1 1: goto 5
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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.trace.lsra.TraceLinearScanWalker.excludeFromUse:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;)V
4: aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 1
5: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
if_acmpne 2
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
1 7 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
private void freeCollectInactiveFixed(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 2
start local 2 1: goto 8
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.from:()I
if_icmpgt 6
3: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.intersectsAt:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)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.trace.lsra.FixedInterval.from:()I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;IZ)V
5: goto 7
6: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)I
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;IZ)V
7: StackMap locals:
StackMap stack:
aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 2
8: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
if_acmpne 2
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 10 1 current Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 10 2 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
MethodParameters:
Name Flags
current
private void spillExcludeActiveFixed();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 1
start local 1 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.excludeFromUse:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;)V
3: aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 1
4: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
if_acmpne 2
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
1 6 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
private void spillBlockInactiveFixed(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 2
start local 2 1: goto 7
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentFrom:()I
if_icmple 5
3: aload 0
aload 2
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)I
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.setBlockPos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;I)V
4: goto 6
5: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentIntersectsAt:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)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.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 2
7: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
if_acmpne 2
8: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 9 1 current Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 9 2 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
MethodParameters:
Name Flags
current
private void spillCollectActiveAny(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
start local 2 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
aload 2
aload 2
aload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
invokestatic java.lang.Math.min:(II)I
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.setUsePos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;IZ)V
3: aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
4: StackMap locals:
StackMap stack:
aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
if_acmpne 2
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 6 1 registerPriority Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
1 6 2 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
registerPriority
private int insertIdAtBasicBlockBoundary(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifne 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Not a block begin: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
instanceof org.graalvm.compiler.lir.StandardOp$LabelOp
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
iconst_2
isub
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
instanceof org.graalvm.compiler.lir.StandardOp$BlockEndOp
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 2
start local 2 4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
iconst_2
isub
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 3
start local 3 5: aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
iconst_1
if_icmpne 7
6: iload 1
iconst_2
isub
ireturn
7: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 8
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
iconst_1
if_icmpeq 8
new java.lang.AssertionError
dup
ldc "Critical Edge? %s->%s"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 3
aastore
dup
iconst_1
aload 2
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
iload 1
iconst_2
iadd
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 9 1 opId I
4 9 2 toBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
5 9 3 fromBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
opId
private void insertMove(int, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
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.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 5
start local 5 2: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 4
iload 4
ifle 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 4
iconst_2
isub
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
aload 6
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.moveInsertPosition:(Ljava/util/List;I)V
15: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
aload 2
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.addMapping:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)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/trace/lsra/TraceLinearScanWalker;
0 17 1 operandId I
0 17 2 srcIt Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 17 3 dstIt Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
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
private 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: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=11, 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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 4
iload 4
iflt 3
iload 4
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 5
iflt 5
iload 5
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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.probability:()D
dstore 7
start local 7 11: iload 5
iconst_1
isub
istore 9
start local 9 12: goto 18
13: StackMap locals: double int
StackMap stack:
aload 0
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockAt:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 10
start local 10 14: aload 10
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dload 7
dcmpg
ifge 17
15: aload 10
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dstore 7
16: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
iadd
istore 6
end local 10 17: StackMap locals:
StackMap stack:
iinc 9 -1
StackMap locals:
StackMap stack:
18: iload 9
iload 4
if_icmpge 13
end local 9 19: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 20
iload 6
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.maxOpId:()I
if_icmpgt 20
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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/trace/lsra/TraceLinearScanWalker;
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 minProbability D
12 19 9 i I
14 17 10 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
private int findOptimalSplitPos(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, int, int, boolean);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;IIZ)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
iload 2
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSplitPos0:(II)I
istore 5
start local 5 1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 3
2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "optimal split position: %d"
iload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
3: StackMap locals: int
StackMap stack:
iload 5
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 4 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 4 2 minSplitPos I
0 4 3 maxSplitPos I
0 4 4 doLoopOptimization Z
1 4 5 optimalSplitPos I
MethodParameters:
Name Flags
interval
minSplitPos
maxSplitPos
doLoopOptimization
private int findOptimalSplitPos0(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 1
iload 2
if_icmpne 4
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 3
2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "min-pos and max-pos are equal, no optimization possible"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
iload 1
ireturn
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 5
iload 1
iload 2
if_icmplt 5
new java.lang.AssertionError
dup
ldc "must be true then"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 1
ifgt 6
new java.lang.AssertionError
dup
ldc "cannot access minSplitPos - 1 otherwise"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
iconst_1
isub
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 3
start local 3 7: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 2
iconst_1
isub
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 4
start local 4 8: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 9
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
if_icmple 9
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 3
aload 4
if_acmpne 13
10: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 12
11: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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
12: StackMap locals:
StackMap stack:
iload 2
ireturn
13: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 15
14: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "moving split pos to optimal block boundary between block B%d and B%d"
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
15: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 4
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;I)I
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 16 1 minSplitPos I
0 16 2 maxSplitPos I
7 16 3 minBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
8 16 4 maxBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
minSplitPos
maxSplitPos
private void splitBeforeUsage(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, int, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aconst_null
astore 4
aconst_null
astore 5
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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 6
start local 6 2: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iload 2
if_icmplt 3
new java.lang.AssertionError
dup
ldc "cannot split at start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
iload 2
if_icmplt 4
new java.lang.AssertionError
dup
ldc "cannot split before current position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 5
iload 2
iload 3
if_icmple 5
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmple 6
new java.lang.AssertionError
dup
ldc "cannot split after end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 3
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;IIZ)I
istore 7
start local 7 7: iload 7
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmpne 12
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
ldc 2147483647
if_icmpne 12
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 10
9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "no split necessary because optimal split position is at end of interval"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
10: StackMap locals: int
StackMap stack:
aload 6
ifnull 11
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
11: StackMap locals:
StackMap stack:
return
12: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
istore 9
start local 9 13: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 14
iload 9
ifne 14
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 7
iconst_1
isub
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 14
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
14: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int top int
StackMap stack:
iload 9
ifeq 15
iconst_0
goto 16
StackMap locals:
StackMap stack:
15: iconst_1
StackMap locals:
StackMap stack: int
16: istore 10
start local 10 17: iload 9
ifeq 20
18: iload 7
istore 8
start local 8 19: goto 21
end local 8 20: StackMap locals: int
StackMap stack:
iload 7
iconst_1
isub
iconst_1
ior
istore 8
start local 8 21: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 24
iload 2
iload 8
if_icmpgt 22
iload 8
iload 3
if_icmple 24
StackMap locals:
StackMap stack:
22: iload 2
iload 3
if_icmpne 23
iload 8
iload 2
iconst_1
isub
if_icmpeq 24
StackMap locals:
StackMap stack:
23: new java.lang.AssertionError
dup
ldc "out of range"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
24: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 25
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmple 25
new java.lang.AssertionError
dup
ldc "cannot split after end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
25: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 26
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmpgt 26
new java.lang.AssertionError
dup
ldc "cannot split at start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
26: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 28
27: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "splitting at position %d"
iload 8
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
28: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 29
iload 8
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
if_icmpgt 29
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Can not split interval "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " at current position: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
29: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 30
iload 9
ifne 30
iload 8
iconst_1
iand
iconst_1
if_icmpeq 30
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
30: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 31
iload 9
ifeq 31
iload 8
iconst_1
iand
ifeq 31
new java.lang.AssertionError
dup
ldc "split pos must be even on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
31: StackMap locals:
StackMap stack:
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmpne 36
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
ldc 2147483647
if_icmpne 36
32: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 34
33: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "no split necessary because optimal split position is at end of interval"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
34: StackMap locals:
StackMap stack:
aload 6
ifnull 35
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
35: StackMap locals:
StackMap stack:
return
36: StackMap locals:
StackMap stack:
aload 1
iload 8
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.split:(ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 11
start local 11 37: aload 11
iload 10
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.setInsertMoveWhenActivated:(Z)V
38: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 39
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
if_icmpge 39
new java.lang.AssertionError
dup
ldc "cannot append new interval before current walk position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
39: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.unhandledAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
aload 11
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.addToListSortedByStartAndUsePositions:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.unhandledAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
40: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 47
41: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "left interval %s: %s"
iload 10
ifeq 42
ldc " "
goto 43
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String
42: ldc ""
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String java.lang.String
43: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
44: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "right interval %s: %s"
iload 10
ifeq 45
ldc "(move)"
goto 46
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String
45: ldc ""
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack: org.graalvm.compiler.debug.DebugContext java.lang.String java.lang.String
46: aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 11 end local 10 end local 9 end local 8 end local 7 47: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 6
ifnull 53
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 53
StackMap locals:
StackMap stack: java.lang.Throwable
48: astore 4
aload 6
ifnull 49
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
49: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
50: astore 5
aload 4
ifnonnull 51
aload 5
astore 4
goto 52
StackMap locals:
StackMap stack:
51: aload 4
aload 5
if_acmpeq 52
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
52: aload 4
athrow
53: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 54 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 54 2 minSplitPos I
0 54 3 maxSplitPos I
2 49 6 indent Lorg/graalvm/compiler/debug/Indent;
7 47 7 optimalSplitPos I
19 20 8 optimalSplitPosFinal I
21 47 8 optimalSplitPosFinal I
13 47 9 blockBegin Z
17 47 10 moveNecessary Z
37 47 11 splitPart Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
Exception table:
from to target type
2 10 48 any
12 34 48 any
36 47 48 any
1 11 50 any
12 35 50 any
36 50 50 any
MethodParameters:
Name Flags
interval
minSplitPos
maxSplitPos
private void splitForSpilling(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=13, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
istore 2
start local 2 1: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
istore 3
start local 3 2: iload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
if_icmpne 4
3: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
istore 3
4: StackMap locals: int int
StackMap stack:
iload 3
iconst_1
iadd
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
invokestatic java.lang.Math.max:(II)I
istore 4
start local 4 5: aconst_null
astore 5
aconst_null
astore 6
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "splitting and spilling interval %s between %d and %d"
aload 1
iload 4
iload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;II)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 7: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iload 4
if_icmple 8
new java.lang.AssertionError
dup
ldc "cannot split before start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int int int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 9
iload 4
iload 2
if_icmple 9
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 10
iload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmplt 10
new java.lang.AssertionError
dup
ldc "cannot split at end end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 11
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmplt 11
new java.lang.AssertionError
dup
ldc "interval must not end before current position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals:
StackMap stack:
iload 4
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmpne 38
12: aconst_null
astore 8
aconst_null
astore 9
13: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "spilling entire interval because split pos is at beginning of interval (use positions: %d)"
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.numUsePos:()I
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 10
start local 10 14: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 17
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
if_icmpgt 17
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
15: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
16: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
17: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
18: aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
19: aload 0
aload 1
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.changeSpillState:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;I)V
20: aload 1
astore 11
start local 11 21: goto 31
22: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 11
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.getSplitChildBeforeOpId:(I)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 11
23: aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 31
24: aload 11
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
ldc 2147483647
if_icmpne 30
25: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 27
26: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "kicking out interval %d out of its register because it is never used"
aload 11
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
27: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
28: aload 11
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
29: goto 31
30: StackMap locals:
StackMap stack:
aconst_null
astore 11
31: StackMap locals:
StackMap stack:
aload 11
ifnull 32
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.isSplitChild:()Z
ifne 22
end local 11 32: StackMap locals:
StackMap stack:
aload 10
ifnull 71
aload 10
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 71
StackMap locals:
StackMap stack: java.lang.Throwable
33: astore 8
aload 10
ifnull 34
aload 10
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 10 StackMap locals:
StackMap stack:
34: aload 8
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
35: astore 9
aload 8
ifnonnull 36
aload 9
astore 8
goto 37
StackMap locals:
StackMap stack:
36: aload 8
aload 9
if_acmpeq 37
aload 8
aload 9
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
37: aload 8
athrow
38: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 4
iload 2
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSplitPos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;IIZ)I
istore 8
start local 8 39: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 41
iload 4
iload 8
if_icmpgt 40
iload 8
iload 2
if_icmple 41
StackMap locals: int
StackMap stack:
40: new java.lang.AssertionError
dup
ldc "out of range"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
41: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 42
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmplt 42
new java.lang.AssertionError
dup
ldc "cannot split at end of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
42: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 43
iload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmpge 43
new java.lang.AssertionError
dup
ldc "cannot split before start of interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
43: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifne 45
44: iload 8
iconst_1
isub
iconst_1
ior
istore 8
45: StackMap locals:
StackMap stack:
aconst_null
astore 9
aconst_null
astore 10
46: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "splitting at position %d"
iload 8
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 11
start local 11 47: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 48
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifne 48
iload 8
iconst_1
iand
iconst_1
if_icmpeq 48
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
48: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 49
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 49
iload 8
iconst_1
iand
ifeq 49
new java.lang.AssertionError
dup
ldc "split pos must be even on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
49: StackMap locals:
StackMap stack:
aload 1
iload 8
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.split:(ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 12
start local 12 50: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
51: aload 12
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.handleSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
52: aload 0
aload 12
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.changeSpillState:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;I)V
53: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifne 58
54: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 56
55: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "inserting move from interval %s to %s"
aload 1
aload 12
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
56: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
iload 8
aload 1
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.insertMove:(ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
57: goto 60
58: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 60
59: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "no need to insert move. done by data-flow resolution"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
60: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 61
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
aload 1
if_acmpeq 61
new java.lang.AssertionError
dup
ldc "overwriting wrong currentSplitChild"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
61: StackMap locals:
StackMap stack:
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.makeCurrentSplitChild:()V
62: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 65
63: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "left interval: %s"
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
64: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "spilled interval : %s"
aload 12
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
end local 12 65: StackMap locals:
StackMap stack:
aload 11
ifnull 71
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 71
StackMap locals:
StackMap stack: java.lang.Throwable
66: astore 9
aload 11
ifnull 67
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 11 StackMap locals:
StackMap stack:
67: aload 9
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
68: astore 10
aload 9
ifnonnull 69
aload 10
astore 9
goto 70
StackMap locals:
StackMap stack:
69: aload 9
aload 10
if_acmpeq 70
aload 9
aload 10
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
70: aload 9
athrow
end local 8 71: StackMap locals:
StackMap stack:
aload 7
ifnull 77
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 77
StackMap locals:
StackMap stack: java.lang.Throwable
72: astore 5
aload 7
ifnull 73
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
73: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
74: astore 6
aload 5
ifnonnull 75
aload 6
astore 5
goto 76
StackMap locals:
StackMap stack:
75: aload 5
aload 6
if_acmpeq 76
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
76: aload 5
athrow
77: 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 78 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 78 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 78 2 maxSplitPos I
2 78 3 previousUsage I
5 78 4 minSplitPos I
7 73 7 indent Lorg/graalvm/compiler/debug/Indent;
14 34 10 indent2 Lorg/graalvm/compiler/debug/Indent;
21 32 11 parent Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
39 71 8 optimalSplitPos I
47 67 11 indent2 Lorg/graalvm/compiler/debug/Indent;
50 65 12 spilledPart Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
Exception table:
from to target type
14 32 33 any
13 35 35 any
47 65 66 any
46 68 68 any
7 71 72 any
6 74 74 any
MethodParameters:
Name Flags
interval
private void changeSpillState(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$Options.LIROptTraceRAEliminateSpillMoves:Lorg/graalvm/compiler/options/OptionKey;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.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 14
1: invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$SWITCH_TABLE$org$graalvm$compiler$lir$alloc$trace$lsra$TraceInterval$SpillState:()[I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillState:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.ordinal:()I
iaload
tableswitch { // 1 - 5
1: 11
2: 2
3: 11
4: 11
5: 11
default: 12
}
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.calculateMinSpillPos:(II)I
istore 3
start local 3 3: aload 0
iload 3
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.calculateMaxSpillPos:(II)I
istore 4
start local 4 4: aload 0
iload 3
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSpillPos:(II)I
istore 5
start local 5 5: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
aload 0
iload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isNotBlockBeginOrMerge:(I)Z
ifne 6
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Spill pos at block begin: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals: int int int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 7
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockEnd:(I)Z
ifeq 7
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Spill pos at block end: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 8
iload 5
iconst_1
iand
ifeq 8
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Spill pos must be even "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
aload 1
iload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.setSpillDefinitionPos:(I)V
9: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.SpillStore:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;)V
10: goto 15
end local 5 end local 4 end local 3 11: StackMap locals:
StackMap stack:
goto 15
12: 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
13: StackMap locals:
StackMap stack:
goto 15
14: StackMap locals:
StackMap stack:
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.setSpillState:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;)V
15: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 16 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 16 2 spillPos I
3 11 3 minSpillPos I
4 11 4 maxSpillPos I
5 11 5 optimalSpillPos I
MethodParameters:
Name Flags
interval
spillPos
private int calculateMinSpillPos(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 1
bipush -2
iand
istore 3
start local 3 1: iload 3
ifeq 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 2
iload 1
iload 2
if_icmpne 4
2: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockEnd:(I)Z
ifeq 3
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Defintion at block end? "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
iload 1
ireturn
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 5
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
invokestatic org.graalvm.compiler.lir.ssa.SSAUtil.isMerge:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifeq 7
6: iload 1
ireturn
7: StackMap locals:
StackMap stack:
iload 3
iconst_2
iadd
istore 4
start local 4 8: goto 10
9: StackMap locals: int
StackMap stack:
iinc 4 4
10: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockEnd:(I)Z
ifne 9
11: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 12
iload 4
iload 2
if_icmple 12
new java.lang.AssertionError
dup
ldc "No minSpillPos found. defPos: %d, spillPos: %d, minSpillPos, %d"
iconst_3
anewarray java.lang.Object
dup
iconst_0
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 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/trace/lsra/TraceLinearScanWalker;
0 13 1 spillDefinitionPos I
0 13 2 spillPos I
1 13 3 spillDefinitionPosEven I
8 13 4 minSpillPos I
MethodParameters:
Name Flags
spillDefinitionPos
spillPos
private int calculateMaxSpillPos(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 2
bipush -2
iand
istore 3
start local 3 1: iload 3
ifne 3
2: iload 2
ireturn
3: StackMap locals: int
StackMap stack:
iload 1
bipush -2
iand
iload 3
if_icmpne 6
4: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 5
aload 0
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isNotBlockBeginOrMerge:(I)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
iload 2
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockEnd:(I)Z
ifeq 9
7: iload 3
iconst_2
isub
istore 4
start local 4 8: goto 13
end local 4 StackMap locals:
StackMap stack:
9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 12
10: iload 3
iconst_4
isub
istore 4
start local 4 11: goto 13
end local 4 12: StackMap locals:
StackMap stack:
iload 2
ireturn
start local 4 13: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 15
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockEnd:(I)Z
ifeq 15
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Can no longer be a block end! "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
iinc 4 -4
15: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 16
iload 4
iload 1
if_icmpgt 14
16: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 17
iload 1
iload 4
if_icmple 17
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
17: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 18 1 minSpillPos I
0 18 2 spillPos I
1 18 3 spillPosEven I
8 9 4 maxSpillPos I
11 12 4 maxSpillPos I
13 18 4 maxSpillPos I
MethodParameters:
Name Flags
minSpillPos final
spillPos
private boolean isNotBlockBeginOrMerge(int);
descriptor: (I)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: iload 1
bipush -2
iand
istore 2
start local 2 1: iload 2
ifeq 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
invokestatic org.graalvm.compiler.lir.ssa.SSAUtil.isMerge:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
ifne 2
iconst_0
ireturn
StackMap locals: int
StackMap stack:
2: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 3 1 spillPos I
1 3 2 spillPosEven I
MethodParameters:
Name Flags
spillPos
private int findOptimalSpillPos(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSpillPos0:(II)I
bipush -2
iand
istore 3
start local 3 1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 3
2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "optimal spill position: %d"
iload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
3: StackMap locals: int
StackMap stack:
iload 3
ireturn
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/trace/lsra/TraceLinearScanWalker;
0 4 1 minSpillPos I
0 4 2 maxSpillPos I
1 4 3 optimalSpillPos I
MethodParameters:
Name Flags
minSpillPos
maxSpillPos
private int findOptimalSpillPos0(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 1
iload 2
if_icmpne 4
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 3
2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "min-pos and max-pos are equal, no optimization possible"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
iload 1
ireturn
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 5
iload 1
iload 2
if_icmplt 5
new java.lang.AssertionError
dup
ldc "must be true then"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 1
ifge 6
new java.lang.AssertionError
dup
ldc "cannot access minSplitPos - 1 otherwise"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 3
start local 3 7: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 4
start local 4 8: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 9
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
if_icmple 9
new java.lang.AssertionError
dup
ldc "invalid order"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 3
aload 4
if_acmpne 13
10: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 12
11: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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
12: StackMap locals:
StackMap stack:
iload 2
ireturn
13: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 15
14: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "moving split pos to optimal block boundary between block B%d and B%d"
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
15: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 4
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.findOptimalSpillPos:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;I)I
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 16 1 minSpillPos I
0 16 2 maxSpillPos I
7 16 3 minBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
8 16 4 maxBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
minSpillPos
maxSpillPos
private int findOptimalSpillPos(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: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=12, 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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 4
iload 4
iflt 3
iload 4
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 6
iload 5
iflt 5
iload 5
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
isub
istore 6
start local 6 8: iload 6
iload 3
if_icmple 10
9: iload 3
istore 6
10: StackMap locals: int
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dstore 7
start local 7 11: iload 5
iconst_1
isub
istore 9
start local 9 12: goto 22
13: StackMap locals: double int
StackMap stack:
aload 0
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockAt:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
astore 10
start local 10 14: aload 10
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dload 7
dcmpg
ifge 21
15: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_2
isub
istore 11
start local 11 16: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 10
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_2
if_icmple 20
17: aload 10
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
dstore 7
18: iload 11
istore 6
19: goto 21
20: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 21
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifne 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 11 end local 10 21: StackMap locals:
StackMap stack:
iinc 9 -1
StackMap locals:
StackMap stack:
22: iload 9
iload 4
if_icmpge 13
end local 9 23: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 24
iload 6
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.maxOpId:()I
if_icmpgt 24
iload 6
iload 3
if_icmpeq 24
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 6
iconst_2
iadd
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockEnd:(I)Z
ifne 24
new java.lang.AssertionError
dup
ldc "algorithm must move split pos to block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
24: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 25
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.isBlockBegin:(I)Z
ifeq 25
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
25: 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 26 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 26 1 minBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 26 2 maxBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 26 3 maxSplitPos I
1 26 4 fromBlockNr I
2 26 5 toBlockNr I
8 26 6 optimalSplitPos I
11 26 7 minProbability D
12 23 9 i I
14 21 10 cur Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
16 21 11 opIdBeforeBlockEnd I
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;I)I
MethodParameters:
Name Flags
minBlock
maxBlock
maxSplitPos
private static void handleSpillSlot(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 2
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.canMaterialize:()Z
ifne 2
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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 0
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 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
interval
private void splitStackInterval(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
iconst_1
iadd
istore 2
start local 2 1: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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.trace.lsra.TraceLinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;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/trace/lsra/TraceLinearScanWalker;
0 4 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 4 2 minSplitPos I
2 4 3 maxSplitPos I
MethodParameters:
Name Flags
interval
private void splitWhenPartialRegisterAvailable(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;I)V
flags: (0x0002) ACC_PRIVATE
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.trace.lsra.TraceInterval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.previousUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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.trace.lsra.TraceLinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;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/trace/lsra/TraceLinearScanWalker;
0 3 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 3 2 registerAvailableUntil I
1 3 3 minSplitPos I
MethodParameters:
Name Flags
interval
registerAvailableUntil
private void splitAndSpillInterval(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
istore 2
start local 2 1: iload 2
iconst_1
iadd
istore 3
start local 3 2: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
istore 4
start local 4 3: iload 4
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
if_icmpgt 6
4: aload 0
aload 1
iload 3
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitBeforeUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;II)V
5: goto 7
6: StackMap locals: int int int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "No more usage, no need to split: %s"
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
7: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 8
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.nextUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;I)I
ldc 2147483647
if_icmpeq 8
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
8: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitForSpilling:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
9: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 10 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 10 2 currentPos I
2 10 3 minSplitPos I
3 10 4 maxSplitPos I
MethodParameters:
Name Flags
interval
private boolean allocFreeRegister(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=19, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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 4
start local 4 2: aload 0
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.initUseLists:(Z)V
3: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.freeExcludeActiveFixed:()V
4: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.freeCollectInactiveFixed:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
5: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.freeExcludeActiveAny:()V
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 21
7: aconst_null
astore 5
aconst_null
astore 6
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "state of registers:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 14
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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:
10: aload 11
iload 9
aaload
astore 8
start local 8 11: aload 8
getfield jdk.vm.ci.code.Register.number:I
istore 12
start local 12 12: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "reg %d (%s): usePos: %d"
aload 8
getfield jdk.vm.ci.code.Register.number:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 8
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 12
iaload
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
end local 12 end local 8 13: iinc 9 1
StackMap locals:
StackMap stack:
14: iload 9
iload 10
if_icmplt 10
15: aload 7
ifnull 21
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 21
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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
16: astore 5
aload 7
ifnull 17
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
17: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
18: astore 6
aload 5
ifnonnull 19
aload 6
astore 5
goto 20
StackMap locals:
StackMap stack:
19: aload 5
aload 6
if_acmpeq 20
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
20: aload 5
athrow
21: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 22: aload 1
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.locationHint:(Z)Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
astore 6
start local 6 23: aload 6
ifnull 27
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 27
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 27
24: aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
astore 5
25: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 27
26: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "hint register %3d (%4s) from interval %s"
aload 5
getfield jdk.vm.ci.code.Register.number:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 5
aload 6
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
27: StackMap locals: jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 28
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 28
new java.lang.AssertionError
dup
ldc "register already assigned to interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
28: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iconst_1
iadd
istore 7
start local 7 29: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
istore 8
start local 8 30: iconst_0
istore 9
start local 9 31: iconst_m1
istore 10
start local 10 32: aconst_null
astore 11
start local 11 33: aconst_null
astore 12
start local 12 34: aconst_null
astore 13
start local 13 35: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 17
arraylength
istore 16
iconst_0
istore 15
goto 46
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint 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:
36: aload 17
iload 15
aaload
astore 14
start local 14 37: aload 14
getfield jdk.vm.ci.code.Register.number:I
istore 18
start local 18 38: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 18
iaload
iload 8
if_icmplt 42
39: aload 12
ifnull 40
aload 14
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 40
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 18
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
aload 12
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmpge 45
aload 12
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 45
40: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int
StackMap stack:
aload 14
astore 12
41: goto 45
StackMap locals:
StackMap stack:
42: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 18
iaload
iload 7
if_icmple 45
43: aload 13
ifnull 44
aload 14
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 44
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 18
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
aload 13
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmple 45
aload 13
aload 5
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 45
44: StackMap locals:
StackMap stack:
aload 14
astore 13
end local 18 end local 14 45: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 15 1
StackMap locals:
StackMap stack:
46: iload 15
iload 16
if_icmplt 36
47: aload 12
ifnull 50
48: aload 12
astore 11
49: goto 56
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint int int int int jdk.vm.ci.code.Register jdk.vm.ci.code.Register jdk.vm.ci.code.Register
StackMap stack:
50: aload 13
ifnull 54
51: iconst_1
istore 9
52: aload 13
astore 11
53: goto 56
54: StackMap locals:
StackMap stack:
aload 4
ifnull 55
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
55: StackMap locals:
StackMap stack:
iconst_0
ireturn
56: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
aload 11
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 10
57: aload 1
aload 11
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getKind:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)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.trace.lsra.TraceInterval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
58: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 60
59: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "selected register %d (%s)"
aload 11
getfield jdk.vm.ci.code.Register.number:I
aload 11
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;ILjava/lang/Object;)V
60: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 61
iload 10
ifgt 61
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
61: StackMap locals:
StackMap stack:
iload 9
ifeq 63
62: aload 0
aload 1
iload 10
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;I)V
63: StackMap locals:
StackMap stack:
aload 4
ifnull 64
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
64: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
65: astore 2
66: aload 4
ifnull 67
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
67: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
68: astore 3
aload 2
ifnonnull 69
aload 3
astore 2
goto 70
StackMap locals:
StackMap stack:
69: aload 2
aload 3
if_acmpeq 70
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
70: aload 2
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 71 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 71 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 67 4 indent Lorg/graalvm/compiler/debug/Indent;
9 17 7 indent2 Lorg/graalvm/compiler/debug/Indent;
11 13 8 register Ljdk/vm/ci/code/Register;
12 13 12 i I
22 65 5 hint Ljdk/vm/ci/code/Register;
23 65 6 locationHint Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
29 65 7 regNeededUntil I
30 65 8 intervalTo I
31 65 9 needSplit Z
32 65 10 splitPos I
33 65 11 reg Ljdk/vm/ci/code/Register;
34 65 12 minFullReg Ljdk/vm/ci/code/Register;
35 65 13 maxPartialReg Ljdk/vm/ci/code/Register;
37 45 14 availableReg Ljdk/vm/ci/code/Register;
38 45 18 number I
Exception table:
from to target type
9 15 16 any
8 18 18 any
2 54 65 any
56 63 65 any
1 55 68 any
56 64 68 any
65 68 68 any
MethodParameters:
Name Flags
interval
private void splitAndSpillIntersectingIntervals(jdk.vm.ci.code.Register);
descriptor: (Ljdk/vm/ci/code/Register;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$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.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
aload 1
getfield jdk.vm.ci.code.Register.number:I
aaload
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 3
start local 3 4: aload 0
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.removeFromList:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
5: aload 0
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitAndSpillInterval:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
end local 3 6: iinc 2 1
StackMap locals:
StackMap stack:
7: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
aload 1
getfield jdk.vm.ci.code.Register.number:I
aaload
invokevirtual java.util.ArrayList.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/trace/lsra/TraceLinearScanWalker;
0 9 1 reg Ljdk/vm/ci/code/Register;
2 8 2 i I
4 6 3 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
reg
private void allocLockedRegister(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=17, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
aconst_null
astore 3
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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 4
start local 4 2: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
istore 5
start local 5 3: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.ShouldHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
istore 6
start local 6 4: iload 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iconst_1
iadd
invokestatic java.lang.Math.min:(II)I
istore 7
start local 7 5: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
istore 8
start local 8 6: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 8
iload 7
iflt 7
iload 7
ldc 2147483647
if_icmplt 8
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int
StackMap stack:
7: new java.lang.AssertionError
dup
ldc "interval has no use"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
8: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
astore 11
start local 11 9: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int int int int top top org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority
StackMap stack:
aload 0
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.initUseLists:(Z)V
10: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillExcludeActiveFixed:()V
11: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillBlockInactiveFixed:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
12: aload 0
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillCollectActiveAny:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)V
13: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 15
14: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.printRegisterState:()V
15: StackMap locals:
StackMap stack:
aconst_null
astore 9
start local 9 16: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 17
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 17
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
goto 18
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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.trace.lsra.TraceInterval$RegisterPriority
StackMap stack:
17: aconst_null
StackMap locals:
StackMap stack: jdk.vm.ci.code.Register
18: astore 10
start local 10 19: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 15
arraylength
istore 14
iconst_0
istore 13
goto 27
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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.trace.lsra.TraceInterval$RegisterPriority top int int jdk.vm.ci.code.Register[]
StackMap stack:
20: aload 15
iload 13
aaload
astore 12
start local 12 21: aload 12
getfield jdk.vm.ci.code.Register.number:I
istore 16
start local 16 22: aload 12
aload 10
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifne 26
23: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 16
iaload
iload 7
if_icmple 26
24: aload 9
ifnull 25
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 16
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmpgt 25
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 16
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
if_icmpne 26
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
aload 9
getfield jdk.vm.ci.code.Register.number:I
invokevirtual java.util.BitSet.get:(I)Z
ifne 26
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
iload 16
invokevirtual java.util.BitSet.get:(I)Z
ifeq 26
25: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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.trace.lsra.TraceInterval$RegisterPriority jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int
StackMap stack:
aload 12
astore 9
end local 16 end local 12 26: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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.trace.lsra.TraceInterval$RegisterPriority top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
27: iload 13
iload 14
if_icmplt 20
28: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 30
29: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "Register Selected: %s"
aload 9
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
30: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval 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.trace.lsra.TraceInterval$RegisterPriority
StackMap stack:
aload 9
ifnonnull 31
iconst_0
goto 32
StackMap locals:
StackMap stack:
31: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
StackMap locals:
StackMap stack: int
32: istore 12
start local 12 33: iload 12
iload 6
if_icmpgt 53
34: aload 9
ifnull 35
aload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.inMemoryAt:(I)Z
ifne 35
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
aload 9
getfield jdk.vm.ci.code.Register.number:I
invokevirtual java.util.BitSet.get:(I)Z
ifne 53
35: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 37
36: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "able to spill current interval. firstUsage(register): %d, usePos: %d"
iload 5
iload 12
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;II)V
37: StackMap locals:
StackMap stack:
iload 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iconst_1
iadd
if_icmpgt 48
38: aload 11
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.equals:(Ljava/lang/Object;)Z
ifeq 41
39: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "retry with register priority must have register"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
40: goto 51
41: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "cannot spill interval ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
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 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
42: ldc ", interval.from()="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
43: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 13
start local 13 44: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.assignSpillSlot:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
45: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
iconst_2
invokevirtual org.graalvm.compiler.debug.DebugContext.isDumpEnabled:(I)Z
ifeq 47
46: aload 0
aload 13
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.dumpLIRAndIntervals:(Ljava/lang/String;)V
47: StackMap locals: java.lang.String
StackMap stack:
new org.graalvm.compiler.lir.alloc.OutOfRegistersException
dup
ldc "LinearScan: no register found"
aload 13
invokespecial org.graalvm.compiler.lir.alloc.OutOfRegistersException.<init>:(Ljava/lang/String;Ljava/lang/String;)V
athrow
end local 13 48: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitAndSpillInterval:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
49: aload 4
ifnull 50
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
50: StackMap locals:
StackMap stack:
return
end local 12 51: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
astore 11
end local 10 end local 9 52: goto 9
end local 11 start local 9 start local 10 53: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
iload 8
if_icmpgt 54
iconst_1
goto 55
StackMap locals:
StackMap stack:
54: iconst_0
StackMap locals:
StackMap stack: int
55: istore 11
start local 11 56: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
aload 9
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 12
start local 12 57: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 59
58: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "decided to use register %d"
aload 9
getfield jdk.vm.ci.code.Register.number:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
59: StackMap locals: int int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 60
iload 12
ifgt 60
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
60: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 61
iload 11
ifne 61
iload 12
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmpgt 61
new java.lang.AssertionError
dup
ldc "splitting interval at from"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
61: StackMap locals:
StackMap stack:
aload 1
aload 9
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getKind:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)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.trace.lsra.TraceInterval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
62: iload 11
ifeq 64
63: aload 0
aload 1
iload 12
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;I)V
64: StackMap locals:
StackMap stack:
aload 0
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitAndSpillIntersectingIntervals:(Ljdk/vm/ci/code/Register;)V
65: aload 4
ifnull 66
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
66: StackMap locals:
StackMap stack:
return
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
67: astore 2
68: aload 4
ifnull 69
aload 4
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 4 StackMap locals:
StackMap stack:
69: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
70: astore 3
aload 2
ifnonnull 71
aload 3
astore 2
goto 72
StackMap locals:
StackMap stack:
71: aload 2
aload 3
if_acmpeq 72
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
72: aload 2
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 73 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 73 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 69 4 indent Lorg/graalvm/compiler/debug/Indent;
3 67 5 firstUsage I
4 67 6 firstShouldHaveUsage I
5 67 7 regNeededUntil I
6 67 8 intervalTo I
16 52 9 reg Ljdk/vm/ci/code/Register;
53 67 9 reg Ljdk/vm/ci/code/Register;
19 52 10 ignore Ljdk/vm/ci/code/Register;
53 67 10 ignore Ljdk/vm/ci/code/Register;
9 53 11 registerPriority Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
21 26 12 availableReg Ljdk/vm/ci/code/Register;
22 26 16 number I
33 51 12 regUsePos I
44 48 13 description Ljava/lang/String;
56 67 11 needSplit Z
57 67 12 splitPos I
Exception table:
from to target type
2 49 67 any
51 65 67 any
1 50 70 any
51 66 70 any
67 70 70 any
MethodParameters:
Name Flags
interval
private void dumpLIRAndIntervals(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
iconst_2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.printIntervals:(Ljava/lang/String;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 3 1 description Ljava/lang/String;
MethodParameters:
Name Flags
description
private void printRegisterState();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=13, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "state of registers:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 19
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
3: aload 7
iload 5
aaload
astore 4
start local 4 4: aload 4
getfield jdk.vm.ci.code.Register.number:I
istore 8
start local 8 5: aconst_null
astore 9
aconst_null
astore 10
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "reg %d: usePos: %d, blockPos: %d, inMemory: %b, intervals: "
iload 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.usePos:[I
iload 8
iaload
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.blockPos:[I
iload 8
iaload
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isInMemory:Ljava/util/BitSet;
iload 8
invokevirtual java.util.BitSet.get:(I)Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 11
start local 11 7: iconst_0
istore 12
start local 12 8: goto 11
9: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker 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 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "%s"
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
iload 8
aaload
iload 12
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
10: iinc 12 1
StackMap locals:
StackMap stack:
11: iload 12
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.spillIntervals:[Ljava/util/ArrayList;
iload 8
aaload
invokevirtual java.util.ArrayList.size:()I
if_icmplt 9
end local 12 12: aload 11
ifnull 18
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 18
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
13: astore 9
aload 11
ifnull 14
aload 11
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 11 StackMap locals:
StackMap stack:
14: aload 9
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
15: astore 10
aload 9
ifnonnull 16
aload 10
astore 9
goto 17
StackMap locals:
StackMap stack:
16: aload 9
aload 10
if_acmpeq 17
aload 9
aload 10
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
17: aload 9
athrow
end local 8 end local 4 18: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
19: iload 5
iload 6
if_icmplt 3
20: aload 3
ifnull 26
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 26
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
21: astore 1
aload 3
ifnull 22
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
22: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
23: astore 2
aload 1
ifnonnull 24
aload 2
astore 1
goto 25
StackMap locals:
StackMap stack:
24: aload 1
aload 2
if_acmpeq 25
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
25: aload 1
athrow
26: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
2 22 3 indent2 Lorg/graalvm/compiler/debug/Indent;
4 18 4 reg Ljdk/vm/ci/code/Register;
5 18 8 i I
7 14 11 indent3 Lorg/graalvm/compiler/debug/Indent;
8 12 12 j I
Exception table:
from to target type
7 12 13 any
6 15 15 any
2 20 21 any
1 23 23 any
private boolean noAllocationPossible(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.callKillsRegisters:()Z
ifeq 8
1: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
istore 2
start local 2 2: iload 2
invokestatic jdk.vm.ci.code.CodeUtil.isOdd:(I)Z
ifeq 8
3: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.maxOpId:()I
if_icmpge 8
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 2
iconst_1
iadd
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.hasCall:(I)Z
ifeq 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
iload 2
iconst_1
iadd
if_icmple 8
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 6
5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "free register cannot be available because all registers blocked by following call"
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;)V
6: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 7
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocFreeRegister:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifeq 7
new java.lang.AssertionError
dup
ldc "found a register for this interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 8: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 9 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 8 2 pos I
MethodParameters:
Name Flags
interval
private void initVarsForAlloc(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getRegisterAllocationConfig:()Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getKind:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)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.trace.lsra.TraceLinearScanWalker.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.trace.lsra.TraceLinearScanWalker.minReg:I
3: aload 0
aload 2
getfield org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig$AllocatableRegisters.maxRegisterNumber:I
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.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/trace/lsra/TraceLinearScanWalker;
0 5 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 5 2 allocatableRegisters Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig$AllocatableRegisters;
MethodParameters:
Name Flags
interval
private static boolean isMove(org.graalvm.compiler.lir.LIRInstruction, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
flags: (0x000a) ACC_PRIVATE, 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 7
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 7
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 7
3: aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 6
aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.asVariable:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
getfield org.graalvm.compiler.lir.Variable.index:I
aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
if_icmpne 6
aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 6
4: aload 3
invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.asVariable:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
getfield org.graalvm.compiler.lir.Variable.index:I
aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
if_icmpne 6
5: iconst_1
ireturn
StackMap locals: org.graalvm.compiler.lir.StandardOp$ValueMoveOp
StackMap stack:
6: iconst_0
ireturn
end local 3 7: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 op Lorg/graalvm/compiler/lir/LIRInstruction;
0 8 1 from Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 8 2 to Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 7 3 move Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
MethodParameters:
Name Flags
op
from
to
private void combineSpilledIntervals(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.isSplitChild:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 1
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.locationHint:(Z)Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
astore 2
start local 2 3: aload 2
ifnull 4
aload 2
instanceof org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
ifne 5
4: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint
StackMap stack:
return
5: StackMap locals:
StackMap stack:
aload 2
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 3
start local 3 6: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 7
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.isSplitParent:()Z
ifne 7
new java.lang.AssertionError
dup
ldc "register hint must be split parent"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillState:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
if_acmpne 8
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillState:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
if_acmpeq 9
8: StackMap locals:
StackMap stack:
return
9: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
istore 4
start local 4 10: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
istore 5
start local 5 11: iload 5
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.maxOpId:()I
if_icmpgt 12
iload 4
invokestatic jdk.vm.ci.code.CodeUtil.isOdd:(I)Z
ifne 12
iload 5
invokestatic jdk.vm.ci.code.CodeUtil.isOdd:(I)Z
ifeq 13
12: StackMap locals: int int
StackMap stack:
return
13: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
aload 3
aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isMove:(Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifeq 14
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
iload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
aload 1
aload 3
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.isMove:(Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifne 15
14: StackMap locals:
StackMap stack:
return
15: StackMap locals:
StackMap stack:
aload 3
iload 4
getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.USE:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.getSplitChildAtOpId:(ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 6
start local 6 16: aload 3
iload 5
getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.DEF:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.getSplitChildAtOpId:(ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 7
start local 7 17: aload 6
aload 7
if_acmpeq 18
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
iload 4
if_icmpne 18
aload 7
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iload 5
if_icmpeq 19
18: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
return
19: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 20
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 20
new java.lang.AssertionError
dup
ldc "must have register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
20: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 21
aload 7
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 21
new java.lang.AssertionError
dup
ldc "must not have register assigned"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
21: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 22
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$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:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 23
aload 7
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority.MustHaveRegister:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.firstUsage:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$RegisterPriority;)I
iload 5
if_icmpeq 23
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
23: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 25
24: return
25: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 26
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 26
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
26: StackMap locals:
StackMap stack:
aload 1
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.setSpillSlot:(Ljdk/vm/ci/meta/AllocatableValue;)V
27: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.removeFirstUsePos:()V
28: aload 7
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.removeFirstUsePos:()V
29: 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 30 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 30 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 30 2 locationHint Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
6 30 3 registerHint Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
10 30 4 beginPos I
11 30 5 endPos I
16 30 6 beginHint Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
17 30 7 endHint Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
interval
private boolean activateCurrent(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.logCurrentStatus:()V
2: StackMap locals:
StackMap stack:
iconst_1
istore 2
start local 2 3: aconst_null
astore 3
aconst_null
astore 4
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "activating interval %s, splitParent: %d"
aload 1
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.splitParent:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;I)Lorg/graalvm/compiler/debug/Indent;
astore 5
start local 5 5: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnull 11
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 11
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 8
7: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.splitStackInterval:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
9: iconst_0
istore 2
10: goto 20
11: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 20
12: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 14
13: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
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.trace.lsra.TraceLinearScanWalker.combineSpilledIntervals:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
15: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.initVarsForAlloc:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
16: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.noAllocationPossible:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifne 17
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocFreeRegister:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifne 18
17: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocLockedRegister:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
18: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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.trace.lsra.TraceInterval.insertMoveWhenActivated:()Z
ifeq 27
21: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 22
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 23
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
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.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 24
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
if_icmpne 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 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 26
25: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "Inserting move from interval %d to %d because insertMoveWhenActivated is set"
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.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.trace.lsra.TraceInterval.from:()I
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.insertMove:(ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
27: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.makeCurrentSplitChild:()V
28: aload 5
ifnull 34
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 34
StackMap locals:
StackMap stack: java.lang.Throwable
29: astore 3
aload 5
ifnull 30
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 5 StackMap locals:
StackMap stack:
30: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
31: astore 4
aload 3
ifnonnull 32
aload 4
astore 3
goto 33
StackMap locals:
StackMap stack:
32: aload 3
aload 4
if_acmpeq 33
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
33: aload 3
athrow
34: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 35 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 35 2 result Z
5 30 5 indent Lorg/graalvm/compiler/debug/Indent;
Exception table:
from to target type
5 28 29 any
4 31 31 any
MethodParameters:
Name Flags
interval
void finishAllocation();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.moveResolver:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.resolveAndAppendMoves:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
private void logCurrentStatus();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "active:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.logList:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)V
3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.logList:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
4: aload 3
ifnull 10
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 10
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
5: astore 1
aload 3
ifnull 6
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
6: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
7: astore 2
aload 1
ifnonnull 8
aload 2
astore 1
goto 9
StackMap locals:
StackMap stack:
8: aload 1
aload 2
if_acmpeq 9
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
9: aload 1
athrow
10: StackMap locals:
StackMap stack:
aconst_null
astore 1
aconst_null
astore 2
11: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "inactive(fixed):"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 12: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.logList:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)V
13: aload 3
ifnull 19
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 19
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
14: astore 1
aload 3
ifnull 15
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
15: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 2
aload 1
ifnonnull 17
aload 2
astore 1
goto 18
StackMap locals:
StackMap stack:
17: aload 1
aload 2
if_acmpeq 18
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
18: aload 1
athrow
19: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
2 6 3 i Lorg/graalvm/compiler/debug/Indent;
12 15 3 i Lorg/graalvm/compiler/debug/Indent;
Exception table:
from to target type
2 4 5 any
1 7 7 any
12 13 14 any
11 16 16 any
void walk();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc 2147483647
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkTo:(I)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
private void removeFromList(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.removeAny:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 2 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
interval
private void walkToFixed(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State, int);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
if_acmpeq 1
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
if_acmpeq 1
new java.lang.AssertionError
dup
ldc "wrong state"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 2: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
if_acmpne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
goto 4
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
StackMap locals:
StackMap stack: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
4: astore 4
start local 4 5: aload 4
astore 5
start local 5 6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 53
7: aconst_null
astore 6
aconst_null
astore 7
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "walkToFixed(%s, %d):"
aload 1
iload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;I)Lorg/graalvm/compiler/debug/Indent;
astore 8
start local 8 9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 5
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.logList:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)V
10: aload 8
ifnull 53
aload 8
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 53
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State int org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
11: astore 6
aload 8
ifnull 12
aload 8
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 8 StackMap locals:
StackMap stack:
12: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
13: astore 7
aload 6
ifnonnull 14
aload 7
astore 6
goto 15
StackMap locals:
StackMap stack:
14: aload 6
aload 7
if_acmpeq 15
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
15: aload 6
athrow
16: StackMap locals:
StackMap stack:
aload 5
astore 6
start local 6 17: aload 6
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 5
18: iconst_0
istore 7
start local 7 19: goto 22
20: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval int
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.nextRange:()V
21: iconst_1
istore 7
22: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentTo:()I
iload 2
if_icmple 20
23: iload 7
ifne 25
aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
if_acmpne 24
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentFrom:()I
iload 2
if_icmple 25
StackMap locals:
StackMap stack:
24: iconst_0
goto 26
StackMap locals:
StackMap stack:
25: iconst_1
StackMap locals:
StackMap stack: int
26: istore 7
27: iload 7
ifeq 51
28: aload 3
ifnonnull 34
29: aload 1
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
if_acmpne 32
30: aload 0
aload 5
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
31: goto 35
32: StackMap locals:
StackMap stack:
aload 0
aload 5
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
33: goto 35
34: StackMap locals:
StackMap stack:
aload 3
aload 5
putfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
35: StackMap locals:
StackMap stack:
aload 5
astore 4
36: aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentAtEnd:()Z
ifeq 39
37: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Handled:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
astore 8
start local 8 38: goto 49
end local 8 39: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentFrom:()I
iload 2
if_icmpgt 43
40: aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
aload 6
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.addToListSortedByCurrentFromPositions:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
41: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
astore 8
start local 8 42: goto 45
end local 8 43: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
aload 6
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.addToListSortedByCurrentFromPositions:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.inactiveFixedList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
44: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
astore 8
start local 8 45: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State
StackMap stack:
aload 4
aload 6
if_acmpne 49
46: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 47
aload 1
aload 8
if_acmpeq 47
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
47: StackMap locals:
StackMap stack:
aload 4
astore 3
48: aload 6
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 4
49: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 6
aload 1
aload 8
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.intervalMoved:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;)V
end local 8 50: goto 53
51: StackMap locals:
StackMap stack:
aload 4
astore 3
52: aload 6
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 4
end local 7 end local 6 53: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.currentFrom:()I
iload 2
if_icmple 16
54: 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 55 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 55 1 state Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
0 55 2 from I
2 55 3 prevprev Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
5 55 4 prev Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
6 55 5 next Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
9 12 8 i Lorg/graalvm/compiler/debug/Indent;
17 53 6 cur Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
19 53 7 rangeHasChanged Z
38 39 8 newState Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
42 43 8 newState Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
45 50 8 newState Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
Exception table:
from to target type
9 10 11 any
8 13 13 any
MethodParameters:
Name Flags
state
from
private void walkToAny(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 3
start local 3 2: aload 3
astore 4
start local 4 3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 24
4: aconst_null
astore 5
aconst_null
astore 6
5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "walkToAny(%d):"
iload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 7
start local 7 6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 4
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.logList:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
7: aload 7
ifnull 24
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 24
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
8: astore 5
aload 7
ifnull 9
aload 7
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 7 StackMap locals:
StackMap stack:
9: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 6
aload 5
ifnonnull 11
aload 6
astore 5
goto 12
StackMap locals:
StackMap stack:
11: aload 5
aload 6
if_acmpeq 12
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
12: aload 5
athrow
13: StackMap locals:
StackMap stack:
aload 4
astore 5
start local 5 14: aload 5
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 4
15: aload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
iload 1
if_icmpgt 22
16: aload 2
ifnonnull 19
17: aload 0
aload 4
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
18: goto 20
19: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 2
aload 4
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
20: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 5
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Handled:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.intervalMoved:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;)V
21: goto 23
22: StackMap locals:
StackMap stack:
aload 3
astore 2
23: StackMap locals:
StackMap stack:
aload 4
astore 3
end local 5 24: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
iload 1
if_icmple 13
25: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 26 1 from I
1 26 2 prevprev Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 26 3 prev Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 26 4 next Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
6 9 7 i Lorg/graalvm/compiler/debug/Indent;
14 24 5 cur Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
Exception table:
from to target type
6 7 8 any
5 10 10 any
MethodParameters:
Name Flags
from
private org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval nextInterval(int);
descriptor: (I)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.unhandledAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
start local 2 1: aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
if_acmpeq 8
2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.unhandledAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 3
start local 3 3: iload 1
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
if_icmpge 5
4: aconst_null
areturn
5: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
aload 3
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.unhandledAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
6: aload 3
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
7: aload 3
areturn
end local 3 8: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 9 1 toOpId I
1 9 2 any Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 8 3 currentInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
toOpId
private void walkTo(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
iload 1
if_icmple 1
new java.lang.AssertionError
dup
ldc "can not walk backwards"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.nextInterval:(I)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
start local 2 2: goto 20
3: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
istore 3
start local 3 4: aload 0
iload 3
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
5: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkToFixed:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;I)V
6: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkToFixed:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;I)V
7: aload 0
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkToAny:(I)V
8: aconst_null
astore 4
aconst_null
astore 5
9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "walk to op %d"
iload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 10: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activateCurrent:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifeq 13
11: aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
aload 2
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.addToListSortedByFromPositions:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.activeAnyList:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
12: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.debug:Lorg/graalvm/compiler/debug/DebugContext;
aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Unhandled:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.intervalMoved:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;)V
13: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 6
ifnull 19
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
14: astore 4
aload 6
ifnull 15
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
15: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 5
aload 4
ifnonnull 17
aload 5
astore 4
goto 18
StackMap locals:
StackMap stack:
17: aload 4
aload 5
if_acmpeq 18
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
18: aload 4
athrow
end local 3 19: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.nextInterval:(I)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
StackMap locals:
StackMap stack:
20: aload 2
ifnonnull 3
end local 2 21: aload 0
iload 1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
22: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.currentPosition:I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.maxOpId:()I
if_icmpgt 26
23: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Active:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkToFixed:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;I)V
24: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State.Inactive:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkToFixed:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;I)V
25: aload 0
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.walkToAny:(I)V
26: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanWalker;
0 27 1 toOpId I
2 21 2 currentInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
4 19 3 opId I
10 15 6 indent Lorg/graalvm/compiler/debug/Indent;
Exception table:
from to target type
10 13 14 any
9 16 16 any
MethodParameters:
Name Flags
toOpId
private static void logList(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
astore 2
start local 2 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval
StackMap stack:
aload 0
ldc "%s"
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
3: aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
astore 2
StackMap locals:
StackMap stack:
4: aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.FixedInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
if_acmpne 2
end local 2 5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 debug Lorg/graalvm/compiler/debug/DebugContext;
0 6 1 i Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
1 5 2 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/FixedInterval;
MethodParameters:
Name Flags
debug
i
private static void logList(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
astore 2
start local 2 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
ldc "%s"
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
3: aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 2
StackMap locals:
StackMap stack:
4: aload 2
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
if_acmpne 2
end local 2 5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 debug Lorg/graalvm/compiler/debug/DebugContext;
0 6 1 i Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 5 2 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
debug
i
private static void intervalMoved(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 2
1: aload 0
ldc "interval moved from %s to %s: %s"
aload 2
aload 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.IntervalHint.logString:()Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 debug Lorg/graalvm/compiler/debug/DebugContext;
0 3 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/IntervalHint;
0 3 2 from Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
0 3 3 to Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$State;
MethodParameters:
Name Flags
debug
interval
from
to
static int[] $SWITCH_TABLE$org$graalvm$compiler$lir$alloc$trace$lsra$TraceInterval$SpillState();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$SWITCH_TABLE$org$graalvm$compiler$lir$alloc$trace$lsra$TraceInterval$SpillState:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.values:()[Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
arraylength
newarray 10
astore 0
2: aload 0
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.NoDefinitionFound:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$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.trace.lsra.TraceInterval$SpillState.NoOptimization:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.ordinal:()I
iconst_5
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.trace.lsra.TraceInterval$SpillState.NoSpillStore:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$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.trace.lsra.TraceInterval$SpillState.SpillStore:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$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.trace.lsra.TraceInterval$SpillState.StartInMemory:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$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
dup
putstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanWalker.$SWITCH_TABLE$org$graalvm$compiler$lir$alloc$trace$lsra$TraceInterval$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
}
SourceFile: "TraceLinearScanWalker.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 BlockEndOp = org.graalvm.compiler.lir.StandardOp$BlockEndOp of org.graalvm.compiler.lir.StandardOp
public final LabelOp = org.graalvm.compiler.lir.StandardOp$LabelOp of org.graalvm.compiler.lir.StandardOp
public abstract ValueMoveOp = org.graalvm.compiler.lir.StandardOp$ValueMoveOp of org.graalvm.compiler.lir.StandardOp
public final RegisterPriority = org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$RegisterPriority of org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
public final SpillState = org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState of org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
final State = org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$State of org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
public Options = org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$Options of org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase
public final TraceLinearScan = org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan of org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase