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 56
            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 58
            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 64
            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 56
            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.gen.LIRGeneratorTool$MoveFactory, org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig, org.graalvm.compiler.core.common.alloc.TraceBuilderResult, org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/core/common/alloc/Trace;Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=9, args_size=8
        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.gen.LIRGeneratorTool$MoveFactory spillMoveFactory
        start local 5 // org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig registerAllocationConfig
        start local 6 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
        start local 7 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
         0: .line 69
            aload 6 /* traceBuilderResult */
            aload 7 /* 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 8 /* shouldEliminateSpillMoves */
        start local 8 // boolean shouldEliminateSpillMoves
         1: .line 70
            aload 7 /* allocator */
            iload 8 /* shouldEliminateSpillMoves */
            aload 6 /* traceBuilderResult */
            aload 2 /* lirGenRes */
            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;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;)V
         2: .line 71
            return
        end local 8 // boolean shouldEliminateSpillMoves
        end local 7 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan allocator
        end local 6 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult traceBuilderResult
        end local 5 // org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig registerAllocationConfig
        end local 4 // org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory spillMoveFactory
        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    3     0                       this  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanEliminateSpillMovePhase;
            0    3     1                     target  Ljdk/vm/ci/code/TargetDescription;
            0    3     2                  lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0    3     3                      trace  Lorg/graalvm/compiler/core/common/alloc/Trace;
            0    3     4           spillMoveFactory  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
            0    3     5   registerAllocationConfig  Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
            0    3     6         traceBuilderResult  Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            0    3     7                  allocator  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;
            1    3     8  shouldEliminateSpillMoves  Z
    MethodParameters:
                          Name  Flags
      target                    
      lirGenRes                 
      trace                     
      spillMoveFactory          
      registerAllocationConfig  
      traceBuilderResult        
      allocator                 

  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 74
            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, org.graalvm.compiler.lir.gen.LIRGenerationResult);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceLinearScanPhase$TraceLinearScan;ZLorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=29, args_size=4
        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
        start local 3 // org.graalvm.compiler.lir.gen.LIRGenerationResult res
         0: .line 80
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 4 /* debug */
        start local 4 // org.graalvm.compiler.debug.DebugContext debug
         1: .line 81
            aconst_null
            astore 5
            aconst_null
            astore 6
         2: aload 4 /* debug */
            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
            invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;I)Lorg/graalvm/compiler/debug/Indent;
            astore 7 /* indent */
        start local 7 // org.graalvm.compiler.debug.Indent indent
         3: .line 82
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.sortIntervalsBySpillPos:()V
         4: .line 88
            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 8 /* interval */
        start local 8 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
         5: .line 89
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokestatic org.graalvm.compiler.debug.Assertions.detailedAssertionsEnabled:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 7
         6: .line 90
            aload 4 /* debug */
            aload 8 /* interval */
            invokestatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.checkIntervals:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
         7: .line 92
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
      StackMap stack:
            aload 4 /* debug */
            invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
            ifeq 21
         8: .line 93
            aconst_null
            astore 9
            aconst_null
            astore 10
         9: aload 4 /* debug */
            ldc "Sorted intervals"
            invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
            astore 11 /* indent2 */
        start local 11 // org.graalvm.compiler.debug.Indent indent2
        10: .line 94
            aload 8 /* interval */
            astore 12 /* i */
        start local 12 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval i
        11: goto 14
        12: .line 95
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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:
            aload 4 /* debug */
            ldc "%5d: %s"
            aload 12 /* i */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            aload 12 /* i */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;ILjava/lang/Object;)V
        13: .line 94
            aload 12 /* i */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 12 /* i */
      StackMap locals:
      StackMap stack:
        14: aload 12 /* i */
            ifnonnull 12
        end local 12 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval i
        15: .line 97
            aload 11 /* indent2 */
            ifnull 21
            aload 11 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 21
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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
        16: astore 9
            aload 11 /* indent2 */
            ifnull 17
            aload 11 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 11 // org.graalvm.compiler.debug.Indent indent2
      StackMap locals:
      StackMap stack:
        17: aload 9
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: astore 10
            aload 9
            ifnonnull 19
            aload 10
            astore 9
            goto 20
      StackMap locals:
      StackMap stack:
        19: aload 9
            aload 10
            if_acmpeq 20
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        20: aload 9
            athrow
        21: .line 100
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.lir.LIRInsertionBuffer
            dup
            invokespecial org.graalvm.compiler.lir.LIRInsertionBuffer.<init>:()V
            astore 9 /* insertionBuffer */
        start local 9 // org.graalvm.compiler.lir.LIRInsertionBuffer insertionBuffer
        22: .line 101
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.sortedBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 86
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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:
        23: aload 13
            iload 11
            aaload
            astore 10 /* block */
        start local 10 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        24: .line 102
            aconst_null
            astore 14
            aconst_null
            astore 15
        25: aload 4 /* debug */
            ldc "Handle %s"
            aload 10 /* block */
            invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
            astore 16 /* indent1 */
        start local 16 // org.graalvm.compiler.debug.Indent indent1
        26: .line 103
            aload 0 /* allocator */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            aload 10 /* block */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            astore 17 /* instructions */
        start local 17 // java.util.ArrayList instructions
        27: .line 104
            aload 17 /* instructions */
            invokevirtual java.util.ArrayList.size:()I
            istore 18 /* numInst */
        start local 18 // int numInst
        28: .line 106
            iconst_m1
            istore 19 /* lastOpId */
        start local 19 // int lastOpId
        29: .line 108
            iconst_0
            istore 20 /* j */
        start local 20 // int j
        30: goto 76
        31: .line 109
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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.ArrayList int int int
      StackMap stack:
            aload 17 /* instructions */
            iload 20 /* j */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            astore 21 /* op */
        start local 21 // org.graalvm.compiler.lir.LIRInstruction op
        32: .line 110
            aload 21 /* op */
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.id:()I
            istore 22 /* opId */
        start local 22 // int opId
        33: .line 111
            aconst_null
            astore 23
            aconst_null
            astore 24
        34: aload 4 /* debug */
            ldc "%5d %s"
            iload 22 /* opId */
            aload 21 /* op */
            invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(Ljava/lang/String;ILjava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
            astore 25 /* indent2 */
        start local 25 // org.graalvm.compiler.debug.Indent indent2
        35: .line 113
            iload 22 /* opId */
            iconst_m1
            if_icmpne 49
        36: .line 114
            aload 21 /* op */
            invokestatic org.graalvm.compiler.lir.StandardOp$MoveOp.asMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
            astore 26 /* move */
        start local 26 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        37: .line 120
            iload 1 /* shouldEliminateSpillMoves */
            ifeq 69
            aload 0 /* allocator */
            aload 10 /* block */
            aload 26 /* move */
            iload 19 /* 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
        38: .line 125
            aload 4 /* debug */
            invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
            ifeq 47
        39: .line 126
            aload 21 /* op */
            invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.isValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifeq 43
        40: .line 127
            aload 21 /* op */
            invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.asValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
            astore 27 /* vmove */
        start local 27 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp vmove
        41: .line 128
            aload 4 /* debug */
            ldc "eliminating move from interval %s to %s in block %s"
            aload 27 /* vmove */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
            aload 27 /* vmove */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            aload 10 /* block */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 27 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp vmove
        42: .line 129
            goto 47
        43: .line 130
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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.ArrayList 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 21 /* op */
            invokestatic org.graalvm.compiler.lir.StandardOp$LoadConstantOp.asLoadConstantOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
            astore 27 /* load */
        start local 27 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp load
        44: .line 131
            aload 4 /* debug */
            ldc "eliminating constant load from %s to %s in block %s"
            aload 27 /* load */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getConstant:()Ljdk/vm/ci/meta/Constant;
            aload 27 /* load */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
        45: .line 132
            aload 10 /* block */
        46: .line 131
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 27 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp load
        47: .line 137
      StackMap locals:
      StackMap stack:
            aload 17 /* instructions */
            iload 20 /* j */
            aconst_null
            invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        end local 26 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        48: .line 140
            goto 69
        49: .line 141
      StackMap locals:
      StackMap stack:
            iload 22 /* opId */
            istore 19 /* lastOpId */
        50: .line 148
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 68
            aload 8 /* interval */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpeq 68
            aload 8 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.isSplitParent:()Z
            ifeq 51
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState.IN_MEMORY:Ljava/util/EnumSet;
            aload 8 /* 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:
        51: new java.lang.AssertionError
            dup
            ldc "invalid interval"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        52: .line 151
      StackMap locals:
      StackMap stack:
            aload 4 /* debug */
            ldc "handle %s"
            aload 8 /* interval */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
        53: .line 152
            aload 8 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.canMaterialize:()Z
            ifne 67
            aload 8 /* 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
        54: .line 154
            aload 8 /* interval */
            iload 22 /* 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 26 /* fromLocation */
        start local 26 // jdk.vm.ci.meta.AllocatableValue fromLocation
        55: .line 155
            aload 0 /* allocator */
            aload 8 /* 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 27 /* toLocation */
        start local 27 // jdk.vm.ci.meta.AllocatableValue toLocation
        56: .line 156
            aload 26 /* fromLocation */
            aload 27 /* toLocation */
            invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
            ifne 67
        57: .line 158
            aload 9 /* insertionBuffer */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
            ifne 59
        58: .line 163
            aload 9 /* insertionBuffer */
            aload 17 /* instructions */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.init:(Ljava/util/List;)V
        59: .line 166
      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 61
            aload 26 /* fromLocation */
            invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
            ifne 61
            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 26 /* 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 27 /* 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;
        60: .line 167
            aload 8 /* 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
        61: .line 168
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 62
            aload 27 /* toLocation */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
            ifne 62
            new java.lang.AssertionError
            dup
            ldc "to operand must be a stack slot"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        62: .line 170
      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 27 /* toLocation */
            aload 26 /* 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 28 /* move */
        start local 28 // org.graalvm.compiler.lir.LIRInstruction move
        63: .line 171
            aload 9 /* insertionBuffer */
            iload 20 /* j */
            iconst_1
            iadd
            aload 28 /* move */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.append:(ILorg/graalvm/compiler/lir/LIRInstruction;)V
        64: .line 172
            aload 28 /* move */
            aload 3 /* res */
            ldc "TraceLSRAEliminateSpillMove: spill def pos"
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.setComment:(Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Ljava/lang/String;)V
        65: .line 174
            aload 4 /* debug */
            invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
            ifeq 67
        66: .line 175
            aload 4 /* debug */
            ldc "inserting move after definition of interval %d to stack slot %s at opId %d"
            aload 8 /* interval */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 8 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
            iload 22 /* opId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 28 // org.graalvm.compiler.lir.LIRInstruction move
        end local 27 // jdk.vm.ci.meta.AllocatableValue toLocation
        end local 26 // jdk.vm.ci.meta.AllocatableValue fromLocation
        67: .line 179
      StackMap locals:
      StackMap stack:
            aload 8 /* interval */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 8 /* interval */
        68: .line 150
      StackMap locals:
      StackMap stack:
            aload 8 /* interval */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpeq 69
            aload 8 /* interval */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            iload 22 /* opId */
            if_icmpeq 52
        69: .line 182
      StackMap locals:
      StackMap stack:
            aload 25 /* indent2 */
            ifnull 75
            aload 25 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 75
      StackMap locals:
      StackMap stack: java.lang.Throwable
        70: astore 23
            aload 25 /* indent2 */
            ifnull 71
            aload 25 /* indent2 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 25 // org.graalvm.compiler.debug.Indent indent2
      StackMap locals:
      StackMap stack:
        71: aload 23
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        72: astore 24
            aload 23
            ifnonnull 73
            aload 24
            astore 23
            goto 74
      StackMap locals:
      StackMap stack:
        73: aload 23
            aload 24
            if_acmpeq 74
            aload 23
            aload 24
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        74: aload 23
            athrow
        end local 22 // int opId
        end local 21 // org.graalvm.compiler.lir.LIRInstruction op
        75: .line 108
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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.ArrayList int int int
      StackMap stack:
            iinc 20 /* j */ 1
      StackMap locals:
      StackMap stack:
        76: iload 20 /* j */
            iload 18 /* numInst */
            if_icmplt 31
        end local 20 // int j
        77: .line 185
            aload 9 /* insertionBuffer */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.initialized:()Z
            ifeq 79
        78: .line 186
            aload 9 /* insertionBuffer */
            invokevirtual org.graalvm.compiler.lir.LIRInsertionBuffer.finish:()V
        end local 19 // int lastOpId
        end local 18 // int numInst
        end local 17 // java.util.ArrayList instructions
        79: .line 188
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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 16 /* indent1 */
            ifnull 85
            aload 16 /* indent1 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 85
      StackMap locals:
      StackMap stack: java.lang.Throwable
        80: astore 14
            aload 16 /* indent1 */
            ifnull 81
            aload 16 /* indent1 */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 16 // org.graalvm.compiler.debug.Indent indent1
      StackMap locals:
      StackMap stack:
        81: aload 14
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        82: astore 15
            aload 14
            ifnonnull 83
            aload 15
            astore 14
            goto 84
      StackMap locals:
      StackMap stack:
        83: aload 14
            aload 15
            if_acmpeq 84
            aload 14
            aload 15
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        84: aload 14
            athrow
        end local 10 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        85: .line 101
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext 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 11 1
      StackMap locals:
      StackMap stack:
        86: iload 11
            iload 12
            if_icmplt 23
        87: .line 191
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 88
            aload 8 /* 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 9 // org.graalvm.compiler.lir.LIRInsertionBuffer insertionBuffer
        end local 8 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
        88: .line 192
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan int org.graalvm.compiler.core.common.alloc.TraceBuilderResult org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
      StackMap stack:
            aload 7 /* indent */
            ifnull 94
            aload 7 /* indent */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 94
      StackMap locals:
      StackMap stack: java.lang.Throwable
        89: astore 5
            aload 7 /* indent */
            ifnull 90
            aload 7 /* indent */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 7 // org.graalvm.compiler.debug.Indent indent
      StackMap locals:
      StackMap stack:
        90: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        91: astore 6
            aload 5
            ifnonnull 92
            aload 6
            astore 5
            goto 93
      StackMap locals:
      StackMap stack:
        92: aload 5
            aload 6
            if_acmpeq 93
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        93: aload 5
            athrow
        94: .line 193
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.compiler.debug.DebugContext debug
        end local 3 // org.graalvm.compiler.lir.gen.LIRGenerationResult res
        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;
            0   95     3                        res  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            1   95     4                      debug  Lorg/graalvm/compiler/debug/DebugContext;
            3   90     7                     indent  Lorg/graalvm/compiler/debug/Indent;
            5   88     8                   interval  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
           10   17    11                    indent2  Lorg/graalvm/compiler/debug/Indent;
           11   15    12                          i  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
           22   88     9            insertionBuffer  Lorg/graalvm/compiler/lir/LIRInsertionBuffer;
           24   85    10                      block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
           26   81    16                    indent1  Lorg/graalvm/compiler/debug/Indent;
           27   79    17               instructions  Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           28   79    18                    numInst  I
           29   79    19                   lastOpId  I
           30   77    20                          j  I
           32   75    21                         op  Lorg/graalvm/compiler/lir/LIRInstruction;
           33   75    22                       opId  I
           35   71    25                    indent2  Lorg/graalvm/compiler/debug/Indent;
           37   48    26                       move  Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
           41   42    27                      vmove  Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
           44   47    27                       load  Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
           55   67    26               fromLocation  Ljdk/vm/ci/meta/AllocatableValue;
           56   67    27                 toLocation  Ljdk/vm/ci/meta/AllocatableValue;
           63   67    28                       move  Lorg/graalvm/compiler/lir/LIRInstruction;
      Exception table:
        from    to  target  type
          10    15      16  any
           9    18      18  any
          35    69      70  any
          34    72      72  any
          26    79      80  any
          25    82      82  any
           3    88      89  any
           2    91      91  any
    MethodParameters:
                           Name  Flags
      allocator                  
      shouldEliminateSpillMoves  
      traceBuilderResult         
      res                        

  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 203
            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 204
      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 205
      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 207
      StackMap locals:
      StackMap stack:
            aload 0 /* allocator */
            aload 2 /* move */
            invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.asVariable:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.intervalFor:(Lorg/graalvm/compiler/lir/Variable;)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 209
            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 212
            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 213
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
      StackMap stack:
            iconst_1
            ireturn
         7: .line 215
      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 227
            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 228
      StackMap locals:
      StackMap stack:
            aload 0 /* allocator */
            aload 1 /* move */
            invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.asVariable:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanPhase$TraceLinearScan.intervalFor:(Lorg/graalvm/compiler/lir/Variable;)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 229
            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.debug.DebugContext, org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval);
    descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.graalvm.compiler.debug.DebugContext debug
        start local 1 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
         0: .line 233
            aconst_null
            astore 2 /* prev */
        start local 2 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval prev
         1: .line 234
            aload 1 /* interval */
            astore 3 /* temp */
        start local 3 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval temp
         2: .line 235
            goto 12
         3: .line 236
      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 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            ifge 4
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid spill definition pos "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* temp */
            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: .line 237
      StackMap locals:
      StackMap stack:
            aload 2 /* prev */
            ifnull 6
         5: .line 239
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 6
            aload 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            aload 2 /* 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 242
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 7
            aload 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillSlot:()Ljdk/vm/ci/meta/AllocatableValue;
            ifnonnull 7
            aload 3 /* 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 243
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceLinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 8
            aload 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            aload 3 /* 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 247
      StackMap locals:
      StackMap stack:
            aload 0 /* debug */
            invokevirtual org.graalvm.compiler.debug.DebugContext.isLogEnabled:()Z
            ifeq 10
         9: .line 248
            aload 0 /* debug */
            ldc "interval %d (from %d to %d) must be stored at %d"
            aload 3 /* temp */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.operandNumber:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.from:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.to:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 3 /* temp */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.spillDefinitionPos:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 251
      StackMap locals:
      StackMap stack:
            aload 3 /* temp */
            astore 2 /* prev */
        11: .line 252
            aload 3 /* temp */
            getfield org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.next:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            astore 3 /* temp */
        12: .line 235
      StackMap locals:
      StackMap stack:
            aload 3 /* temp */
            getstatic org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval.EndMarker:Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            if_acmpne 3
        13: .line 254
            return
        end local 3 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval temp
        end local 2 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval prev
        end local 1 // org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval interval
        end local 0 // org.graalvm.compiler.debug.DebugContext debug
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0     debug  Lorg/graalvm/compiler/debug/DebugContext;
            0   14     1  interval  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            1   14     2      prev  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
            2   14     3      temp  Lorg/graalvm/compiler/lir/alloc/trace/lsra/TraceInterval;
    MethodParameters:
          Name  Flags
      debug     
      interval  
}
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 final SpillState = org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval$SpillState of org.graalvm.compiler.lir.alloc.trace.lsra.TraceInterval
  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