public class org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker extends org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker
super_class: org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker
{
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(org.graalvm.compiler.lir.alloc.lsra.LinearScan, org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
invokespecial org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.<init>:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
0 2 1 allocator Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
0 2 2 unhandledFixedFirst Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 2 3 unhandledAnyFirst Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
allocator
unhandledFixedFirst
unhandledAnyFirst
protected void handleSpillSlot(org.graalvm.compiler.lir.alloc.lsra.Interval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
ifnonnull 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "interval not assigned "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifeq 4
2: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 3
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "interval can materialize but assigned to a stack slot "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
return
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 5
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "interval not assigned to a stack slot "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 2
start local 2 6: aconst_null
astore 3
aconst_null
astore 4
7: aload 2
ldc "LSRAOptimization"
invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
astore 5
start local 5 8: aload 2
ldc "adding stack to unhandled list %s"
aload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
9: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Stack:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.addToListSortedByStartAndUsePositions:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
10: aload 5
ifnull 16
aload 5
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
goto 16
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope
StackMap stack: java.lang.Throwable
11: astore 3
aload 5
ifnull 12
aload 5
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
end local 5 StackMap locals:
StackMap stack:
12: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
13: astore 4
aload 3
ifnonnull 14
aload 4
astore 3
goto 15
StackMap locals:
StackMap stack:
14: aload 3
aload 4
if_acmpeq 15
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
15: aload 3
athrow
16: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
0 17 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
6 17 2 debug Lorg/graalvm/compiler/debug/DebugContext;
8 12 5 s1 Lorg/graalvm/compiler/debug/DebugContext$Scope;
Exception table:
from to target type
8 10 11 any
7 13 13 any
MethodParameters:
Name Flags
interval
private static void printRegisterBindingList(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists, org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding);
descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 3
start local 3 1: goto 4
2: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 0
ldc "%s"
aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
3: aload 3
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 3
StackMap locals:
StackMap stack:
4: aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 2
end local 3 5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 debug Lorg/graalvm/compiler/debug/DebugContext;
0 6 1 list Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
0 6 2 binding Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
1 5 3 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
MethodParameters:
Name Flags
debug
list
binding
void walk();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=8, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
ldc "OptimizingLinearScanWalker"
invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.sortedBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 6
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
3: aload 7
iload 5
aaload
astore 4
start local 4 4: aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.optimizeBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
end local 4 5: iinc 5 1
StackMap locals:
StackMap stack:
6: iload 5
iload 6
if_icmplt 3
7: aload 3
ifnull 13
aload 3
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
goto 13
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope
StackMap stack: java.lang.Throwable
8: astore 1
aload 3
ifnull 9
aload 3
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
end local 3 StackMap locals:
StackMap stack:
9: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 2
aload 1
ifnonnull 11
aload 2
astore 1
goto 12
StackMap locals:
StackMap stack:
11: aload 1
aload 2
if_acmpeq 12
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
12: aload 1
athrow
13: StackMap locals:
StackMap stack:
aload 0
invokespecial org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.walk:()V
14: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
2 9 3 s Lorg/graalvm/compiler/debug/DebugContext$Scope;
4 5 4 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Exception table:
from to target type
2 7 8 any
1 10 10 any
private void optimizeBlock(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=15, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
iconst_1
if_icmpne 59
1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getFirstLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
istore 2
start local 2 2: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 3
start local 3 3: aconst_null
astore 4
aconst_null
astore 5
4: aload 3
ldc "LSRAOptimization"
invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
astore 6
start local 6 5: aload 3
ldc "next block: %s (%d)"
aload 1
iload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;I)V
6: aload 6
ifnull 12
aload 6
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
goto 12
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope
StackMap stack: java.lang.Throwable
7: astore 4
aload 6
ifnull 8
aload 6
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
end local 6 StackMap locals:
StackMap stack:
8: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 5
aload 4
ifnonnull 10
aload 5
astore 4
goto 11
StackMap locals:
StackMap stack:
10: aload 4
aload 5
if_acmpeq 11
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
11: aload 4
athrow
12: StackMap locals:
StackMap stack:
aconst_null
astore 4
aconst_null
astore 5
13: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.indent:()Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 14: aload 0
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.walkTo:(I)V
15: aconst_null
astore 7
aconst_null
astore 8
16: aload 3
ldc "LSRAOptimization"
invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
astore 9
start local 9 17: iconst_1
istore 10
start local 10 18: goto 46
19: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope int
StackMap stack:
iconst_0
istore 10
20: aconst_null
astore 11
aconst_null
astore 12
21: aload 3
ldc "Active intervals: (block %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 13
start local 13 22: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 14
start local 14 23: goto 30
24: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 3
ldc "active (any): %s"
aload 14
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
25: aload 0
iload 2
aload 1
aload 14
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.optimize:(ILorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Z
ifeq 29
26: iconst_1
istore 10
27: aload 13
ifnull 47
aload 13
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
28: goto 47
29: StackMap locals:
StackMap stack:
aload 14
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 14
StackMap locals:
StackMap stack:
30: aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 24
end local 14 31: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Stack:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 14
start local 14 32: goto 39
33: StackMap locals:
StackMap stack:
aload 3
ldc "active (stack): %s"
aload 14
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
34: aload 0
iload 2
aload 1
aload 14
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Stack:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.optimize:(ILorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Z
ifeq 38
35: iconst_1
istore 10
36: aload 13
ifnull 47
aload 13
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
37: goto 47
38: StackMap locals:
StackMap stack:
aload 14
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.next:Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 14
StackMap locals:
StackMap stack:
39: aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifeq 33
end local 14 40: aload 13
ifnull 46
aload 13
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 46
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
41: astore 11
aload 13
ifnull 42
aload 13
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 13 StackMap locals:
StackMap stack:
42: aload 11
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
43: astore 12
aload 11
ifnonnull 44
aload 12
astore 11
goto 45
StackMap locals:
StackMap stack:
44: aload 11
aload 12
if_acmpeq 45
aload 11
aload 12
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
45: aload 11
athrow
46: StackMap locals:
StackMap stack:
iload 10
ifne 19
end local 10 47: StackMap locals:
StackMap stack:
aload 9
ifnull 53
aload 9
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
goto 53
StackMap locals:
StackMap stack: java.lang.Throwable
48: astore 7
aload 9
ifnull 49
aload 9
invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
end local 9 StackMap locals:
StackMap stack:
49: aload 7
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
50: astore 8
aload 7
ifnonnull 51
aload 8
astore 7
goto 52
StackMap locals:
StackMap stack:
51: aload 7
aload 8
if_acmpeq 52
aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
52: aload 7
athrow
53: StackMap locals:
StackMap stack:
aload 6
ifnull 59
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 59
StackMap locals:
StackMap stack: java.lang.Throwable
54: astore 4
aload 6
ifnull 55
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
55: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
56: astore 5
aload 4
ifnonnull 57
aload 5
astore 4
goto 58
StackMap locals:
StackMap stack:
57: aload 4
aload 5
if_acmpeq 58
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
58: aload 4
athrow
end local 3 end local 2 59: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 60 0 this Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
0 60 1 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
2 59 2 nextBlock I
3 59 3 debug Lorg/graalvm/compiler/debug/DebugContext;
5 8 6 s1 Lorg/graalvm/compiler/debug/DebugContext$Scope;
14 55 6 indent0 Lorg/graalvm/compiler/debug/Indent;
17 49 9 s1 Lorg/graalvm/compiler/debug/DebugContext$Scope;
18 47 10 changed Z
22 42 13 indent1 Lorg/graalvm/compiler/debug/Indent;
23 31 14 active Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
32 40 14 active Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
5 6 7 any
4 9 9 any
22 27 41 any
29 36 41 any
38 40 41 any
21 28 43 any
29 37 43 any
38 43 43 any
17 47 48 any
16 50 50 any
14 53 54 any
13 56 56 any
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
MethodParameters:
Name Flags
block
private boolean optimize(int, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.alloc.lsra.Interval, org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding);
descriptor: (ILorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=15, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 1
aload 2
ifnonnull 1
new java.lang.AssertionError
dup
ldc "block must not be null"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 2
aload 3
ifnonnull 2
new java.lang.AssertionError
dup
ldc "interval must not be null"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 3
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
iconst_1
if_icmpeq 3
new java.lang.AssertionError
dup
ldc "more than one predecessors -> optimization not possible"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitChild:()Z
ifne 5
4: iconst_0
ireturn
5: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
iload 1
if_icmpne 7
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 5
start local 5 8: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 9
aload 5
ifnonnull 9
new java.lang.AssertionError
dup
ldc "active intervals must have a location assigned!"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals: jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
iconst_0
aaload
astore 6
start local 6 10: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
istore 7
start local 7 11: aload 3
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.getIntervalCoveringOpId:(I)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 8
start local 8 12: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 13
aload 8
ifnonnull 13
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "variable not live at the end of the only predecessor! "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " -> "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " interval: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
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
13: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 9
start local 9 14: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 15
aload 9
ifnonnull 15
new java.lang.AssertionError
dup
ldc "handled intervals must have a location assigned!"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
15: StackMap locals: jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 5
aload 9
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ifeq 17
16: iconst_0
ireturn
17: StackMap locals:
StackMap stack:
aload 9
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 20
aload 9
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifne 20
18: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 19
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.canMaterialize:()Z
ifne 19
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
19: StackMap locals:
StackMap stack:
iconst_0
ireturn
20: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 21
aload 5
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 21
aload 5
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifne 21
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "current location not a register or stack slot "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
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
21: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 10
start local 10 22: aconst_null
astore 11
aconst_null
astore 12
23: aload 10
ldc "location differs: %s vs. %s"
aload 9
aload 5
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 13
start local 13 24: aload 10
ldc "splitting at position %d"
iload 1
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
25: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 27
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.isBlockBegin:(I)Z
ifeq 26
iload 1
iconst_1
iand
ifeq 27
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker int org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding jdk.vm.ci.meta.AllocatableValue org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.meta.AllocatableValue org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
26: new java.lang.AssertionError
dup
ldc "split pos must be even when on block boundary"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
27: StackMap locals:
StackMap stack:
aload 3
iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.split:(ILorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 14
start local 14 28: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
aload 4
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.remove:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
29: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 30
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.currentPosition:I
if_icmpge 30
new java.lang.AssertionError
dup
ldc "cannot append new interval before current walk position"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
30: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 31
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.currentSplitChild:()Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
aload 3
if_acmpeq 31
new java.lang.AssertionError
dup
ldc "overwriting wrong currentSplitChild"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
31: StackMap locals:
StackMap stack:
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.makeCurrentSplitChild:()V
32: aload 10
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 35
33: aload 10
ldc "left interval : %s"
aload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.logString:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
34: aload 10
ldc "right interval : %s"
aload 14
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.logString:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)Ljava/lang/String;
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
35: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker$Options.LSRAOptSplitOnly:Lorg/graalvm/compiler/options/OptionKey;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 38
36: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.addToListSortedByStartAndUsePositions:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
37: goto 47
38: StackMap locals:
StackMap stack:
aload 9
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 41
39: aload 0
aload 14
aload 9
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.splitRegisterInterval:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Ljdk/vm/ci/code/Register;)V
40: goto 47
41: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 42
aload 9
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 42
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
42: StackMap locals:
StackMap stack:
aload 10
ldc "assigning interval %s to %s"
aload 14
aload 9
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
43: aload 14
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
44: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Stack:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.addToListSortedByCurrentFromPositions:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
45: aload 14
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$State.Active:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
putfield org.graalvm.compiler.lir.alloc.lsra.Interval.state:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
46: aload 0
aload 14
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.splitStackInterval:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
end local 14 47: StackMap locals:
StackMap stack:
aload 13
ifnull 53
aload 13
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 53
StackMap locals:
StackMap stack: java.lang.Throwable
48: astore 11
aload 13
ifnull 49
aload 13
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 13 StackMap locals:
StackMap stack:
49: aload 11
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
50: astore 12
aload 11
ifnonnull 51
aload 12
astore 11
goto 52
StackMap locals:
StackMap stack:
51: aload 11
aload 12
if_acmpeq 52
aload 11
aload 12
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
52: aload 11
athrow
53: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 10 end local 9 end local 8 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 54 0 this Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
0 54 1 currentPos I
0 54 2 currentBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 54 3 currentInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 54 4 binding Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
8 54 5 currentLocation Ljdk/vm/ci/meta/AllocatableValue;
10 54 6 predecessorBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
11 54 7 predEndId I
12 54 8 predecessorInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
14 54 9 predecessorLocation Ljdk/vm/ci/meta/AllocatableValue;
22 54 10 debug Lorg/graalvm/compiler/debug/DebugContext;
24 49 13 indent Lorg/graalvm/compiler/debug/Indent;
28 47 14 splitPart Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Exception table:
from to target type
24 47 48 any
23 50 50 any
Signature: (ILorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Z
MethodParameters:
Name Flags
currentPos
currentBlock
currentInterval
binding
private void splitRegisterInterval(org.graalvm.compiler.lir.alloc.lsra.Interval, jdk.vm.ci.code.Register);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Ljdk/vm/ci/code/Register;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=16, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.initVarsForAlloc:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
1: aload 0
iconst_0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.initUseLists:(Z)V
2: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.spillExcludeActiveFixed:()V
3: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 4
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.unhandledLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Fixed:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.get:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isEndMarker:()Z
ifne 4
new java.lang.AssertionError
dup
ldc "must not have unhandled fixed intervals because all fixed intervals have a use at position 0"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.spillBlockInactiveFixed:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
5: aload 0
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority.LiveAtLoopEnd:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.spillCollectActiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterPriority;)V
6: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.spillCollectInactiveAny:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
7: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
astore 3
start local 3 8: aload 3
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 35
9: aconst_null
astore 4
aconst_null
astore 5
10: aload 3
ldc "state of registers:"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 6
start local 6 11: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.availableRegs:[Ljdk/vm/ci/code/Register;
dup
astore 10
arraylength
istore 9
iconst_0
istore 8
goto 28
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.code.Register org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
12: aload 10
iload 8
aaload
astore 7
start local 7 13: aload 7
getfield jdk.vm.ci.code.Register.number:I
istore 11
start local 11 14: aconst_null
astore 12
aconst_null
astore 13
15: aload 3
ldc "reg %d: usePos: %d, blockPos: %d, intervals: "
iload 11
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.usePos:[I
iload 11
iaload
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.blockPos:[I
iload 11
iaload
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;III)Lorg/graalvm/compiler/debug/Indent;
astore 14
start local 14 16: iconst_0
istore 15
start local 15 17: goto 20
18: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.code.Register org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
aload 3
ldc "%d "
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.spillIntervals:[Ljava/util/List;
iload 11
aaload
iload 15
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.lsra.Interval
getfield org.graalvm.compiler.lir.alloc.lsra.Interval.operandNumber:I
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;I)V
19: iinc 15 1
StackMap locals:
StackMap stack:
20: iload 15
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.spillIntervals:[Ljava/util/List;
iload 11
aaload
invokeinterface java.util.List.size:()I
if_icmplt 18
end local 15 21: aload 14
ifnull 27
aload 14
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 27
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.code.Register org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.code.Register int int jdk.vm.ci.code.Register[] int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
22: astore 12
aload 14
ifnull 23
aload 14
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 14 StackMap locals:
StackMap stack:
23: aload 12
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
24: astore 13
aload 12
ifnonnull 25
aload 13
astore 12
goto 26
StackMap locals:
StackMap stack:
25: aload 12
aload 13
if_acmpeq 26
aload 12
aload 13
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
26: aload 12
athrow
end local 11 end local 7 27: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.code.Register org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent top int int jdk.vm.ci.code.Register[]
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
28: iload 8
iload 9
if_icmplt 12
29: aload 6
ifnull 35
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 35
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker org.graalvm.compiler.lir.alloc.lsra.Interval jdk.vm.ci.code.Register org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
30: astore 4
aload 6
ifnull 31
aload 6
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 6 StackMap locals:
StackMap stack:
31: aload 4
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
32: astore 5
aload 4
ifnonnull 33
aload 5
astore 4
goto 34
StackMap locals:
StackMap stack:
33: aload 4
aload 5
if_acmpeq 34
aload 4
aload 5
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
34: aload 4
athrow
35: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.blockPos:[I
aload 2
getfield jdk.vm.ci.code.Register.number:I
iaload
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.to:()I
if_icmpgt 36
iconst_1
goto 37
StackMap locals:
StackMap stack:
36: iconst_0
StackMap locals:
StackMap stack: int
37: istore 4
start local 4 38: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.blockPos:[I
aload 2
getfield jdk.vm.ci.code.Register.number:I
iaload
istore 5
start local 5 39: getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 40
iload 5
ifgt 40
new java.lang.AssertionError
dup
ldc "invalid splitPos"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
40: StackMap locals: int int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.$assertionsDisabled:Z
ifne 41
iload 4
ifne 41
iload 5
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
if_icmpgt 41
new java.lang.AssertionError
dup
ldc "splitting interval at from"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
41: StackMap locals:
StackMap stack:
aload 3
ldc "assigning interval %s to %s"
aload 1
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
42: aload 1
aload 2
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.kind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual jdk.vm.ci.code.Register.asValue:(Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/code/RegisterValue;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
43: iload 4
ifeq 45
44: aload 0
aload 1
iload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.splitWhenPartialRegisterAvailable:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;I)V
45: StackMap locals:
StackMap stack:
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.splitAndSpillIntersectingIntervals:(Ljdk/vm/ci/code/Register;)V
46: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker.activeLists:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBindingLists;
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding.Any:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists.addToListSortedByCurrentFromPositions:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval$RegisterBinding;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
47: aload 1
getstatic org.graalvm.compiler.lir.alloc.lsra.Interval$State.Active:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
putfield org.graalvm.compiler.lir.alloc.lsra.Interval.state:Lorg/graalvm/compiler/lir/alloc/lsra/Interval$State;
48: 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 49 0 this Lorg/graalvm/compiler/lir/alloc/lsra/OptimizingLinearScanWalker;
0 49 1 interval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
0 49 2 reg Ljdk/vm/ci/code/Register;
8 49 3 debug Lorg/graalvm/compiler/debug/DebugContext;
11 31 6 indent2 Lorg/graalvm/compiler/debug/Indent;
13 27 7 register Ljdk/vm/ci/code/Register;
14 27 11 i I
16 23 14 indent3 Lorg/graalvm/compiler/debug/Indent;
17 21 15 j I
38 49 4 needSplit Z
39 49 5 splitPos I
Exception table:
from to target type
16 21 22 any
15 24 24 any
11 29 30 any
10 32 32 any
MethodParameters:
Name Flags
interval
reg
public void finishAllocation();
descriptor: ()V
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokespecial org.graalvm.compiler.lir.alloc.lsra.LinearScanWalker.finishAllocation:()V
return
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "OptimizingLinearScanWalker.java"
NestMembers:
org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker$Options
InnerClasses:
public abstract Scope = org.graalvm.compiler.debug.DebugContext$Scope of org.graalvm.compiler.debug.DebugContext
final RegisterBinding = org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBinding of org.graalvm.compiler.lir.alloc.lsra.Interval
final RegisterBindingLists = org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterBindingLists of org.graalvm.compiler.lir.alloc.lsra.Interval
public final RegisterPriority = org.graalvm.compiler.lir.alloc.lsra.Interval$RegisterPriority of org.graalvm.compiler.lir.alloc.lsra.Interval
final State = org.graalvm.compiler.lir.alloc.lsra.Interval$State of org.graalvm.compiler.lir.alloc.lsra.Interval
public Options = org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker$Options of org.graalvm.compiler.lir.alloc.lsra.OptimizingLinearScanWalker