final class org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver
super_class: java.lang.Object
{
private static final org.graalvm.compiler.debug.CounterKey cycleBreakingSlotsAllocated;
descriptor: Lorg/graalvm/compiler/debug/CounterKey;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int STACK_SLOT_IN_CALLER_FRAME_IDX;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1
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 int insertIdx;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private org.graalvm.compiler.lir.LIRInsertionBuffer insertionBuffer;
descriptor: Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
flags: (0x0002) ACC_PRIVATE
private final java.util.ArrayList<org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval> mappingFrom;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;>;
private final java.util.ArrayList<jdk.vm.ci.meta.Constant> mappingFromOpr;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Ljdk/vm/ci/meta/Constant;>;
private final java.util.ArrayList<org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval> mappingTo;
descriptor: Ljava/util/ArrayList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;>;
private final int[] registerBlocked;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int[] stackBlocked;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private final int firstVirtualStackIndex;
descriptor: I
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
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/trace/lsra/TraceLocalMoveResolver;
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.TraceLocalMoveResolver.$assertionsDisabled:Z
3: ldc "TraceRA[cycleBreakingSlotsAllocated(local)]"
invokestatic org.graalvm.compiler.debug.DebugContext.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/CounterKey;
putstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/CounterKey;
4: return
LocalVariableTable:
Start End Slot Name Signature
private int getStackArrayIndex(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isStackSlot:(Ljdk/vm/ci/meta/Value;)Z
ifeq 2
1: aload 0
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asStackSlot:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/StackSlot;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getStackArrayIndex:(Ljdk/vm/ci/code/StackSlot;)I
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot:(Ljdk/vm/ci/meta/Value;)Z
ifeq 4
3: aload 0
aload 1
invokestatic org.graalvm.compiler.lir.LIRValueUtil.asVirtualStackSlot:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/VirtualStackSlot;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getStackArrayIndex:(Lorg/graalvm/compiler/lir/VirtualStackSlot;)I
ireturn
4: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "value is not 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;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 5 1 stackSlotValue Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
stackSlotValue
private int getStackArrayIndex(jdk.vm.ci.code.StackSlot);
descriptor: (Ljdk/vm/ci/code/StackSlot;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.vm.ci.code.StackSlot.isInCallerFrame:()Z
ifeq 3
1: iconst_m1
istore 2
start local 2 2: goto 8
end local 2 3: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 4
aload 1
invokevirtual jdk.vm.ci.code.StackSlot.getRawAddFrameSize:()Z
ifne 4
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unexpected 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
4: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.vm.ci.code.StackSlot.getRawOffset:()I
ineg
istore 3
start local 3 5: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 7
iload 3
iflt 6
iload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.firstVirtualStackIndex:I
if_icmplt 7
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver jdk.vm.ci.code.StackSlot top int
StackMap stack:
6: new java.lang.AssertionError
dup
ldc "Wrong stack slot offset: %d (first virtual stack slot index: %d"
iconst_2
anewarray java.lang.Object
dup
iconst_0
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.firstVirtualStackIndex:I
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
7: StackMap locals:
StackMap stack:
iload 3
istore 2
end local 3 start local 2 8: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver jdk.vm.ci.code.StackSlot int
StackMap stack:
iload 2
ireturn
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/TraceLocalMoveResolver;
0 9 1 stackSlot Ljdk/vm/ci/code/StackSlot;
2 3 2 stackIdx I
8 9 2 stackIdx I
5 8 3 offset I
MethodParameters:
Name Flags
stackSlot
private int getStackArrayIndex(org.graalvm.compiler.lir.VirtualStackSlot);
descriptor: (Lorg/graalvm/compiler/lir/VirtualStackSlot;)I
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.TraceLocalMoveResolver.firstVirtualStackIndex:I
aload 1
invokevirtual org.graalvm.compiler.lir.VirtualStackSlot.getId:()I
iadd
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 1 1 virtualStackSlot Lorg/graalvm/compiler/lir/VirtualStackSlot;
MethodParameters:
Name Flags
virtualStackSlot
protected void setValueBlocked(jdk.vm.ci.meta.Value, int);
descriptor: (Ljdk/vm/ci/meta/Value;I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
iload 2
iconst_1
if_icmpeq 1
iload 2
iconst_m1
if_icmpeq 1
new java.lang.AssertionError
dup
ldc "out of bounds"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 9
2: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getStackArrayIndex:(Ljdk/vm/ci/meta/Value;)I
istore 3
start local 3 3: iload 3
iconst_m1
if_icmpne 5
4: return
5: StackMap locals: int
StackMap stack:
iload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
arraylength
if_icmplt 7
6: aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
iload 3
iconst_1
iadd
invokestatic java.util.Arrays.copyOf:([II)[I
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
7: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
iload 3
dup2
iaload
iload 2
iadd
iastore
end local 3 8: goto 14
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 10
iload 2
iconst_1
if_icmpeq 10
iload 2
iconst_m1
if_icmpeq 10
new java.lang.AssertionError
dup
ldc "out of bounds"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 13
11: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.registerBlocked:[I
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
dup2
iaload
iload 2
iadd
iastore
12: goto 14
13: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "unhandled value "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
14: StackMap locals:
StackMap stack:
return
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/TraceLocalMoveResolver;
0 15 1 location Ljdk/vm/ci/meta/Value;
0 15 2 direction I
3 8 3 stackIdx I
MethodParameters:
Name Flags
location
direction
protected org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval getMappingFrom(int);
descriptor: (I)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 1 1 i I
MethodParameters:
Name Flags
i
protected int mappingFromSize();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
protected int valueBlocked(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 7
1: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getStackArrayIndex:(Ljdk/vm/ci/meta/Value;)I
istore 2
start local 2 2: iload 2
iconst_m1
if_icmpne 4
3: iconst_1
ireturn
4: StackMap locals: int
StackMap stack:
iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
arraylength
if_icmplt 6
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
iload 2
iaload
ireturn
end local 2 7: StackMap locals:
StackMap stack:
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 9
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.registerBlocked:[I
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
getfield jdk.vm.ci.code.Register.number:I
iaload
ireturn
9: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "unhandled value "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 10 1 location Ljdk/vm/ci/meta/Value;
2 7 2 stackIdx I
MethodParameters:
Name Flags
location
protected static boolean areMultipleReadsAllowed();
descriptor: ()Z
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: iconst_1
ireturn
LocalVariableTable:
Start End Slot Name Signature
boolean hasMappings();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifle 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
protected org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan getAllocator();
descriptor: ()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
protected void <init>(org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
3: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
4: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
5: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
6: aload 0
iconst_m1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
7: aload 0
new org.graalvm.compiler.lir.LIRInsertionBuffer
dup
invokespecial org.graalvm.compiler.lir.LIRInsertionBuffer.<init>:()V
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
8: aload 0
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
newarray 10
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.registerBlocked:[I
9: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getFrameMapBuilder:()Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
checkcast org.graalvm.compiler.lir.framemap.FrameMapBuilderTool
astore 2
start local 2 10: aload 2
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilderTool.getFrameMap:()Lorg/graalvm/compiler/lir/framemap/FrameMap;
astore 3
start local 3 11: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilderTool.getNumberOfStackSlots:()I
newarray 10
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
12: aload 0
aload 3
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.frameNeedsAllocating:()Z
ifne 13
iconst_0
goto 14
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan org.graalvm.compiler.lir.framemap.FrameMapBuilderTool org.graalvm.compiler.lir.framemap.FrameMap
StackMap stack: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver
13: aload 3
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.currentFrameSize:()I
iconst_1
iadd
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan org.graalvm.compiler.lir.framemap.FrameMapBuilderTool org.graalvm.compiler.lir.framemap.FrameMap
StackMap stack: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver int
14: putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.firstVirtualStackIndex:I
15: return
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/TraceLocalMoveResolver;
0 16 1 allocator Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
10 16 2 frameMapBuilderTool Lorg/graalvm/compiler/lir/framemap/FrameMapBuilderTool;
11 16 3 frameMap Lorg/graalvm/compiler/lir/framemap/FrameMap;
MethodParameters:
Name Flags
allocator
protected boolean checkEmpty();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
ldc "list must be empty before and after processing"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 3: goto 6
4: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 5
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
iload 1
iaload
ifeq 5
new java.lang.AssertionError
dup
ldc "stack map must be empty before and after processing"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
6: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.stackBlocked:[I
arraylength
if_icmplt 4
end local 1 7: iconst_0
istore 1
start local 1 8: goto 11
9: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 10
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.registerBlocked:[I
iload 1
iaload
ifeq 10
new java.lang.AssertionError
dup
ldc "register map must be empty before and after processing"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
10: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
11: iload 1
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
if_icmplt 9
end local 1 12: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.checkMultipleReads:()V
13: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
3 7 1 i I
8 12 1 i I
protected void checkMultipleReads();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
private boolean verifyBeforeResolve();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmpeq 1
new java.lang.AssertionError
dup
ldc "length must be equal"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmpeq 2
new java.lang.AssertionError
dup
ldc "length must be equal"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
iconst_m1
if_icmpne 3
new java.lang.AssertionError
dup
ldc "insert position not set"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.areMultipleReadsAllowed:()Z
ifne 13
4: iconst_0
istore 1
start local 1 5: goto 12
6: StackMap locals: int
StackMap stack:
iload 1
iconst_1
iadd
istore 2
start local 2 7: goto 10
8: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 9
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
ifnull 9
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
if_acmpne 9
new java.lang.AssertionError
dup
ldc "cannot read from same interval twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
9: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
10: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 8
11: iinc 1 1
end local 2 StackMap locals:
StackMap stack:
12: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 6
end local 1 13: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 14: goto 21
15: StackMap locals: int
StackMap stack:
iload 1
iconst_1
iadd
istore 2
start local 2 16: goto 19
17: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 18
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
iload 2
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
if_acmpne 18
new java.lang.AssertionError
dup
ldc "cannot write to same interval twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
18: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
19: iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 17
20: iinc 1 1
end local 2 StackMap locals:
StackMap stack:
21: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 15
22: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 3
start local 3 23: invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.areMultipleReadsAllowed:()Z
ifne 31
24: iconst_0
istore 1
goto 30
25: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver int top java.util.HashSet
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 4
start local 4 26: aload 4
ifnull 29
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifne 29
27: aload 3
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
istore 5
start local 5 28: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 29
iload 5
ifne 29
new java.lang.AssertionError
dup
ldc "cannot read from same register twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 5 end local 4 29: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
30: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 25
31: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.HashSet.clear:()V
32: iconst_0
istore 1
goto 39
33: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 4
start local 4 34: aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 36
35: goto 38
36: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 3
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
istore 5
start local 5 37: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 38
iload 5
ifne 38
new java.lang.AssertionError
dup
ldc "cannot write to same register twice"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 5 end local 4 38: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
39: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
if_icmplt 33
40: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.verifyStackSlotMapping:()V
41: iconst_1
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 42 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
5 13 1 i I
14 42 1 i I
7 12 2 j I
16 21 2 j I
23 42 3 usedRegs Ljava/util/HashSet<Ljdk/vm/ci/meta/Value;>;
26 29 4 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
28 29 5 unique Z
34 38 4 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
37 38 5 unique Z
protected void verifyStackSlotMapping();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
private void blockRegisters(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 2
start local 2 1: aload 2
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 6
2: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.areMultipleReadsAllowed:()Z
ifne 3
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
ifeq 3
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "location already marked as used: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals: jdk.vm.ci.meta.Value
StackMap stack:
iconst_1
istore 3
start local 3 4: aload 0
aload 2
iload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.setValueBlocked:(Ljdk/vm/ci/meta/Value;I)V
5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "block %s"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
end local 3 6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 7 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 7 2 location Ljdk/vm/ci/meta/Value;
4 6 3 direction I
MethodParameters:
Name Flags
interval
private void unblockRegisters(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 2
start local 2 1: aload 2
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
2: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
ifgt 3
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "location already marked as unused: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals: jdk.vm.ci.meta.Value
StackMap stack:
aload 0
aload 2
iconst_m1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.setValueBlocked:(Ljdk/vm/ci/meta/Value;I)V
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "unblock %s"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 6 1 interval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
1 6 2 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
interval
private boolean safeToProcessMove(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;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 1
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
goto 2
StackMap locals:
StackMap stack:
1: aconst_null
StackMap locals:
StackMap stack: jdk.vm.ci.meta.AllocatableValue
2: astore 3
start local 3 3: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 4
start local 4 4: aload 4
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 7
5: aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
iconst_1
if_icmpgt 6
aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
iconst_1
if_icmpne 7
aload 3
aload 4
invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.isMoveToSelf:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
ifne 7
6: StackMap locals: jdk.vm.ci.meta.Value jdk.vm.ci.meta.Value
StackMap stack:
iconst_0
ireturn
7: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 8 1 from Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 8 2 to Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
3 8 3 fromReg Ljdk/vm/ci/meta/Value;
4 8 4 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
from
to
protected static boolean isMoveToSelf(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 1
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
aload 0
invokevirtual jdk.vm.ci.meta.Value.equals:(Ljava/lang/Object;)Z
ifeq 3
2: iconst_1
ireturn
3: StackMap locals:
StackMap stack:
aload 0
ifnull 5
aload 0
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 5
aload 0
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
invokevirtual jdk.vm.ci.code.Register.equals:(Ljava/lang/Object;)Z
ifeq 5
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 from Ljdk/vm/ci/meta/Value;
0 6 1 to Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
from
to
protected static boolean mightBeBlocked(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)Z
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 4
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
location
private void createInsertionBuffer(java.util.List<org.graalvm.compiler.lir.LIRInstruction>);
descriptor: (Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
ifeq 1
new java.lang.AssertionError
dup
ldc "overwriting existing buffer"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 1
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.init:(Ljava/util/List;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 3 1 list Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;)V
MethodParameters:
Name Flags
list
private void appendInsertionBuffer();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
ifeq 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.finish:()V
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
ifeq 3
new java.lang.AssertionError
dup
ldc "must be uninitialized now"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
iconst_m1
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
private void insertMove(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;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
if_icmpne 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "from and to interval equal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getKind:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/ValueKind;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;)Z
ifne 2
new java.lang.AssertionError
dup
ldc "move between different types"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
iconst_m1
if_icmpne 3
new java.lang.AssertionError
dup
ldc "must setup insert position first"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getOperand:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/AllocatableValue;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getOperand:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/AllocatableValue;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.createMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "insert move from %s to %s at %d"
aload 1
aload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
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
6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 7 1 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 7 2 toInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
fromInterval
toInterval
protected org.graalvm.compiler.lir.LIRInstruction createMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue);
descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 4
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 2
aload 3
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 2
aload 1
invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createStackMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 2
aload 1
invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/LIRInstruction;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 3 1 fromOpr Ljdk/vm/ci/meta/AllocatableValue;
0 3 2 toOpr Ljdk/vm/ci/meta/AllocatableValue;
0 3 3 fromLocation Ljdk/vm/ci/meta/AllocatableValue;
0 3 4 toLocation Ljdk/vm/ci/meta/AllocatableValue;
MethodParameters:
Name Flags
fromOpr
toOpr
fromLocation
toLocation
private void insertMove(jdk.vm.ci.meta.Constant, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
iconst_m1
if_icmpne 1
new java.lang.AssertionError
dup
ldc "must setup insert position first"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getOperand:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/AllocatableValue;
astore 3
start local 3 2: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 3
aload 1
invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createLoad:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Constant;)Lorg/graalvm/compiler/lir/LIRInstruction;
astore 4
start local 4 3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
aload 4
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "insert move from value %s to %s at %d"
aload 1
aload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
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
6: StackMap locals: jdk.vm.ci.meta.AllocatableValue org.graalvm.compiler.lir.LIRInstruction
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 7 1 fromOpr Ljdk/vm/ci/meta/Constant;
0 7 2 toInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
2 7 3 toOpr Ljdk/vm/ci/meta/AllocatableValue;
3 7 4 move Lorg/graalvm/compiler/lir/LIRInstruction;
MethodParameters:
Name Flags
fromOpr
toInterval
private void resolveMappings();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=10, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "resolveMapping"
invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.verifyBeforeResolve:()Z
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 5
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.printMapping:()V
5: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 4
start local 4 6: goto 11
7: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 5
start local 5 8: aload 5
ifnull 10
9: aload 0
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.blockRegisters:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
end local 5 10: StackMap locals:
StackMap stack:
iinc 4 -1
StackMap locals:
StackMap stack:
11: iload 4
ifge 7
12: aconst_null
astore 5
start local 5 13: goto 40
14: StackMap locals: java.util.ArrayList
StackMap stack:
iconst_0
istore 6
start local 6 15: iconst_m1
istore 7
start local 7 16: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 4
goto 37
17: StackMap locals: int int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 8
start local 8 18: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 9
start local 9 19: aload 0
aload 8
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.safeToProcessMove:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Z
ifeq 34
20: aload 8
ifnull 24
21: aload 0
aload 8
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertMove:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
22: aload 0
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.unblockRegisters:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
23: goto 25
24: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertMove:(Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
25: StackMap locals:
StackMap stack:
aload 9
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 29
26: aload 5
ifnonnull 28
27: new java.util.ArrayList
dup
iconst_2
invokespecial java.util.ArrayList.<init>:(I)V
astore 5
28: StackMap locals:
StackMap stack:
aload 5
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
29: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
30: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
31: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
32: iconst_1
istore 6
33: goto 36
StackMap locals:
StackMap stack:
34: aload 8
ifnull 36
aload 8
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 36
aload 5
ifnull 35
aload 5
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
ifne 36
35: StackMap locals:
StackMap stack:
iload 4
istore 7
end local 9 end local 8 36: StackMap locals:
StackMap stack:
iinc 4 -1
StackMap locals:
StackMap stack:
37: iload 4
ifge 17
38: iload 6
ifne 40
39: aload 0
iload 7
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.breakCycle:(I)V
end local 7 end local 6 40: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
ifgt 14
end local 5 end local 4 41: aload 3
ifnull 47
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 47
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
42: astore 1
aload 3
ifnull 43
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
43: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
44: astore 2
aload 1
ifnonnull 45
aload 2
astore 1
goto 46
StackMap locals:
StackMap stack:
45: aload 1
aload 2
if_acmpeq 46
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
46: aload 1
athrow
47: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 48
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.checkEmpty:()Z
ifne 48
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
48: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 49 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
2 43 3 indent Lorg/graalvm/compiler/debug/Indent;
6 41 4 i I
8 10 5 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
13 41 5 busySpillSlots Ljava/util/ArrayList<Ljdk/vm/ci/meta/AllocatableValue;>;
15 40 6 processedInterval Z
16 40 7 spillCandidate I
18 36 8 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
19 36 9 toInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
Exception table:
from to target type
2 41 42 any
1 44 44 any
protected void breakCycle(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: iload 1
iconst_m1
if_icmpeq 10
1: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 2
iload 1
iconst_m1
if_icmpne 2
new java.lang.AssertionError
dup
ldc "no interval in register for spilling found"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 2
start local 2 3: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
astore 3
start local 3 4: aload 3
ifnonnull 8
5: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getFrameMapBuilder:()Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
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 org.graalvm.compiler.lir.framemap.FrameMapBuilder.allocateSpillSlot:(Ljdk/vm/ci/meta/ValueKind;)Lorg/graalvm/compiler/lir/VirtualStackSlot;
astore 3
6: aload 2
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.setSpillSlot:(Ljdk/vm/ci/meta/AllocatableValue;)V
7: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/CounterKey;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokeinterface org.graalvm.compiler.debug.CounterKey.increment:(Lorg/graalvm/compiler/debug/DebugContext;)V
8: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 0
iload 1
aload 2
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.spillInterval:(ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Ljdk/vm/ci/meta/AllocatableValue;)V
9: return
end local 3 end local 2 10: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 11
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromSize:()I
iconst_1
if_icmpgt 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 12: aload 0
iload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getMappingFrom:(I)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 3
start local 3 13: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getFrameMapBuilder:()Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 3
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 org.graalvm.compiler.lir.framemap.FrameMapBuilder.allocateSpillSlot:(Ljdk/vm/ci/meta/ValueKind;)Lorg/graalvm/compiler/lir/VirtualStackSlot;
astore 4
start local 4 14: aload 0
iload 2
aload 3
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.spillInterval:(ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Ljdk/vm/ci/meta/AllocatableValue;)V
15: return
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/TraceLocalMoveResolver;
0 16 1 spillCandidate I
3 10 2 fromInterval1 Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
4 10 3 spillSlot1 Ljdk/vm/ci/meta/AllocatableValue;
12 16 2 stackSpillCandidate I
13 16 3 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
14 16 4 spillSlot Lorg/graalvm/compiler/lir/VirtualStackSlot;
MethodParameters:
Name Flags
spillCandidate
protected void spillInterval(int, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval, jdk.vm.ci.meta.AllocatableValue);
descriptor: (ILorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Ljdk/vm/ci/meta/AllocatableValue;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
aload 2
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.createDerivedInterval:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
astore 4
start local 4 2: aload 4
iconst_1
iconst_2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.addRange:(II)V
3: aload 4
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.assignLocation:(Ljdk/vm/ci/meta/AllocatableValue;)V
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "created new Interval for spilling: %s"
aload 4
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
6: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
StackMap stack:
aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.blockRegisters:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
7: aload 0
aload 2
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertMove:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 1
aload 4
invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
9: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.unblockRegisters:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 11 1 spillCandidate I
0 11 2 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 11 3 spillSlot Ljdk/vm/ci/meta/AllocatableValue;
2 11 4 spillInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
spillCandidate
fromInterval
spillSlot
private void printMapping();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, 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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "Mapping"
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.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 4
start local 4 3: goto 13
4: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 5
start local 5 5: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
astore 6
start local 6 6: aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
astore 8
start local 8 7: aload 5
ifnonnull 10
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
iload 4
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Constant
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 7
start local 7 9: goto 11
end local 7 10: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval top jdk.vm.ci.meta.Value
StackMap stack:
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 7
start local 7 11: StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.String jdk.vm.ci.meta.Value
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "move %s <- %s"
aload 7
aload 8
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
end local 8 end local 7 end local 6 end local 5 12: iinc 4 -1
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
13: iload 4
ifge 4
end local 4 14: aload 3
ifnull 20
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 20
StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
15: astore 1
aload 3
ifnull 16
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
16: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 2
aload 1
ifnonnull 18
aload 2
astore 1
goto 19
StackMap locals:
StackMap stack:
18: aload 1
aload 2
if_acmpeq 19
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 1
athrow
20: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
2 16 3 indent Lorg/graalvm/compiler/debug/Indent;
3 14 4 i I
5 12 5 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
6 12 6 toInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
9 10 7 from Ljava/lang/String;
11 12 7 from Ljava/lang/String;
7 12 8 to Ljdk/vm/ci/meta/Value;
Exception table:
from to target type
2 14 15 any
1 17 17 any
void setInsertPosition(java.util.List<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/List;I)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
iconst_m1
if_icmpeq 1
new java.lang.AssertionError
dup
ldc "use moveInsertPosition instead of setInsertPosition when data already set"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.createInsertionBuffer:(Ljava/util/List;)V
2: aload 0
iload 2
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 4 1 insertList Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
0 4 2 insertIdx I
Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;I)V
MethodParameters:
Name Flags
insertList
insertIdx
void moveInsertPosition(java.util.List<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/List;I)V
flags: (0x0000)
Code:
stack=7, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
ifnull 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
aload 1
if_acmpne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
iload 2
if_icmpeq 2
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.resolveMappings:()V
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
aload 1
if_acmpne 3
iload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
if_icmpge 3
new java.lang.AssertionError
dup
ldc "Decreasing insert index: old=%d new=%d"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
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
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.lirList:()Ljava/util/List;
aload 1
if_acmpeq 6
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.appendInsertionBuffer:()V
5: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.createInsertionBuffer:(Ljava/util/List;)V
6: StackMap locals:
StackMap stack:
aload 0
iload 2
putfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.insertIdx:I
7: 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/TraceLocalMoveResolver;
0 8 1 newInsertList Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
0 8 2 newInsertIdx I
Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;I)V
MethodParameters:
Name Flags
newInsertList
newInsertIdx
public void addMapping(org.graalvm.compiler.lir.alloc.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;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 4
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.canMaterialize:()Z
ifeq 4
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "no store to rematerializable interval %s needed"
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
3: StackMap locals:
StackMap stack:
return
4: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.canMaterialize:()Z
ifeq 8
5: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.getMaterializedValue:()Ljdk/vm/ci/meta/JavaConstant;
astore 3
start local 3 6: aload 0
aload 3
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.addMapping:(Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
7: return
end local 3 8: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "add move mapping from %s to %s"
aload 1
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
10: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 11
aload 1
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
aload 2
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
if_icmpne 11
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "from and to interval equal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.$assertionsDisabled:Z
ifne 14
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getKind:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/ValueKind;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;)Z
ifne 14
new java.lang.AssertionError
dup
12: ldc "Kind mismatch: %s vs. %s, from=%s, to=%s"
iconst_4
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.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;
aastore
dup
iconst_1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getKind:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_2
aload 1
aastore
dup
iconst_3
aload 2
aastore
13: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
aload 1
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
15: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
aconst_null
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
16: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
aload 2
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
17: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 18 1 fromInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
0 18 2 toInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
6 8 3 rematValue Ljdk/vm/ci/meta/JavaConstant;
MethodParameters:
Name Flags
fromInterval
toInterval
public void addMapping(jdk.vm.ci.meta.Constant, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
descriptor: (Ljdk/vm/ci/meta/Constant;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
ifeq 2
1: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.debug:Lorg/graalvm/compiler/debug/DebugContext;
ldc "add move mapping from %s to %s"
aload 1
aload 2
invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFrom:Ljava/util/ArrayList;
aconst_null
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
3: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingFromOpr:Ljava/util/ArrayList;
aload 1
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
4: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.mappingTo:Ljava/util/ArrayList;
aload 2
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
0 6 1 fromOpr Ljdk/vm/ci/meta/Constant;
0 6 2 toInterval Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
MethodParameters:
Name Flags
fromOpr
toInterval
void resolveAndAppendMoves();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.hasMappings:()Z
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.resolveMappings:()V
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLocalMoveResolver.appendInsertionBuffer:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLocalMoveResolver;
}
SourceFile: "TraceLocalMoveResolver.java"
InnerClasses:
public final TraceLinearScan = org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan of org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase
public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool