public class org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase extends org.graalvm.compiler.lir.alloc.lsra.LinearScanEliminateSpillMovePhase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase
  super_class: org.graalvm.compiler.lir.alloc.lsra.LinearScanEliminateSpillMovePhase
{
  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            ldc Lorg/graalvm/compiler/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.graalvm.compiler.lir.alloc.lsra.LinearScan);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
        start local 1 // org.graalvm.compiler.lir.alloc.lsra.LinearScan allocator
         0: .line 41
            aload 0 /* this */
            aload 1 /* allocator */
            invokespecial org.graalvm.compiler.lir.alloc.lsra.LinearScanEliminateSpillMovePhase.<init>:(Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)V
         1: .line 42
            return
        end local 1 // org.graalvm.compiler.lir.alloc.lsra.LinearScan allocator
        end local 0 // org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/graalvm/compiler/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase;
            0    2     1  allocator  Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
    MethodParameters:
           Name  Flags
      allocator  

  protected int firstInstructionOfInterest();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
         0: .line 47
            iconst_0
            ireturn
        end local 0 // org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase;

  protected boolean canEliminateSpillMove(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.StandardOp$MoveOp);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        start local 2 // org.graalvm.compiler.lir.StandardOp$MoveOp move
         0: .line 52
            aload 0 /* this */
            aload 1 /* block */
            aload 2 /* move */
            invokespecial org.graalvm.compiler.lir.alloc.lsra.LinearScanEliminateSpillMovePhase.canEliminateSpillMove:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;)Z
            ifeq 7
         1: .line 54
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
            aload 2 /* move */
            invokeinterface org.graalvm.compiler.lir.StandardOp$MoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.intervalFor:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
            astore 3 /* curInterval */
        start local 3 // org.graalvm.compiler.lir.alloc.lsra.Interval curInterval
         2: .line 55
            getstatic org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 4
            aload 3 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
            ifne 3
            aload 3 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.alwaysInMemory:()Z
            ifne 4
      StackMap locals: org.graalvm.compiler.lir.alloc.lsra.Interval
      StackMap stack:
         3: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 56
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* block */
            aload 2 /* move */
            aload 3 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.isPhiResolutionMove:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
            ifne 7
         5: .line 57
            getstatic org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 6
            aload 3 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
            ifne 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 3 /* curInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.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 58
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // org.graalvm.compiler.lir.alloc.lsra.Interval curInterval
         7: .line 61
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        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.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/graalvm/compiler/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase;
            0    8     1        block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            0    8     2         move  Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
            2    7     3  curInterval  Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;)Z
    MethodParameters:
       Name  Flags
      block  
      move   

  private boolean isPhiResolutionMove(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.StandardOp$MoveOp, org.graalvm.compiler.lir.alloc.lsra.Interval);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        start local 2 // org.graalvm.compiler.lir.StandardOp$MoveOp move
        start local 3 // org.graalvm.compiler.lir.alloc.lsra.Interval toInterval
         0: .line 66
            aload 3 /* toInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.isSplitParent:()Z
            ifne 2
         1: .line 67
            iconst_0
            ireturn
         2: .line 69
      StackMap locals:
      StackMap stack:
            aload 3 /* toInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
            iconst_1
            iand
            iconst_1
            if_icmpne 4
         3: .line 71
            iconst_0
            ireturn
         4: .line 73
      StackMap locals:
      StackMap stack:
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
            iconst_1
            if_icmpeq 6
         5: .line 74
            iconst_0
            ireturn
         6: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
            aload 3 /* toInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.instructionForId:(I)Lorg/graalvm/compiler/lir/LIRInstruction;
            astore 4 /* op */
        start local 4 // org.graalvm.compiler.lir.LIRInstruction op
         7: .line 77
            aload 4 /* op */
            instanceof org.graalvm.compiler.lir.StandardOp$LabelOp
            ifne 9
         8: .line 78
            iconst_0
            ireturn
         9: .line 80
      StackMap locals: org.graalvm.compiler.lir.LIRInstruction
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
            aload 3 /* toInterval */
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.from:()I
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockForId:(I)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 5 /* intStartBlock */
        start local 5 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase intStartBlock
        10: .line 81
            getstatic org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.$assertionsDisabled:Z
            ifne 11
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            aload 5 /* intStartBlock */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            iconst_0
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            aload 4 /* op */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        11: .line 82
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            iconst_0
            aaload
            aload 5 /* intStartBlock */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 13
        12: .line 83
            iconst_0
            ireturn
        13: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
            invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 6 /* debug */
        start local 6 // org.graalvm.compiler.debug.DebugContext debug
        14: .line 86
            aconst_null
            astore 7
            aconst_null
            astore 8
        15: aload 6 /* debug */
            invokevirtual org.graalvm.compiler.debug.DebugContext.indent:()Lorg/graalvm/compiler/debug/Indent;
            astore 9 /* indent */
        start local 9 // org.graalvm.compiler.debug.Indent indent
        16: .line 87
            aload 6 /* debug */
            ldc "Is a move (%s) to phi interval %s"
            aload 2 /* move */
            aload 3 /* toInterval */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        17: .line 88
            aload 9 /* indent */
            ifnull 23
            aload 9 /* indent */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 23
      StackMap locals: org.graalvm.compiler.lir.alloc.lsra.ssa.SSALinearScanEliminateSpillMovePhase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.lir.StandardOp$MoveOp org.graalvm.compiler.lir.alloc.lsra.Interval org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.debug.DebugContext java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
      StackMap stack: java.lang.Throwable
        18: astore 7
            aload 9 /* indent */
            ifnull 19
            aload 9 /* indent */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 9 // org.graalvm.compiler.debug.Indent indent
      StackMap locals:
      StackMap stack:
        19: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 8
            aload 7
            ifnonnull 21
            aload 8
            astore 7
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 7
            aload 8
            if_acmpeq 22
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 7
            athrow
        23: .line 89
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 6 // org.graalvm.compiler.debug.DebugContext debug
        end local 5 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase intStartBlock
        end local 4 // org.graalvm.compiler.lir.LIRInstruction op
        end local 3 // org.graalvm.compiler.lir.alloc.lsra.Interval toInterval
        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.lsra.ssa.SSALinearScanEliminateSpillMovePhase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   24     0           this  Lorg/graalvm/compiler/lir/alloc/lsra/ssa/SSALinearScanEliminateSpillMovePhase;
            0   24     1          block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            0   24     2           move  Lorg/graalvm/compiler/lir/StandardOp$MoveOp;
            0   24     3     toInterval  Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
            7   24     4             op  Lorg/graalvm/compiler/lir/LIRInstruction;
           10   24     5  intStartBlock  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
           14   24     6          debug  Lorg/graalvm/compiler/debug/DebugContext;
           16   19     9         indent  Lorg/graalvm/compiler/debug/Indent;
      Exception table:
        from    to  target  type
          16    17      18  any
          15    20      20  any
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/StandardOp$MoveOp;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)Z
    MethodParameters:
            Name  Flags
      block       
      move        
      toInterval  
}
SourceFile: "SSALinearScanEliminateSpillMovePhase.java"
InnerClasses:
  public final LabelOp = org.graalvm.compiler.lir.StandardOp$LabelOp of org.graalvm.compiler.lir.StandardOp
  public abstract MoveOp = org.graalvm.compiler.lir.StandardOp$MoveOp of org.graalvm.compiler.lir.StandardOp