final class org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer
  super_class: java.lang.Object
{
  private final java.util.List<java.util.List<org.graalvm.compiler.lir.LIRInstruction>> edgeInstructionSeqences;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;>;

  private org.graalvm.compiler.lir.LIR ir;
    descriptor: Lorg/graalvm/compiler/lir/LIR;
    flags: (0x0002) ACC_PRIVATE

  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 76
            ldc Lorg/graalvm/compiler/lir/EdgeMoveOptimizer;
            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.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.graalvm.compiler.lir.LIR);
    descriptor: (Lorg/graalvm/compiler/lir/LIR;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer this
        start local 1 // org.graalvm.compiler.lir.LIR ir
         0: .line 80
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 81
            aload 0 /* this */
            aload 1 /* ir */
            putfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
         2: .line 82
            aload 0 /* this */
            new java.util.ArrayList
            dup
            iconst_4
            invokespecial java.util.ArrayList.<init>:(I)V
            putfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
         3: .line 83
            return
        end local 1 // org.graalvm.compiler.lir.LIR ir
        end local 0 // org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/compiler/lir/EdgeMoveOptimizer$Optimizer;
            0    4     1    ir  Lorg/graalvm/compiler/lir/LIR;
    MethodParameters:
      Name  Flags
      ir    

  private static boolean same(org.graalvm.compiler.lir.LIRInstruction, org.graalvm.compiler.lir.LIRInstruction);
    descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/LIRInstruction;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.graalvm.compiler.lir.LIRInstruction op1
        start local 1 // org.graalvm.compiler.lir.LIRInstruction op2
         0: .line 94
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 1
            aload 0 /* op1 */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 95
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 2
            aload 1 /* op2 */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* op1 */
            invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.isValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifeq 7
            aload 1 /* op2 */
            invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.isValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifeq 7
         3: .line 98
            aload 0 /* op1 */
            invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.asValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
            astore 2 /* move1 */
        start local 2 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp move1
         4: .line 99
            aload 1 /* op2 */
            invokestatic org.graalvm.compiler.lir.StandardOp$ValueMoveOp.asValueMoveOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
            astore 3 /* move2 */
        start local 3 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp move2
         5: .line 100
            aload 2 /* move1 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
            aload 3 /* move2 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getInput:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
            ifeq 12
            aload 2 /* move1 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            aload 3 /* move2 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$ValueMoveOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
            ifeq 12
         6: .line 102
            iconst_1
            ireturn
        end local 3 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp move2
        end local 2 // org.graalvm.compiler.lir.StandardOp$ValueMoveOp move1
         7: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* op1 */
            invokestatic org.graalvm.compiler.lir.StandardOp$LoadConstantOp.isLoadConstantOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifeq 12
            aload 1 /* op2 */
            invokestatic org.graalvm.compiler.lir.StandardOp$LoadConstantOp.isLoadConstantOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifeq 12
         8: .line 105
            aload 0 /* op1 */
            invokestatic org.graalvm.compiler.lir.StandardOp$LoadConstantOp.asLoadConstantOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
            astore 2 /* move1 */
        start local 2 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp move1
         9: .line 106
            aload 1 /* op2 */
            invokestatic org.graalvm.compiler.lir.StandardOp$LoadConstantOp.asLoadConstantOp:(Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
            astore 3 /* move2 */
        start local 3 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp move2
        10: .line 107
            aload 2 /* move1 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getConstant:()Ljdk/vm/ci/meta/Constant;
            aload 3 /* move2 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getConstant:()Ljdk/vm/ci/meta/Constant;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 12
            aload 2 /* move1 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            aload 3 /* move2 */
            invokeinterface org.graalvm.compiler.lir.StandardOp$LoadConstantOp.getResult:()Ljdk/vm/ci/meta/AllocatableValue;
            invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
            ifeq 12
        11: .line 109
            iconst_1
            ireturn
        end local 3 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp move2
        end local 2 // org.graalvm.compiler.lir.StandardOp$LoadConstantOp move1
        12: .line 112
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // org.graalvm.compiler.lir.LIRInstruction op2
        end local 0 // org.graalvm.compiler.lir.LIRInstruction op1
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0    op1  Lorg/graalvm/compiler/lir/LIRInstruction;
            0   13     1    op2  Lorg/graalvm/compiler/lir/LIRInstruction;
            4    7     2  move1  Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
            5    7     3  move2  Lorg/graalvm/compiler/lir/StandardOp$ValueMoveOp;
            9   12     2  move1  Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
           10   12     3  move2  Lorg/graalvm/compiler/lir/StandardOp$LoadConstantOp;
    MethodParameters:
      Name  Flags
      op1   
      op2   

  private void optimizeMovesAtBlockEnd(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 120
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* pred */
        start local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase pred
         2: .line 121
            aload 2 /* pred */
            aload 1 /* block */
            if_acmpne 4
         3: .line 123
            return
        end local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase pred
         4: .line 120
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 128
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         7: .line 130
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
            istore 2 /* numPreds */
        start local 2 // int numPreds
         8: .line 131
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 9
            iload 2 /* numPreds */
            iconst_1
            if_icmpgt 9
            new java.lang.AssertionError
            dup
            ldc "do not call otherwise"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         9: .line 134
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int
      StackMap stack:
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 23
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
        10: aload 6
            iload 4
            aaload
            astore 3 /* pred */
        start local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase pred
        11: .line 135
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 12
            aload 3 /* pred */
            ifnonnull 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 136
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 13
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
            aload 3 /* pred */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            ifnonnull 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        13: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
            aload 3 /* pred */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            astore 7 /* predInstructions */
        start local 7 // java.util.ArrayList predInstructions
        14: .line 139
            aload 3 /* pred */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
            iconst_1
            if_icmpeq 16
        15: .line 142
            return
        16: .line 145
      StackMap locals: java.util.ArrayList
      StackMap stack:
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 17
            aload 3 /* pred */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            iconst_0
            aaload
            aload 1 /* block */
            if_acmpeq 17
            new java.lang.AssertionError
            dup
            ldc "invalid control flow"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        17: .line 146
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 18
            aload 7 /* predInstructions */
            aload 7 /* predInstructions */
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            instanceof org.graalvm.compiler.lir.StandardOp$JumpOp
            ifne 18
            new java.lang.AssertionError
            dup
            ldc "block must end with unconditional jump"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        18: .line 148
      StackMap locals:
      StackMap stack:
            aload 7 /* predInstructions */
            aload 7 /* predInstructions */
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.hasState:()Z
            ifeq 20
        19: .line 150
            return
        20: .line 154
      StackMap locals:
      StackMap stack:
            aload 7 /* predInstructions */
            iconst_0
            aload 7 /* predInstructions */
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            invokevirtual java.util.ArrayList.subList:(II)Ljava/util/List;
            astore 8 /* seq */
        start local 8 // java.util.List seq
        21: .line 155
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            aload 8 /* seq */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.util.List seq
        end local 7 // java.util.ArrayList predInstructions
        end local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase pred
        22: .line 134
            iinc 4 1
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
        23: iload 4
            iload 5
            if_icmplt 10
        24: .line 160
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 3 /* seq */
        start local 3 // java.util.List seq
        25: .line 161
            aload 3 /* seq */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 27
        26: .line 162
            return
        27: .line 165
      StackMap locals: java.util.List
      StackMap stack:
            aload 3 /* seq */
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.last:(Ljava/util/List;)Lorg/graalvm/compiler/lir/LIRInstruction;
            astore 4 /* op */
        start local 4 // org.graalvm.compiler.lir.LIRInstruction op
        28: .line 166
            iconst_1
            istore 5 /* i */
        start local 5 // int i
        29: goto 34
        30: .line 167
      StackMap locals: org.graalvm.compiler.lir.LIRInstruction int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 6 /* otherSeq */
        start local 6 // java.util.List otherSeq
        31: .line 168
            aload 6 /* otherSeq */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 32
            aload 4 /* op */
            aload 6 /* otherSeq */
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.last:(Ljava/util/List;)Lorg/graalvm/compiler/lir/LIRInstruction;
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.same:(Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifne 33
        32: .line 169
      StackMap locals: java.util.List
      StackMap stack:
            return
        end local 6 // java.util.List otherSeq
        33: .line 166
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: iload 5 /* i */
            iload 2 /* numPreds */
            if_icmplt 30
        end local 5 // int i
        35: .line 174
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            iconst_1
            aload 4 /* op */
            invokevirtual java.util.ArrayList.add:(ILjava/lang/Object;)V
        36: .line 177
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        37: goto 41
        38: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 3 /* seq */
        39: .line 179
            aload 3 /* seq */
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.removeLast:(Ljava/util/List;)V
        40: .line 177
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        41: iload 5 /* i */
            iload 2 /* numPreds */
            if_icmplt 38
        end local 5 // int i
        end local 4 // org.graalvm.compiler.lir.LIRInstruction op
        end local 3 // java.util.List seq
        42: .line 159
            goto 24
        end local 2 // int numPreds
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   43     0              this  Lorg/graalvm/compiler/lir/EdgeMoveOptimizer$Optimizer;
            0   43     1             block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            2    4     2              pred  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            8   43     2          numPreds  I
           11   22     3              pred  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
           14   22     7  predInstructions  Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           21   22     8               seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           25   42     3               seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           28   42     4                op  Lorg/graalvm/compiler/lir/LIRInstruction;
           29   35     5                 i  I
           31   33     6          otherSeq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           37   42     5                 i  I
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
    MethodParameters:
       Name  Flags
      block  

  private void optimizeMovesAtBlockBegin(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=13, args_size=2
        start local 0 // org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 191
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         1: .line 192
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
            istore 2 /* numSux */
        start local 2 // int numSux
         2: .line 194
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            astore 3 /* instructions */
        start local 3 // java.util.ArrayList instructions
         3: .line 196
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 4
            iload 2 /* numSux */
            iconst_2
            if_icmpeq 4
            new java.lang.AssertionError
            dup
            ldc "method should not be called otherwise"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         4: .line 198
      StackMap locals: int java.util.ArrayList
      StackMap stack:
            aload 3 /* instructions */
            aload 3 /* instructions */
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            astore 4 /* lastInstruction */
        start local 4 // org.graalvm.compiler.lir.LIRInstruction lastInstruction
         5: .line 199
            aload 4 /* lastInstruction */
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.hasState:()Z
            ifeq 7
         6: .line 201
            return
         7: .line 204
      StackMap locals: org.graalvm.compiler.lir.LIRInstruction
      StackMap stack:
            aload 4 /* lastInstruction */
            astore 5 /* branch */
        start local 5 // org.graalvm.compiler.lir.LIRInstruction branch
         8: .line 205
            aload 5 /* branch */
            instanceof org.graalvm.compiler.lir.StandardOp$BranchOp
            ifeq 9
            aload 5 /* branch */
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.hasOperands:()Z
            ifeq 10
         9: .line 211
      StackMap locals: org.graalvm.compiler.lir.LIRInstruction
      StackMap stack:
            return
        10: .line 216
      StackMap locals:
      StackMap stack:
            aload 3 /* instructions */
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            istore 6 /* insertIdx */
        start local 6 // int insertIdx
        11: .line 219
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 21
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int java.util.ArrayList org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.lir.LIRInstruction int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
        12: aload 10
            iload 8
            aaload
            astore 7 /* sux */
        start local 7 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase sux
        13: .line 220
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
            aload 7 /* sux */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            astore 11 /* suxInstructions */
        start local 11 // java.util.ArrayList suxInstructions
        14: .line 222
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 15
            aload 11 /* suxInstructions */
            iconst_0
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            instanceof org.graalvm.compiler.lir.StandardOp$LabelOp
            ifne 15
            new java.lang.AssertionError
            dup
            ldc "block must start with label"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        15: .line 224
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int java.util.ArrayList org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.lir.LIRInstruction int org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.util.ArrayList
      StackMap stack:
            aload 7 /* sux */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
            iconst_1
            if_icmpeq 17
        16: .line 227
            return
        17: .line 229
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.$assertionsDisabled:Z
            ifne 18
            aload 7 /* sux */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            iconst_0
            aaload
            aload 1 /* block */
            if_acmpeq 18
            new java.lang.AssertionError
            dup
            ldc "invalid control flow"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        18: .line 232
      StackMap locals:
      StackMap stack:
            aload 11 /* suxInstructions */
            iconst_1
            aload 11 /* suxInstructions */
            invokevirtual java.util.ArrayList.size:()I
            invokevirtual java.util.ArrayList.subList:(II)Ljava/util/List;
            astore 12 /* seq */
        start local 12 // java.util.List seq
        19: .line 233
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            aload 12 /* seq */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.util.List seq
        end local 11 // java.util.ArrayList suxInstructions
        end local 7 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase sux
        20: .line 219
            iinc 8 1
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int java.util.ArrayList org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.lir.LIRInstruction int top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
        21: iload 8
            iload 9
            if_icmplt 12
        22: .line 238
      StackMap locals: org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer org.graalvm.compiler.core.common.cfg.AbstractBlockBase int java.util.ArrayList org.graalvm.compiler.lir.LIRInstruction org.graalvm.compiler.lir.LIRInstruction int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 7 /* seq */
        start local 7 // java.util.List seq
        23: .line 239
            aload 7 /* seq */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 25
        24: .line 240
            return
        25: .line 243
      StackMap locals: java.util.List
      StackMap stack:
            aload 7 /* seq */
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.first:(Ljava/util/List;)Lorg/graalvm/compiler/lir/LIRInstruction;
            astore 8 /* op */
        start local 8 // org.graalvm.compiler.lir.LIRInstruction op
        26: .line 244
            iconst_1
            istore 9 /* i */
        start local 9 // int i
        27: goto 32
        28: .line 245
      StackMap locals: org.graalvm.compiler.lir.LIRInstruction int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 10 /* otherSeq */
        start local 10 // java.util.List otherSeq
        29: .line 246
            aload 10 /* otherSeq */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 30
            aload 8 /* op */
            aload 10 /* otherSeq */
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.first:(Ljava/util/List;)Lorg/graalvm/compiler/lir/LIRInstruction;
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.same:(Lorg/graalvm/compiler/lir/LIRInstruction;Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            ifne 31
        30: .line 249
      StackMap locals: java.util.List
      StackMap stack:
            return
        end local 10 // java.util.List otherSeq
        31: .line 244
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 9 /* i */
            iload 2 /* numSux */
            if_icmplt 28
        end local 9 // int i
        33: .line 254
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.ir:Lorg/graalvm/compiler/lir/LIR;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            iload 6 /* insertIdx */
            aload 8 /* op */
            invokevirtual java.util.ArrayList.add:(ILjava/lang/Object;)V
        34: .line 255
            iinc 6 /* insertIdx */ 1
        35: .line 258
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        36: goto 40
        37: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.edgeInstructionSeqences:Ljava/util/List;
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 7 /* seq */
        38: .line 260
            aload 7 /* seq */
            invokestatic org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer.removeFirst:(Ljava/util/List;)V
        39: .line 258
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        40: iload 9 /* i */
            iload 2 /* numSux */
            if_icmplt 37
        end local 9 // int i
        end local 8 // org.graalvm.compiler.lir.LIRInstruction op
        end local 7 // java.util.List seq
        41: .line 237
            goto 22
        end local 6 // int insertIdx
        end local 5 // org.graalvm.compiler.lir.LIRInstruction branch
        end local 4 // org.graalvm.compiler.lir.LIRInstruction lastInstruction
        end local 3 // java.util.ArrayList instructions
        end local 2 // int numSux
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   42     0             this  Lorg/graalvm/compiler/lir/EdgeMoveOptimizer$Optimizer;
            0   42     1            block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            2   42     2           numSux  I
            3   42     3     instructions  Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
            5   42     4  lastInstruction  Lorg/graalvm/compiler/lir/LIRInstruction;
            8   42     5           branch  Lorg/graalvm/compiler/lir/LIRInstruction;
           11   42     6        insertIdx  I
           13   20     7              sux  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
           14   20    11  suxInstructions  Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           19   20    12              seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           23   41     7              seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           26   41     8               op  Lorg/graalvm/compiler/lir/LIRInstruction;
           27   33     9                i  I
           29   31    10         otherSeq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
           36   41     9                i  I
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
    MethodParameters:
       Name  Flags
      block  

  private static org.graalvm.compiler.lir.LIRInstruction first(java.util.List<org.graalvm.compiler.lir.LIRInstruction>);
    descriptor: (Ljava/util/List;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.List seq
         0: .line 269
            aload 0 /* seq */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            areturn
        end local 0 // java.util.List seq
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
    Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;)Lorg/graalvm/compiler/lir/LIRInstruction;
    MethodParameters:
      Name  Flags
      seq   

  private static org.graalvm.compiler.lir.LIRInstruction last(java.util.List<org.graalvm.compiler.lir.LIRInstruction>);
    descriptor: (Ljava/util/List;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.List seq
         0: .line 276
            aload 0 /* seq */
            aload 0 /* seq */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.LIRInstruction
            areturn
        end local 0 // java.util.List seq
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
    Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;)Lorg/graalvm/compiler/lir/LIRInstruction;
    MethodParameters:
      Name  Flags
      seq   

  private static void removeFirst(java.util.List<org.graalvm.compiler.lir.LIRInstruction>);
    descriptor: (Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.List seq
         0: .line 283
            aload 0 /* seq */
            iconst_0
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            pop
         1: .line 284
            return
        end local 0 // java.util.List seq
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
    Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;)V
    MethodParameters:
      Name  Flags
      seq   

  private static void removeLast(java.util.List<org.graalvm.compiler.lir.LIRInstruction>);
    descriptor: (Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.List seq
         0: .line 290
            aload 0 /* seq */
            aload 0 /* seq */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            pop
         1: .line 291
            return
        end local 0 // java.util.List seq
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   seq  Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
    Signature: (Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;)V
    MethodParameters:
      Name  Flags
      seq   
}
SourceFile: "EdgeMoveOptimizer.java"
NestHost: org.graalvm.compiler.lir.EdgeMoveOptimizer
InnerClasses:
  private final Optimizer = org.graalvm.compiler.lir.EdgeMoveOptimizer$Optimizer of org.graalvm.compiler.lir.EdgeMoveOptimizer
  public abstract BranchOp = org.graalvm.compiler.lir.StandardOp$BranchOp of org.graalvm.compiler.lir.StandardOp
  public JumpOp = org.graalvm.compiler.lir.StandardOp$JumpOp of org.graalvm.compiler.lir.StandardOp
  public final LabelOp = org.graalvm.compiler.lir.StandardOp$LabelOp of org.graalvm.compiler.lir.StandardOp
  public abstract LoadConstantOp = org.graalvm.compiler.lir.StandardOp$LoadConstantOp of org.graalvm.compiler.lir.StandardOp
  public abstract ValueMoveOp = org.graalvm.compiler.lir.StandardOp$ValueMoveOp of org.graalvm.compiler.lir.StandardOp