public class org.graalvm.compiler.core.aarch64.AArch64MoveFactory implements org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.core.aarch64.AArch64MoveFactory
  super_class: java.lang.Object
{
  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$jdk$vm$ci$meta$JavaKind;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 44
            ldc Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;
            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.core.aarch64.AArch64MoveFactory.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;

  public org.graalvm.compiler.lir.LIRInstruction createMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
        start local 1 // jdk.vm.ci.meta.AllocatableValue dst
        start local 2 // jdk.vm.ci.meta.Value src
         0: .line 48
            aload 2 /* src */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
            istore 3 /* srcIsSlot */
        start local 3 // boolean srcIsSlot
         1: .line 49
            aload 1 /* dst */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue:(Ljdk/vm/ci/meta/Value;)Z
            istore 4 /* dstIsSlot */
        start local 4 // boolean dstIsSlot
         2: .line 50
            aload 2 /* src */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isConstantValue:(Ljdk/vm/ci/meta/Value;)Z
            ifeq 4
         3: .line 51
            aload 0 /* this */
            aload 1 /* dst */
            aload 2 /* src */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.asConstant:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Constant;
            invokevirtual org.graalvm.compiler.core.aarch64.AArch64MoveFactory.createLoad:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Constant;)Lorg/graalvm/compiler/lir/LIRInstruction;
            areturn
         4: .line 52
      StackMap locals: int int
      StackMap stack:
            aload 2 /* src */
            instanceof org.graalvm.compiler.lir.aarch64.AArch64AddressValue
            ifeq 6
         5: .line 53
            new org.graalvm.compiler.lir.aarch64.AArch64Move$LoadAddressOp
            dup
            aload 1 /* dst */
            aload 2 /* src */
            checkcast org.graalvm.compiler.lir.aarch64.AArch64AddressValue
            invokespecial org.graalvm.compiler.lir.aarch64.AArch64Move$LoadAddressOp.<init>:(Ljdk/vm/ci/meta/AllocatableValue;Lorg/graalvm/compiler/lir/aarch64/AArch64AddressValue;)V
            areturn
         6: .line 55
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.core.aarch64.AArch64MoveFactory.$assertionsDisabled:Z
            ifne 7
            aload 2 /* src */
            instanceof jdk.vm.ci.meta.AllocatableValue
            ifne 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 56
      StackMap locals:
      StackMap stack:
            iload 3 /* srcIsSlot */
            ifeq 9
            iload 4 /* dstIsSlot */
            ifeq 9
         8: .line 57
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 2 /* src */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* dst */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         9: .line 59
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.lir.aarch64.AArch64Move$Move
            dup
            aload 1 /* dst */
            aload 2 /* src */
            checkcast jdk.vm.ci.meta.AllocatableValue
            invokespecial org.graalvm.compiler.lir.aarch64.AArch64Move$Move.<init>:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
        end local 4 // boolean dstIsSlot
        end local 3 // boolean srcIsSlot
        end local 2 // jdk.vm.ci.meta.Value src
        end local 1 // jdk.vm.ci.meta.AllocatableValue dst
        end local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;
            0   10     1        dst  Ljdk/vm/ci/meta/AllocatableValue;
            0   10     2        src  Ljdk/vm/ci/meta/Value;
            1   10     3  srcIsSlot  Z
            2   10     4  dstIsSlot  Z
    MethodParameters:
      Name  Flags
      dst   
      src   

  public org.graalvm.compiler.lir.LIRInstruction createStackMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
        start local 1 // jdk.vm.ci.meta.AllocatableValue result
        start local 2 // jdk.vm.ci.meta.AllocatableValue input
         0: .line 66
            new org.graalvm.compiler.lir.aarch64.AArch64Move$Move
            dup
            aload 1 /* result */
            aload 2 /* input */
            invokespecial org.graalvm.compiler.lir.aarch64.AArch64Move$Move.<init>:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
        end local 2 // jdk.vm.ci.meta.AllocatableValue input
        end local 1 // jdk.vm.ci.meta.AllocatableValue result
        end local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;
            0    1     1  result  Ljdk/vm/ci/meta/AllocatableValue;
            0    1     2   input  Ljdk/vm/ci/meta/AllocatableValue;
    MethodParameters:
        Name  Flags
      result  
      input   

  public org.graalvm.compiler.lir.LIRInstruction createLoad(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Constant;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
        start local 1 // jdk.vm.ci.meta.AllocatableValue dst
        start local 2 // jdk.vm.ci.meta.Constant src
         0: .line 71
            aload 2 /* src */
            instanceof jdk.vm.ci.meta.JavaConstant
            ifeq 5
         1: .line 72
            aload 2 /* src */
            checkcast jdk.vm.ci.meta.JavaConstant
            astore 3 /* javaConstant */
        start local 3 // jdk.vm.ci.meta.JavaConstant javaConstant
         2: .line 73
            aload 0 /* this */
            aload 3 /* javaConstant */
            invokevirtual org.graalvm.compiler.core.aarch64.AArch64MoveFactory.canInlineConstant:(Ljdk/vm/ci/meta/JavaConstant;)Z
            ifeq 4
         3: .line 74
            new org.graalvm.compiler.lir.aarch64.AArch64Move$LoadInlineConstant
            dup
            aload 3 /* javaConstant */
            aload 1 /* dst */
            invokespecial org.graalvm.compiler.lir.aarch64.AArch64Move$LoadInlineConstant.<init>:(Ljdk/vm/ci/meta/JavaConstant;Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
         4: .line 78
      StackMap locals: jdk.vm.ci.meta.JavaConstant
      StackMap stack:
            new org.graalvm.compiler.lir.aarch64.AArch64Move$LoadInlineConstant
            dup
            aload 3 /* javaConstant */
            aload 1 /* dst */
            invokespecial org.graalvm.compiler.lir.aarch64.AArch64Move$LoadInlineConstant.<init>:(Ljdk/vm/ci/meta/JavaConstant;Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
        end local 3 // jdk.vm.ci.meta.JavaConstant javaConstant
         5: .line 80
      StackMap locals:
      StackMap stack:
            aload 2 /* src */
            instanceof org.graalvm.compiler.core.common.type.DataPointerConstant
            ifeq 7
         6: .line 81
            new org.graalvm.compiler.lir.aarch64.AArch64Move$LoadDataOp
            dup
            aload 1 /* dst */
            aload 2 /* src */
            checkcast org.graalvm.compiler.core.common.type.DataPointerConstant
            invokespecial org.graalvm.compiler.lir.aarch64.AArch64Move$LoadDataOp.<init>:(Ljdk/vm/ci/meta/AllocatableValue;Lorg/graalvm/compiler/core/common/type/DataPointerConstant;)V
            areturn
         7: .line 84
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:()Ljava/lang/RuntimeException;
            athrow
        end local 2 // jdk.vm.ci.meta.Constant src
        end local 1 // jdk.vm.ci.meta.AllocatableValue dst
        end local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;
            0    8     1           dst  Ljdk/vm/ci/meta/AllocatableValue;
            0    8     2           src  Ljdk/vm/ci/meta/Constant;
            2    5     3  javaConstant  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
      Name  Flags
      dst   
      src   

  public boolean canInlineConstant(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
        start local 1 // jdk.vm.ci.meta.JavaConstant c
         0: .line 90
            invokestatic org.graalvm.compiler.core.aarch64.AArch64MoveFactory.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:()[I
            aload 1 /* c */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iaload
            tableswitch { // 1 - 9
                    1: 1
                    2: 1
                    3: 1
                    4: 1
                    5: 1
                    6: 4
                    7: 2
                    8: 4
                    9: 3
              default: 4
          }
         1: .line 96
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            i2l
            invokestatic org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler.isMovableImmediate:(J)Z
            ireturn
         2: .line 98
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
            invokestatic org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler.isMovableImmediate:(J)Z
            ireturn
         3: .line 100
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            invokeinterface jdk.vm.ci.meta.JavaConstant.isNull:()Z
            ireturn
         4: .line 102
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // jdk.vm.ci.meta.JavaConstant c
        end local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;
            0    5     1     c  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
      Name  Flags
      c     

  public boolean allowConstantToStackMove(jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/Constant;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
        start local 1 // jdk.vm.ci.meta.Constant value
         0: .line 108
            iconst_0
            ireturn
        end local 1 // jdk.vm.ci.meta.Constant value
        end local 0 // org.graalvm.compiler.core.aarch64.AArch64MoveFactory this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/compiler/core/aarch64/AArch64MoveFactory;
            0    1     1  value  Ljdk/vm/ci/meta/Constant;
    MethodParameters:
       Name  Flags
      value  

  static int[] $SWITCH_TABLE$jdk$vm$ci$meta$JavaKind();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 44
            getstatic org.graalvm.compiler.core.aarch64.AArch64MoveFactory.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic jdk.vm.ci.meta.JavaKind.values:()[Ljdk/vm/ci/meta/JavaKind;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Boolean:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Byte:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Char:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Double:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 8
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Float:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 6
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 11
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_5
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 7
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 9
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Short:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_3
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Void:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 10
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            dup
            putstatic org.graalvm.compiler.core.aarch64.AArch64MoveFactory.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
}
SourceFile: "AArch64MoveFactory.java"
InnerClasses:
  public LoadAddressOp = org.graalvm.compiler.lir.aarch64.AArch64Move$LoadAddressOp of org.graalvm.compiler.lir.aarch64.AArch64Move
  public LoadDataOp = org.graalvm.compiler.lir.aarch64.AArch64Move$LoadDataOp of org.graalvm.compiler.lir.aarch64.AArch64Move
  public LoadInlineConstant = org.graalvm.compiler.lir.aarch64.AArch64Move$LoadInlineConstant of org.graalvm.compiler.lir.aarch64.AArch64Move
  public Move = org.graalvm.compiler.lir.aarch64.AArch64Move$Move of org.graalvm.compiler.lir.aarch64.AArch64Move
  public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool