final class org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase extends org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase
  super_class: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase
{
  private static final org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$IntervalPredicate spilledIntervals;
    descriptor: Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$IntervalPredicate;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, 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=2, locals=0, args_size=0
         0: .line 51
            ldc Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanEliminateSpillMovePhase;
            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.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
         3: .line 53
            new org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase$1
            dup
            invokespecial org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase$1.<init>:()V
            putstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.spilledIntervals:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$IntervalPredicate;
         4: .line 59
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase this
         0: .line 51
            aload 0 /* this */
            invokespecial org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase.<init>:()V
            return
        end local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanEliminateSpillMovePhase;

  protected void run(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.core.common.alloc.Trace, org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/core/common/alloc/Trace;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=8, args_size=5
        start local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase this
        start local 1 // jdk.vm.ci.code.TargetDescription target
        start local 2 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        start local 3 // org.graalvm.compiler.core.common.alloc.Trace trace
        start local 4 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext context
         0: .line 63
            aload 4 /* context */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext.resultTraces:Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            astore 5 /* traceBuilderResult */
        start local 5 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
         1: .line 64
            aload 4 /* context */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext.allocator:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
            astore 6 /* allocator */
        start local 6 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
         2: .line 65
            aload 5 /* traceBuilderResult */
            aload 6 /* allocator */
            invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.shouldEliminateSpillMoves:(Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;)Z
            istore 7 /* shouldEliminateSpillMoves */
        start local 7 // boolean shouldEliminateSpillMoves
         3: .line 66
            aload 6 /* allocator */
            iload 7 /* shouldEliminateSpillMoves */
            aload 5 /* traceBuilderResult */
            invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.eliminateSpillMoves:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;ZLorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;)V
         4: .line 67
            return
        end local 7 // boolean shouldEliminateSpillMoves
        end local 6 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
        end local 5 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
        end local 4 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext context
        end local 3 // org.graalvm.compiler.core.common.alloc.Trace trace
        end local 2 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        end local 1 // jdk.vm.ci.code.TargetDescription target
        end local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    5     0                       this  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanEliminateSpillMovePhase;
            0    5     1                     target  Ljdk/vm/ci/code/TargetDescription;
            0    5     2                  lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0    5     3                      trace  Lorg/graalvm/compiler/core/common/alloc/Trace;
            0    5     4                    context  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext;
            1    5     5         traceBuilderResult  Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            2    5     6                  allocator  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
            3    5     7  shouldEliminateSpillMoves  Z
    MethodParameters:
           Name  Flags
      target     
      lirGenRes  
      trace      
      context    

  private static boolean shouldEliminateSpillMoves(org.graalvm.compiler.core.common.alloc.TraceBuilderResult, org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan);
    descriptor: (Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
        start local 1 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
         0: .line 70
            aload 0 /* traceBuilderResult */
            aload 0 /* traceBuilderResult */
            aload 1 /* allocator */
            iconst_0
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockAt:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            invokevirtual org.graalvm.compiler.core.common.alloc.TraceBuilderResult.getTraceForBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/alloc/Trace;
            invokevirtual org.graalvm.compiler.core.common.alloc.TraceBuilderResult.incomingSideEdges:(Lorg/graalvm/compiler/core/common/alloc/Trace;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
        end local 0 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0  traceBuilderResult  Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            0    3     1           allocator  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
    MethodParameters:
                    Name  Flags
      traceBuilderResult  
      allocator           

  private static void eliminateSpillMoves(org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan, boolean, org.graalvm.compiler.core.common.alloc.TraceBuilderResult);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;ZLorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=27, args_size=3
        start local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
        start local 1 // boolean shouldEliminateSpillMoves
        start local 2 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
         0: .line 76
            aconst_null
            astore 3
            aconst_null
            astore 4
         1: ldc "Eliminating unnecessary spill moves: Trace%d"
            aload 2 /* traceBuilderResult */
            aload 0 /* allocator */
            iconst_0
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.blockAt:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            invokevirtual org.graalvm.compiler.core.common.alloc.TraceBuilderResult.getTraceForBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/core/common/alloc/Trace;
            invokevirtual org.graalvm.compiler.core.common.alloc.Trace.getId:()I
            invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
            astore 5 /* indent */
        start local 5 // org.graalvm.compiler.debug.Indent indent
         2: .line 77
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.sortIntervalsBySpillPos:()V
         3: .line 83
            aload 0 /* allocator */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.spilledIntervals:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$IntervalPredicate;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.createUnhandledListBySpillPos:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$IntervalPredicate;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 6 /* interval */
        start local 6 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
         4: .line 84
            getstatic org.graalvm.compiler.core.common.GraalOptions.DetailedAsserts:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 6
         5: .line 85
            aload 6 /* interval */
            invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.checkIntervals:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
         6: .line 87
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
      StackMap stack:
            invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
            ifeq 20
         7: .line 88
            aconst_null
            astore 7
            aconst_null
            astore 8
         8: ldc "Sorted intervals"
            invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
            astore 9 /* indent2 */
        start local 9 // org.graalvm.compiler.debug.Indent indent2
         9: .line 89
            aload 6 /* interval */
            astore 10 /* i */
        start local 10 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval i
        10: goto 13
        11: .line 90
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
      StackMap stack:
            ldc "%5d: %s"
            aload 10 /* i */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            aload 10 /* i */
            invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;ILjava/lang/Object;)V
        12: .line 89
            aload 10 /* i */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 10 /* i */
      StackMap locals:
      StackMap stack:
        13: aload 10 /* i */
            ifnonnull 11
        end local 10 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval i
        14: .line 92
            aload 9 /* indent2 */
            ifnull 20
            aload 9 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 20
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
      StackMap stack: java.lang.Throwable
        15: astore 7
            aload 9 /* indent2 */
            ifnull 16
            aload 9 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 9 // org.graalvm.compiler.debug.Indent indent2
      StackMap locals:
      StackMap stack:
        16: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 8
            aload 7
            ifnonnull 18
            aload 8
            astore 7
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 7
            aload 8
            if_acmpeq 19
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        19: aload 7
            athrow
        20: .line 95
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.lir.LIRInsertionBuffer
            dup
            invokespecial org.graalvm.compiler.lir.LIRInsertionBuffer.<init>:()V
            astore 7 /* insertionBuffer */
        start local 7 // org.graalvm.compiler.lir.LIRInsertionBuffer insertionBuffer
        21: .line 96
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.sortedBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 86
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.LIRInsertionBuffer top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
        22: aload 11
            iload 9
            aaload
            astore 8 /* block */
        start local 8 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        23: .line 97
            aconst_null
            astore 12
            aconst_null
            astore 13
        24: ldc "Handle %s"
            aload 8 /* block */
            invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
            astore 14 /* indent1 */
        start local 14 // org.graalvm.compiler.debug.Indent indent1
        25: .line 98
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            aload 8 /* block */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            astore 15 /* instructions */
        start local 15 // java.util.List instructions
        26: .line 99
            aload 15 /* instructions */
            invokeinterface java.util.List.size:()I
            istore 16 /* numInst */
        start local 16 // int numInst
        27: .line 101
            iconst_m1
            istore 17 /* lastOpId */
        start local 17 // int lastOpId
        28: .line 103
            iconst_0
            istore 18 /* j */
        start local 18 // int j
        29: goto 76
        30: .line 104
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.LIRInsertionBuffer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.List int int int
      StackMap stack:
            aload 15 /* instructions */
            iload 18 /* j */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            astore 19 /* op */
        start local 19 // org.graalvm.compiler.lir.LIRInstruction op
        31: .line 105
            aload 19 /* op */
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
            istore 20 /* opId */
        start local 20 // int opId
        32: .line 106
            aconst_null
            astore 21
            aconst_null
            astore 22
        33: ldc "%5d %s"
            iload 20 /* opId */
            aload 19 /* op */
            invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;ILjava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
            astore 23 /* indent2 */
        start local 23 // org.graalvm.compiler.debug.Indent indent2
        34: .line 108
            iload 20 /* opId */
            iconst_m1
            if_icmpne 50
        35: .line 109
            aload 19 /* op */
            checkcast org.graalvm.compiler.lir.StandardOp$MoveOp
            astore 24 /* move */
        start local 24 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        36: .line 115
            iload 1 /* shouldEliminateSpillMoves */
            ifeq 69
            aload 0 /* allocator */
            aload 8 /* block */
            aload 24 /* move */
            iload 17 /* lastOpId */
            invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.canEliminateSpillMove:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;I)Z
            ifeq 69
        37: .line 120
            invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
            ifeq 48
        38: .line 121
            aload 24 /* move */
            instanceof org.graalvm.compiler.lir.StandardOp$ValueMoveOp
            ifeq 44
        39: .line 122
            aload 24 /* move */
            checkcast org.graalvm.compiler.lir.StandardOp$ValueMoveOp
            astore 25 /* vmove */
        start local 25 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp vmove
        40: .line 123
            ldc "eliminating move from interval %d (%s) to %d (%s) in block %s"
            aload 0 /* allocator */
            aload 25 /* vmove */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.operandNumber:(Ljdk/vm/ci/meta/Value;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 25 /* vmove */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
        41: .line 124
            aload 0 /* allocator */
            aload 25 /* vmove */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.operandNumber:(Ljdk/vm/ci/meta/Value;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 25 /* vmove */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            aload 8 /* block */
        42: .line 123
            invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 25 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp vmove
        43: .line 125
            goto 48
        44: .line 126
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.LIRInsertionBuffer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.List int int int org.graalvm.compiler.lir.LIRInstruction int java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.StandardOp$MoveOp
      StackMap stack:
            aload 24 /* move */
            checkcast org.graalvm.compiler.lir.StandardOp$LoadConstantOp
            astore 25 /* load */
        start local 25 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp load
        45: .line 127
            ldc "eliminating constant load from %s to %d (%s) in block %s"
            aload 25 /* load */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getConstant:()Ljdk/vm/ci/meta/Constant;
            aload 0 /* allocator */
            aload 25 /* load */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.operandNumber:(Ljdk/vm/ci/meta/Value;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 25 /* load */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
        46: .line 128
            aload 8 /* block */
        47: .line 127
            invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 25 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp load
        48: .line 133
      StackMap locals:
      StackMap stack:
            aload 15 /* instructions */
            iload 18 /* j */
            aconst_null
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        end local 24 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        49: .line 136
            goto 69
        50: .line 137
      StackMap locals:
      StackMap stack:
            iload 20 /* opId */
            istore 17 /* lastOpId */
        51: .line 144
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 68
            aload 6 /* interval */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpeq 68
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.isSplitParent:()Z
            ifeq 52
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.IN_MEMORY:Ljava/util/EnumSet;
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillState:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
            invokevirtual java.util.EnumSet.contains:(Ljava/lang/Object;)Z
            ifne 68
      StackMap locals:
      StackMap stack:
        52: new java.lang.AssertionError
            dup
            ldc "invalid interval"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        53: .line 147
      StackMap locals:
      StackMap stack:
            ldc "handle %s"
            aload 6 /* interval */
            invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
        54: .line 148
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.canMaterialize:()Z
            ifne 67
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillState:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.StartInMemory:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
            if_acmpeq 67
        55: .line 150
            aload 6 /* interval */
            iload 20 /* opId */
            getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.DEF:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.getSplitChildAtOpId:(ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
            astore 24 /* fromLocation */
        start local 24 // jdk.vm.ci.meta.AllocatableValue fromLocation
        56: .line 151
            aload 0 /* allocator */
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.canonicalSpillOpr:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)Ljdk/vm/ci/meta/AllocatableValue;
            astore 25 /* toLocation */
        start local 25 // jdk.vm.ci.meta.AllocatableValue toLocation
        57: .line 152
            aload 24 /* fromLocation */
            aload 25 /* toLocation */
            invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
            ifne 67
        58: .line 154
            aload 7 /* insertionBuffer */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
            ifne 60
        59: .line 159
            aload 7 /* insertionBuffer */
            aload 15 /* instructions */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.init:(Ljava/util/List;)V
        60: .line 162
      StackMap locals: jdk.vm.ci.meta.AllocatableValue jdk.vm.ci.meta.AllocatableValue
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 62
            aload 24 /* fromLocation */
            invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
            ifne 62
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "from operand must be a register but is: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 24 /* fromLocation */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " toLocation="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 25 /* toLocation */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " spillState="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        61: .line 163
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillState:()Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval$SpillState;
            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
        62: .line 164
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 63
            aload 25 /* toLocation */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
            ifne 63
            new java.lang.AssertionError
            dup
            ldc "to operand must be a stack slot"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        63: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getSpillMoveFactory:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
            aload 25 /* toLocation */
            aload 24 /* fromLocation */
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory.createMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/LIRInstruction;
            astore 26 /* move */
        start local 26 // org.graalvm.compiler.lir.LIRInstruction move
        64: .line 167
            aload 7 /* insertionBuffer */
            iload 18 /* j */
            iconst_1
            iadd
            aload 26 /* move */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
        65: .line 169
            invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
            ifeq 67
        66: .line 170
            ldc "inserting move after definition of interval %d to stack slot %s at opId %d"
            aload 6 /* interval */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
            iload 20 /* opId */
            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
        end local 26 // org.graalvm.compiler.lir.LIRInstruction move
        end local 25 // jdk.vm.ci.meta.AllocatableValue toLocation
        end local 24 // jdk.vm.ci.meta.AllocatableValue fromLocation
        67: .line 174
      StackMap locals:
      StackMap stack:
            aload 6 /* interval */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 6 /* interval */
        68: .line 146
      StackMap locals:
      StackMap stack:
            aload 6 /* interval */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpeq 69
            aload 6 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            iload 20 /* opId */
            if_icmpeq 53
        69: .line 177
      StackMap locals:
      StackMap stack:
            aload 23 /* indent2 */
            ifnull 75
            aload 23 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 75
      StackMap locals:
      StackMap stack: java.lang.Throwable
        70: astore 21
            aload 23 /* indent2 */
            ifnull 71
            aload 23 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 23 // org.graalvm.compiler.debug.Indent indent2
      StackMap locals:
      StackMap stack:
        71: aload 21
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        72: astore 22
            aload 21
            ifnonnull 73
            aload 22
            astore 21
            goto 74
      StackMap locals:
      StackMap stack:
        73: aload 21
            aload 22
            if_acmpeq 74
            aload 21
            aload 22
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        74: aload 21
            athrow
        end local 20 // int opId
        end local 19 // org.graalvm.compiler.lir.LIRInstruction op
        75: .line 103
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.LIRInsertionBuffer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent java.util.List int int int
      StackMap stack:
            iinc 18 /* j */ 1
      StackMap locals:
      StackMap stack:
        76: iload 18 /* j */
            iload 16 /* numInst */
            if_icmplt 30
        end local 18 // int j
        77: .line 180
            aload 7 /* insertionBuffer */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
            ifeq 79
        78: .line 181
            aload 7 /* insertionBuffer */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.finish:()V
        end local 17 // int lastOpId
        end local 16 // int numInst
        end local 15 // java.util.List instructions
        79: .line 183
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.LIRInsertionBuffer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
      StackMap stack:
            aload 14 /* indent1 */
            ifnull 85
            aload 14 /* indent1 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 85
      StackMap locals:
      StackMap stack: java.lang.Throwable
        80: astore 12
            aload 14 /* indent1 */
            ifnull 81
            aload 14 /* indent1 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 14 // org.graalvm.compiler.debug.Indent indent1
      StackMap locals:
      StackMap stack:
        81: aload 12
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        82: astore 13
            aload 12
            ifnonnull 83
            aload 13
            astore 12
            goto 84
      StackMap locals:
      StackMap stack:
        83: aload 12
            aload 13
            if_acmpeq 84
            aload 12
            aload 13
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        84: aload 12
            athrow
        end local 8 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        85: .line 96
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.LIRInsertionBuffer top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
            iinc 9 1
      StackMap locals:
      StackMap stack:
        86: iload 9
            iload 10
            if_icmplt 22
        87: .line 186
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 88
            aload 6 /* interval */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpeq 88
            new java.lang.AssertionError
            dup
            ldc "missed an interval"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 7 // org.graalvm.compiler.lir.LIRInsertionBuffer insertionBuffer
        end local 6 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
        88: .line 187
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
      StackMap stack:
            aload 5 /* indent */
            ifnull 94
            aload 5 /* indent */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 94
      StackMap locals:
      StackMap stack: java.lang.Throwable
        89: astore 3
            aload 5 /* indent */
            ifnull 90
            aload 5 /* indent */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 5 // org.graalvm.compiler.debug.Indent indent
      StackMap locals:
      StackMap stack:
        90: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        91: astore 4
            aload 3
            ifnonnull 92
            aload 4
            astore 3
            goto 93
      StackMap locals:
      StackMap stack:
        92: aload 3
            aload 4
            if_acmpeq 93
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        93: aload 3
            athrow
        94: .line 188
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
        end local 1 // boolean shouldEliminateSpillMoves
        end local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   95     0                  allocator  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
            0   95     1  shouldEliminateSpillMoves  Z
            0   95     2         traceBuilderResult  Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            2   90     5                     indent  Lorg/graalvm/compiler/debug/Indent;
            4   88     6                   interval  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            9   16     9                    indent2  Lorg/graalvm/compiler/debug/Indent;
           10   14    10                          i  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
           21   88     7            insertionBuffer  Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
           23   85     8                      block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
           25   81    14                    indent1  Lorg/graalvm/compiler/debug/Indent;
           26   79    15               instructions  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           27   79    16                    numInst  I
           28   79    17                   lastOpId  I
           29   77    18                          j  I
           31   75    19                         op  Lorg/graalvm/compiler/lir/LIRInstruction;
           32   75    20                       opId  I
           34   71    23                    indent2  Lorg/graalvm/compiler/debug/Indent;
           36   49    24                       move  Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
           40   43    25                      vmove  Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
           45   48    25                       load  Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
           56   67    24               fromLocation  Ljdk/vm/ci/meta/AllocatableValue;
           57   67    25                 toLocation  Ljdk/vm/ci/meta/AllocatableValue;
           64   67    26                       move  Lorg/graalvm/compiler/lir/LIRInstruction;
      Exception table:
        from    to  target  type
           9    14      15  any
           8    17      17  any
          34    69      70  any
          33    72      72  any
          25    79      80  any
          24    82      82  any
           2    88      89  any
           1    91      91  any
    MethodParameters:
                           Name  Flags
      allocator                  
      shouldEliminateSpillMoves  
      traceBuilderResult         

  private static boolean canEliminateSpillMove(org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.StandardOp$MoveOp, );
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;I)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        start local 2 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        start local 3 // int lastOpId
         0: .line 198
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 1
            aload 2 /* move */
            checkcast org.graalvm.compiler.lir.LIRInstruction
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
            iconst_m1
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Not a spill move: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* move */
            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: .line 199
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 2
            aload 2 /* move */
            invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isVariable:(Ljdk/vm/ci/meta/Value;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "LinearScan inserts only moves to variables: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* move */
            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: .line 200
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 3
            iload 3 /* lastOpId */
            ifge 3
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid lastOpId: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* lastOpId */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         3: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* allocator */
            aload 2 /* move */
            invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.intervalFor:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 4 /* curInterval */
        start local 4 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval curInterval
         4: .line 204
            aload 4 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
            ifne 7
            aload 4 /* curInterval */
            iload 3 /* lastOpId */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.inMemoryAt:(I)Z
            ifeq 7
            aload 0 /* allocator */
            aload 2 /* move */
            invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.isPhiResolutionMove:(Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;)Z
            ifne 7
         5: .line 207
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 6
            aload 4 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
            ifne 6
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Not a stack slot: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.location:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         6: .line 208
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
      StackMap stack:
            iconst_1
            ireturn
         7: .line 210
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval curInterval
        end local 3 // int lastOpId
        end local 2 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0    allocator  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
            0    8     1        block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            0    8     2         move  Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
            0    8     3     lastOpId  I
            4    8     4  curInterval  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
    Signature: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;I)Z
    MethodParameters:
           Name  Flags
      allocator  
      block      
      move       
      lastOpId   

  private static boolean isPhiResolutionMove(org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan, org.graalvm.compiler.lir.StandardOp$MoveOp);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
        start local 1 // org.graalvm.compiler.lir.StandardOp$MoveOp move
         0: .line 222
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 1
            aload 1 /* move */
            checkcast org.graalvm.compiler.lir.LIRInstruction
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
            iconst_m1
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Not a spill move: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* move */
            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: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* allocator */
            aload 1 /* move */
            invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.intervalFor:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 2 /* curInterval */
        start local 2 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval curInterval
         2: .line 224
            aload 2 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.isSplitParent:()Z
            ireturn
        end local 2 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval curInterval
        end local 1 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        end local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0    allocator  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
            0    3     1         move  Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
            2    3     2  curInterval  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
    MethodParameters:
           Name  Flags
      allocator  
      move       

  private static void checkIntervals(org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
         0: .line 228
            aconst_null
            astore 1 /* prev */
        start local 1 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval prev
         1: .line 229
            aload 0 /* interval */
            astore 2 /* temp */
        start local 2 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval temp
         2: .line 230
            goto 12
         3: .line 231
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 4
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            ifge 4
            new java.lang.AssertionError
            dup
            ldc "invalid spill definition pos"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         4: .line 232
      StackMap locals:
      StackMap stack:
            aload 1 /* prev */
            ifnull 6
         5: .line 234
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 6
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            aload 1 /* prev */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            if_icmpge 6
            new java.lang.AssertionError
            dup
            ldc "when intervals are sorted by from :  then they must also be sorted by spillDefinitionPos"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         6: .line 237
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 7
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
            ifnonnull 7
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.canMaterialize:()Z
            ifne 7
            new java.lang.AssertionError
            dup
            ldc "interval has no spill slot assigned"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         7: .line 238
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 8
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
            if_icmpge 8
            new java.lang.AssertionError
            dup
            ldc "invalid order"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         8: .line 242
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
            ifeq 10
         9: .line 243
            ldc "interval %d (from %d to %d) must be stored at %d"
            aload 2 /* temp */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 2 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()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;Ljava/lang/Object;)V
        10: .line 246
      StackMap locals:
      StackMap stack:
            aload 2 /* temp */
            astore 1 /* prev */
        11: .line 247
            aload 2 /* temp */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 2 /* temp */
        12: .line 230
      StackMap locals:
      StackMap stack:
            aload 2 /* temp */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpne 3
        13: .line 249
            return
        end local 2 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval temp
        end local 1 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval prev
        end local 0 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0  interval  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            1   14     1      prev  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            2   14     2      temp  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
    MethodParameters:
          Name  Flags
      interval  

  protected void run(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.core.common.alloc.Trace, org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/core/common/alloc/Trace;Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase$TraceAllocationContext;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=5, locals=5, args_size=5
         0: .line 1
            aload 0
            aload 1
            aload 2
            aload 3
            aload 4
            checkcast org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.run:(Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/core/common/alloc/Trace;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "TraceLinearScanEliminateSpillMovePhase.java"
NestMembers:
  org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase$1
InnerClasses:
  public final OperandMode = org.graalvm.compiler.lir.LIRInstruction$OperandMode of org.graalvm.compiler.lir.LIRInstruction
  public abstract LoadConstantOp = org.graalvm.compiler.lir.StandardOp$LoadConstantOp of org.graalvm.compiler.lir.StandardOp
  public abstract MoveOp = org.graalvm.compiler.lir.StandardOp$MoveOp of org.graalvm.compiler.lir.StandardOp
  public abstract ValueMoveOp = org.graalvm.compiler.lir.StandardOp$ValueMoveOp of org.graalvm.compiler.lir.StandardOp
  public TraceAllocationContext = org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext of org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase
  public final SpillState = org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState of org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
  final TraceLinearScanAllocationContext = org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase$TraceLinearScanAllocationContext of org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanAllocationPhase
  org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase$1
  abstract IntervalPredicate = org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$IntervalPredicate of org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase
  public final TraceLinearScan = org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan of org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase
  public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool