public final class org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver extends org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolutionPhase$MoveResolver
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver
super_class: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolutionPhase$MoveResolver
{
private static final org.graalvm.compiler.debug.DebugCounter cycleBreakingSlotsAllocated;
descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.graalvm.compiler.debug.DebugCounter cycleBreakingSlotsReused;
descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, 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.List<jdk.vm.ci.meta.Value> mappingFrom;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljdk/vm/ci/meta/Value;>;
private final java.util.List<jdk.vm.ci.meta.Value> mappingFromStack;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljdk/vm/ci/meta/Value;>;
private final java.util.List<jdk.vm.ci.meta.AllocatableValue> mappingTo;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljdk/vm/ci/meta/AllocatableValue;>;
private final int[] registerBlocked;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, 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 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.lir.gen.LIRGeneratorTool$MoveFactory spillMoveFactory;
descriptor: Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.compiler.lir.framemap.FrameMapBuilder frameMapBuilder;
descriptor: Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
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/TraceGlobalMoveResolver;
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.TraceGlobalMoveResolver.$assertionsDisabled:Z
3: ldc "TraceRA[cycleBreakingSlotsAllocated(global)]"
invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
putstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/DebugCounter;
4: ldc "TraceRA[cycleBreakingSlotsReused(global)]"
invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
putstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.cycleBreakingSlotsReused:Lorg/graalvm/compiler/debug/DebugCounter;
5: return
LocalVariableTable:
Start End Slot Name Signature
private void setValueBlocked(jdk.vm.ci.meta.Value, int);
descriptor: (Ljdk/vm/ci/meta/Value;I)V
flags: (0x0002) ACC_PRIVATE
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.TraceGlobalMoveResolver.$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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.stackBlocked:[I
arraylength
if_icmplt 7
6: aload 0
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.stackBlocked:[I
iload 3
iconst_1
iadd
invokestatic java.util.Arrays.copyOf:([II)[I
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.stackBlocked:[I
7: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.$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.TraceGlobalMoveResolver.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/TraceGlobalMoveResolver;
0 15 1 location Ljdk/vm/ci/meta/Value;
0 15 2 direction I
3 8 3 stackIdx I
MethodParameters:
Name Flags
location
direction
private int valueBlocked(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)I
flags: (0x0002) ACC_PRIVATE
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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.stackBlocked:[I
arraylength
if_icmplt 6
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.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/TraceGlobalMoveResolver;
0 10 1 location Ljdk/vm/ci/meta/Value;
2 7 2 stackIdx I
MethodParameters:
Name Flags
location
private static boolean areMultipleReadsAllowed();
descriptor: ()Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: iconst_1
ireturn
LocalVariableTable:
Start End Slot Name Signature
private boolean hasMappings();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.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/TraceGlobalMoveResolver;
private org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory getSpillMoveFactory();
descriptor: ()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.spillMoveFactory:Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
private jdk.vm.ci.code.RegisterArray getRegisters();
descriptor: ()Ljdk/vm/ci/code/RegisterArray;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.frameMapBuilder:Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilder.getRegisterConfig:()Ljdk/vm/ci/code/RegisterConfig;
invokeinterface jdk.vm.ci.code.RegisterConfig.getAllocatableRegisters:()Ljdk/vm/ci/code/RegisterArray;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
public void <init>(org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory, jdk.vm.ci.code.Architecture);
descriptor: (Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;Ljdk/vm/ci/code/Architecture;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolutionPhase$MoveResolver.<init>:()V
1: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
2: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
3: aload 0
new java.util.ArrayList
dup
bipush 8
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
4: aload 0
iconst_m1
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.insertIdx:I
5: aload 0
new org.graalvm.compiler.lir.LIRInsertionBuffer
dup
invokespecial org.graalvm.compiler.lir.LIRInsertionBuffer.<init>:()V
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
6: aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getFrameMapBuilder:()Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.frameMapBuilder:Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
7: aload 0
aload 2
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.spillMoveFactory:Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
8: aload 0
aload 3
invokevirtual jdk.vm.ci.code.Architecture.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
newarray 10
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.registerBlocked:[I
9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.frameMapBuilder:Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
checkcast org.graalvm.compiler.lir.framemap.FrameMapBuilderTool
astore 4
start local 4 10: aload 0
aload 4
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilderTool.getNumberOfStackSlots:()I
newarray 10
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.stackBlocked:[I
11: aload 4
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilderTool.getFrameMap:()Lorg/graalvm/compiler/lir/framemap/FrameMap;
astore 5
start local 5 12: aload 0
aload 5
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.frameNeedsAllocating:()Z
ifne 13
iconst_0
goto 14
StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory jdk.vm.ci.code.Architecture org.graalvm.compiler.lir.framemap.FrameMapBuilderTool org.graalvm.compiler.lir.framemap.FrameMap
StackMap stack: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver
13: aload 5
invokevirtual org.graalvm.compiler.lir.framemap.FrameMap.currentFrameSize:()I
iconst_1
iadd
StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory jdk.vm.ci.code.Architecture org.graalvm.compiler.lir.framemap.FrameMapBuilderTool org.graalvm.compiler.lir.framemap.FrameMap
StackMap stack: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver int
14: putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.firstVirtualStackIndex:I
15: 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 16 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
0 16 1 res Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
0 16 2 spillMoveFactory Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
0 16 3 arch Ljdk/vm/ci/code/Architecture;
10 16 4 frameMapBuilderTool Lorg/graalvm/compiler/lir/framemap/FrameMapBuilderTool;
12 16 5 frameMap Lorg/graalvm/compiler/lir/framemap/FrameMap;
MethodParameters:
Name Flags
res
spillMoveFactory
arch
private boolean checkEmpty();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 4
2: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.stackBlocked:[I
iload 1
iaload
ifeq 3
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
3: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
4: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.stackBlocked:[I
arraylength
if_icmplt 2
end local 1 5: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 7
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 6
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 6
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifeq 7
StackMap locals:
StackMap stack:
6: new java.lang.AssertionError
dup
ldc "list must be empty before and after processing"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 8: goto 11
9: StackMap locals: int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 10
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.getRegisters:()Ljdk/vm/ci/code/RegisterArray;
invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
if_icmplt 9
end local 1 12: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
1 5 1 i I
8 12 1 i I
private boolean verifyBeforeResolve();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=1
start local 0 0: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmpne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmpeq 2
StackMap locals:
StackMap stack:
1: 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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 9
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
ifnull 9
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 2
invokeinterface java.util.List.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.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.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.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 18
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 2
invokeinterface java.util.List.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.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.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.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 15
22: iconst_0
istore 1
goto 26
23: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 3
start local 3 24: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 25
aload 3
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 25
aload 0
aload 3
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.getStackArrayIndex:(Ljdk/vm/ci/meta/Value;)I
iconst_m1
if_icmpne 25
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Cannot move to in argument: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
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
end local 3 25: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
26: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 23
27: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 3
start local 3 28: invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.areMultipleReadsAllowed:()Z
ifne 36
29: iconst_0
istore 1
goto 35
30: StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver int top java.util.HashSet
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 4
start local 4 31: aload 4
ifnull 34
aload 4
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifne 34
32: aload 3
aload 4
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
istore 5
start local 5 33: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 34
iload 5
ifne 34
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 34: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
35: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 30
36: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.HashSet.clear:()V
37: iconst_0
istore 1
goto 44
38: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 4
start local 4 39: aload 4
invokestatic jdk.vm.ci.code.ValueUtil.isIllegal:(Ljdk/vm/ci/meta/Value;)Z
ifeq 41
40: goto 43
41: StackMap locals: jdk.vm.ci.meta.Value
StackMap stack:
aload 3
aload 4
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
istore 5
start local 5 42: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 43
iload 5
ifne 43
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 43: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
44: iload 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 38
45: iconst_1
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 46 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
5 13 1 i I
14 46 1 i I
7 12 2 j I
16 21 2 j I
24 25 3 to Ljdk/vm/ci/meta/Value;
28 46 3 usedRegs Ljava/util/HashSet<Ljdk/vm/ci/meta/Value;>;
31 34 4 from Ljdk/vm/ci/meta/Value;
33 34 5 unique Z
39 43 4 to Ljdk/vm/ci/meta/Value;
42 43 5 unique Z
private void block(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 4
1: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 2
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.areMultipleReadsAllowed:()Z
ifne 2
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
ifeq 2
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 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.setValueBlocked:(Ljdk/vm/ci/meta/Value;I)V
3: ldc "block %s"
aload 1
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
0 5 1 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
location
private void unblock(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 4
1: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 2
aload 0
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
ifgt 2
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 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_m1
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.setValueBlocked:(Ljdk/vm/ci/meta/Value;I)V
3: ldc "unblock %s"
aload 1
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
0 5 1 location Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
location
private boolean safeToProcessMove(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mightBeBlocked:(Ljdk/vm/ci/meta/Value;)Z
ifeq 3
1: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
iconst_1
if_icmpgt 2
aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.valueBlocked:(Ljdk/vm/ci/meta/Value;)I
iconst_1
if_icmpne 3
aload 1
aload 2
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.isMoveToSelf:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
ifne 3
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
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/TraceGlobalMoveResolver;
0 4 1 fromLocation Ljdk/vm/ci/meta/Value;
0 4 2 toLocation Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
fromLocation
toLocation
public 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: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$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
ifnonnull 5
4: iconst_0
ireturn
5: StackMap locals:
StackMap stack:
aload 0
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceUtil.isShadowedRegisterValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 13
6: aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceUtil.isShadowedRegisterValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 8
7: iconst_0
ireturn
8: StackMap locals:
StackMap stack:
aload 0
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceUtil.asShadowedRegisterValue:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/alloc/trace/ShadowedRegisterValue;
astore 2
start local 2 9: aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.ShadowedRegisterValue.getRegister:()Ljdk/vm/ci/code/RegisterValue;
aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.isRegisterToRegisterMoveToSelf:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
ifeq 11
10: iconst_1
ireturn
11: StackMap locals: org.graalvm.compiler.lir.alloc.trace.ShadowedRegisterValue
StackMap stack:
aload 1
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 14
12: aload 1
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.ShadowedRegisterValue.getStackSlot:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual jdk.vm.ci.meta.Value.equals:(Ljava/lang/Object;)Z
ireturn
end local 2 13: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.isRegisterToRegisterMoveToSelf:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
ireturn
14: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 from Ljdk/vm/ci/meta/Value;
0 15 1 to Ljdk/vm/ci/meta/Value;
9 13 2 shadowed Lorg/graalvm/compiler/lir/alloc/trace/ShadowedRegisterValue;
MethodParameters:
Name Flags
from
to
private static boolean isRegisterToRegisterMoveToSelf(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
invokevirtual jdk.vm.ci.meta.Value.equals:(Ljava/lang/Object;)Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
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
3: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 4
aload 1
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 0
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)Z
ifne 4
new java.lang.AssertionError
dup
ldc "Same register but Kind mismatch %s <- %s"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
dup
iconst_1
aload 0
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
4: StackMap locals:
StackMap stack:
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
private static boolean mightBeBlocked(jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;)Z
flags: (0x000a) ACC_PRIVATE, 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
ifne 1
aload 0
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.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/TraceGlobalMoveResolver;
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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.insertIdx:I
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
private void insertMove(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.AllocatableValue);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/AllocatableValue;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 1
aload 2
invokevirtual jdk.vm.ci.meta.Value.equals:(Ljava/lang/Object;)Z
ifeq 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "from and to are equal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " vs. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
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
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 2
aload 1
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 1
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.insertionBuffer:Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.insertIdx:I
aload 0
aload 1
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.createMove:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
4: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 6
5: ldc "insert move from %s to %s at %d"
aload 1
aload 2
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.insertIdx:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic org.graalvm.compiler.debug.Debug.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/TraceGlobalMoveResolver;
0 7 1 fromOperand Ljdk/vm/ci/meta/Value;
0 7 2 toOperand Ljdk/vm/ci/meta/AllocatableValue;
MethodParameters:
Name Flags
fromOperand
toOperand
private org.graalvm.compiler.lir.LIRInstruction createMove(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.AllocatableValue);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 2
aload 1
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.TraceGlobalMoveResolver.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
aload 2
aload 1
invokestatic jdk.vm.ci.code.ValueUtil.asAllocatableValue:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/AllocatableValue;
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.TraceGlobalMoveResolver.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 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
0 3 1 fromOpr Ljdk/vm/ci/meta/Value;
0 3 2 toOpr Ljdk/vm/ci/meta/AllocatableValue;
MethodParameters:
Name Flags
fromOpr
toOpr
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: ldc "resolveMapping"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 5
4: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.printMapping:()V
5: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 4
start local 4 6: goto 10
7: StackMap locals: int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 5
start local 5 8: aload 0
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.block:(Ljdk/vm/ci/meta/Value;)V
end local 5 9: iinc 4 -1
StackMap locals:
StackMap stack:
10: iload 4
ifge 7
end local 4 11: aconst_null
astore 4
start local 4 12: goto 41
13: StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.ArrayList
StackMap stack:
iconst_0
istore 5
start local 5 14: iconst_m1
istore 6
start local 6 15: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 7
start local 7 16: goto 38
17: StackMap locals: int int int
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 8
start local 8 18: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.AllocatableValue
astore 9
start local 9 19: aload 0
aload 8
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.safeToProcessMove:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Z
ifeq 31
20: aload 0
aload 8
aload 9
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.insertMove:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/AllocatableValue;)V
21: aload 0
aload 8
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.unblock:(Ljdk/vm/ci/meta/Value;)V
22: aload 9
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 26
23: aload 4
ifnonnull 25
24: new java.util.ArrayList
dup
iconst_2
invokespecial java.util.ArrayList.<init>:(I)V
astore 4
25: StackMap locals: jdk.vm.ci.meta.Value jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 4
aload 9
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
26: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 7
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
27: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
iload 7
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
28: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 7
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
29: iconst_1
istore 5
30: goto 37
StackMap locals:
StackMap stack:
31: aload 8
ifnull 37
32: aload 8
invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
ifeq 35
aload 4
ifnull 33
aload 4
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
ifne 35
33: StackMap locals:
StackMap stack:
iload 7
istore 6
34: goto 37
StackMap locals:
StackMap stack:
35: aload 8
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifeq 37
iload 6
iconst_m1
if_icmpne 37
36: iload 7
istore 6
end local 9 end local 8 37: StackMap locals:
StackMap stack:
iinc 7 -1
StackMap locals:
StackMap stack:
38: iload 7
ifge 17
end local 7 39: iload 5
ifne 41
40: aload 0
iload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.breakCycle:(I)V
end local 6 end local 5 41: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifgt 13
end local 4 42: aload 3
ifnull 48
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 48
StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
43: astore 1
aload 3
ifnull 44
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
44: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
45: astore 2
aload 1
ifnonnull 46
aload 2
astore 1
goto 47
StackMap locals:
StackMap stack:
46: aload 1
aload 2
if_acmpeq 47
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
47: aload 1
athrow
48: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 49
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.checkEmpty:()Z
ifne 49
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
49: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
2 44 3 indent Lorg/graalvm/compiler/debug/Indent;
6 11 4 i I
8 9 5 from Ljdk/vm/ci/meta/Value;
12 42 4 busySpillSlots Ljava/util/ArrayList<Ljdk/vm/ci/meta/AllocatableValue;>;
14 41 5 processedInterval Z
15 41 6 spillCandidate I
16 39 7 i I
18 37 8 fromLocation Ljdk/vm/ci/meta/Value;
19 37 9 toLocation Ljdk/vm/ci/meta/AllocatableValue;
Exception table:
from to target type
2 42 43 any
1 45 45 any
private void breakCycle(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=8, args_size=2
start local 0 start local 1 0: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 1
iload 1
iconst_m1
if_icmpne 1
new java.lang.AssertionError
dup
ldc "no interval in register for spilling found"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 2
start local 2 2: aconst_null
astore 3
aconst_null
astore 4
3: ldc "BreakCycle: %s"
aload 2
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
astore 5
start local 5 4: aconst_null
astore 6
start local 6 5: getstatic org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPhase$Options.TraceRAreuseStackSlotsForMoveResolutionCycleBreaking:Lorg/graalvm/compiler/options/StableOptionValue;
invokevirtual org.graalvm.compiler.options.StableOptionValue.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 11
aload 2
invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
ifne 11
6: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
iload 1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.vm.ci.meta.Value
astore 7
start local 7 7: aload 7
ifnull 11
8: aload 7
checkcast jdk.vm.ci.meta.AllocatableValue
astore 6
9: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.cycleBreakingSlotsReused:Lorg/graalvm/compiler/debug/DebugCounter;
invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
10: ldc "reuse slot for spilling: %s"
aload 6
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
end local 7 11: StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver int jdk.vm.ci.meta.Value java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent jdk.vm.ci.meta.AllocatableValue
StackMap stack:
aload 6
ifnonnull 16
12: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.frameMapBuilder:Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
aload 2
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilder.allocateSpillSlot:(Ljdk/vm/ci/meta/ValueKind;)Lorg/graalvm/compiler/lir/VirtualStackSlot;
astore 6
13: getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.cycleBreakingSlotsAllocated:Lorg/graalvm/compiler/debug/DebugCounter;
invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
14: ldc "created new slot for spilling: %s"
aload 6
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
15: aload 0
aload 2
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.insertMove:(Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/AllocatableValue;)V
16: StackMap locals:
StackMap stack:
aload 0
aload 6
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.block:(Ljdk/vm/ci/meta/Value;)V
17: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 1
aload 6
invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
18: aload 0
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.unblock:(Ljdk/vm/ci/meta/Value;)V
end local 6 19: aload 5
ifnull 25
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 25
StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver int jdk.vm.ci.meta.Value java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
20: astore 3
aload 5
ifnull 21
aload 5
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 5 StackMap locals:
StackMap stack:
21: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
22: astore 4
aload 3
ifnonnull 23
aload 4
astore 3
goto 24
StackMap locals:
StackMap stack:
23: aload 3
aload 4
if_acmpeq 24
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
24: aload 3
athrow
25: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
0 26 1 spillCandidate I
2 26 2 from Ljdk/vm/ci/meta/Value;
4 21 5 indent Lorg/graalvm/compiler/debug/Indent;
5 19 6 spillSlot Ljdk/vm/ci/meta/AllocatableValue;
7 11 7 fromStack Ljdk/vm/ci/meta/Value;
Exception table:
from to target type
4 19 20 any
3 22 22 any
MethodParameters:
Name Flags
spillCandidate
private void printMapping();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: ldc "Mapping"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
isub
istore 4
start local 4 3: goto 6
4: StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent int
StackMap stack:
ldc "move %s <- %s (%s)"
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
5: iinc 4 -1
StackMap locals:
StackMap stack:
6: iload 4
ifge 4
end local 4 7: aload 3
ifnull 13
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 13
StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
8: astore 1
aload 3
ifnull 9
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.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:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
2 9 3 indent Lorg/graalvm/compiler/debug/Indent;
3 7 4 i I
Exception table:
from to target type
2 7 8 any
1 10 10 any
public void setInsertPosition(java.util.List<org.graalvm.compiler.lir.LIRInstruction>, );
descriptor: (Ljava/util/List;I)V
flags: (0x0001) ACC_PUBLIC
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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.createInsertionBuffer:(Ljava/util/List;)V
2: aload 0
iload 2
putfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.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/TraceGlobalMoveResolver;
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
public void addMapping(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Value);
descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 2
1: ldc "add move mapping from %s to %s"
aload 1
aload 2
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 3
aload 1
aload 2
invokevirtual jdk.vm.ci.meta.Value.equals:(Ljava/lang/Object;)Z
ifeq 3
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
3: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 4
aload 2
invokevirtual jdk.vm.ci.meta.AllocatableValue.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 1
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)Z
ifne 4
new java.lang.AssertionError
dup
ldc "Kind mismatch: %s vs. %s, from=%s, to=%s"
iconst_4
anewarray java.lang.Object
dup
iconst_0
aload 1
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_1
aload 2
invokevirtual jdk.vm.ci.meta.AllocatableValue.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_2
aload 1
aastore
dup
iconst_3
aload 2
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 7
aload 3
ifnull 7
aload 2
invokevirtual jdk.vm.ci.meta.AllocatableValue.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aload 3
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
invokestatic org.graalvm.compiler.core.common.LIRKind.verifyMoveKinds:(Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/ValueKind;)Z
ifne 7
new java.lang.AssertionError
dup
ldc "Kind mismatch: %s vs. %s, fromStack=%s, to=%s"
iconst_4
anewarray java.lang.Object
dup
iconst_0
aload 3
invokevirtual jdk.vm.ci.meta.Value.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_1
5: aload 2
invokevirtual jdk.vm.ci.meta.AllocatableValue.getValueKind:()Ljdk/vm/ci/meta/ValueKind;
aastore
dup
iconst_2
aload 3
aastore
dup
iconst_3
aload 2
aastore
6: 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:
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFrom:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingFromStack:Ljava/util/List;
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
9: aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.mappingTo:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
0 11 1 from Ljdk/vm/ci/meta/Value;
0 11 2 to Ljdk/vm/ci/meta/AllocatableValue;
0 11 3 fromStack Ljdk/vm/ci/meta/Value;
MethodParameters:
Name Flags
from
to
fromStack
public void resolveAndAppendMoves();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.hasMappings:()Z
ifeq 2
1: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.resolveMappings:()V
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.appendInsertionBuffer:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/lir/alloc/trace/TraceGlobalMoveResolver;
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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver.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/TraceGlobalMoveResolver;
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.TraceGlobalMoveResolver.$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.TraceGlobalMoveResolver.$assertionsDisabled:Z
ifne 7
iload 3
iflt 6
iload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver.firstVirtualStackIndex:I
if_icmplt 7
StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolver 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.TraceGlobalMoveResolver.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.TraceGlobalMoveResolver 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/TraceGlobalMoveResolver;
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.TraceGlobalMoveResolver.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/TraceGlobalMoveResolver;
0 1 1 virtualStackSlot Lorg/graalvm/compiler/lir/VirtualStackSlot;
MethodParameters:
Name Flags
virtualStackSlot
}
SourceFile: "TraceGlobalMoveResolver.java"
InnerClasses:
public abstract MoveResolver = org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolutionPhase$MoveResolver of org.graalvm.compiler.lir.alloc.trace.TraceGlobalMoveResolutionPhase
public Options = org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPhase$Options of org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPhase
public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool