public class com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig implements com.oracle.svm.core.graal.meta.SubstrateRegisterConfig
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig
  super_class: java.lang.Object
{
  private final jdk.vm.ci.code.TargetDescription target;
    descriptor: Ljdk/vm/ci/code/TargetDescription;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int nativeParamsStackOffset;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.RegisterArray javaGeneralParameterRegs;
    descriptor: Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.RegisterArray nativeGeneralParameterRegs;
    descriptor: Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.RegisterArray xmmParameterRegs;
    descriptor: Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.RegisterArray allocatableRegs;
    descriptor: Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.RegisterArray calleeSaveRegisters;
    descriptor: Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.RegisterAttributes[] attributesMap;
    descriptor: [Ljdk/vm/ci/code/RegisterAttributes;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.MetaAccessProvider metaAccess;
    descriptor: Ljdk/vm/ci/meta/MetaAccessProvider;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean useBasePointer;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static volatile int[] $SWITCH_TABLE$com$oracle$svm$core$graal$meta$SubstrateRegisterConfig$ConfigKind;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, 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

  public void <init>(com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind, jdk.vm.ci.meta.MetaAccessProvider, jdk.vm.ci.code.TargetDescription, boolean);
    descriptor: (Lcom/oracle/svm/core/graal/meta/SubstrateRegisterConfig$ConfigKind;Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/code/TargetDescription;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=5
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
        start local 1 // com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind config
        start local 2 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        start local 3 // jdk.vm.ci.code.TargetDescription target
        start local 4 // boolean useBasePointer
         0: .line 99
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 100
            aload 0 /* this */
            aload 3 /* target */
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.target:Ljdk/vm/ci/code/TargetDescription;
         2: .line 101
            aload 0 /* this */
            aload 2 /* metaAccess */
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
         3: .line 102
            aload 0 /* this */
            iload 4 /* useBasePointer */
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.useBasePointer:Z
         4: .line 104
            invokestatic com.oracle.svm.core.OS.getCurrent:()Lcom/oracle/svm/core/OS;
            getstatic com.oracle.svm.core.OS.WINDOWS:Lcom/oracle/svm/core/OS;
            if_acmpne 16
         5: .line 107
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            iconst_4
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.rcx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.rdx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.r8:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.r9:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
         6: .line 108
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            bipush 6
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.rdx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.r8:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.r9:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.rdi:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_4
            getstatic jdk.vm.ci.amd64.AMD64.rsi:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_5
            getstatic jdk.vm.ci.amd64.AMD64.rcx:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.javaGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
         7: .line 109
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            iconst_4
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.xmm0:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.xmm1:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.xmm2:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.xmm3:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.xmmParameterRegs:Ljdk/vm/ci/code/RegisterArray;
         8: .line 113
            aload 0 /* this */
            iconst_4
            aload 3 /* target */
            getfield jdk.vm.ci.code.TargetDescription.wordSize:I
            imul
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeParamsStackOffset:I
         9: .line 115
            new java.util.ArrayList
            dup
            getstatic jdk.vm.ci.amd64.AMD64.valueRegistersSSE:Ljdk/vm/ci/code/RegisterArray;
            invokevirtual jdk.vm.ci.code.RegisterArray.asList:()Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 5 /* regs */
        start local 5 // java.util.ArrayList regs
        10: .line 116
            aload 5 /* regs */
            invokestatic com.oracle.svm.core.ReservedRegisters.singleton:()Lcom/oracle/svm/core/ReservedRegisters;
            invokevirtual com.oracle.svm.core.ReservedRegisters.getFrameRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        11: .line 117
            aload 5 /* regs */
            getstatic jdk.vm.ci.amd64.AMD64.rbp:Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        12: .line 118
            aload 5 /* regs */
            invokestatic com.oracle.svm.core.ReservedRegisters.singleton:()Lcom/oracle/svm/core/ReservedRegisters;
            invokevirtual com.oracle.svm.core.ReservedRegisters.getHeapBaseRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        13: .line 119
            aload 5 /* regs */
            invokestatic com.oracle.svm.core.ReservedRegisters.singleton:()Lcom/oracle/svm/core/ReservedRegisters;
            invokevirtual com.oracle.svm.core.ReservedRegisters.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        14: .line 120
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            aload 5 /* regs */
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:(Ljava/util/Collection;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.allocatableRegs:Ljdk/vm/ci/code/RegisterArray;
        end local 5 // java.util.ArrayList regs
        15: .line 121
            goto 27
        16: .line 123
      StackMap locals: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind jdk.vm.ci.meta.MetaAccessProvider jdk.vm.ci.code.TargetDescription int
      StackMap stack:
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            bipush 6
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.rdi:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.rsi:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.rdx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.rcx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_4
            getstatic jdk.vm.ci.amd64.AMD64.r8:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_5
            getstatic jdk.vm.ci.amd64.AMD64.r9:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.javaGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
        17: .line 124
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.javaGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
        18: .line 125
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            bipush 8
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.xmm0:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.xmm1:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.xmm2:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.xmm3:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_4
            getstatic jdk.vm.ci.amd64.AMD64.xmm4:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_5
            getstatic jdk.vm.ci.amd64.AMD64.xmm5:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 6
            getstatic jdk.vm.ci.amd64.AMD64.xmm6:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 7
            getstatic jdk.vm.ci.amd64.AMD64.xmm7:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.xmmParameterRegs:Ljdk/vm/ci/code/RegisterArray;
        19: .line 127
            aload 0 /* this */
            iconst_0
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeParamsStackOffset:I
        20: .line 129
            new java.util.ArrayList
            dup
            getstatic jdk.vm.ci.amd64.AMD64.valueRegistersSSE:Ljdk/vm/ci/code/RegisterArray;
            invokevirtual jdk.vm.ci.code.RegisterArray.asList:()Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 5 /* regs */
        start local 5 // java.util.ArrayList regs
        21: .line 130
            aload 5 /* regs */
            invokestatic com.oracle.svm.core.ReservedRegisters.singleton:()Lcom/oracle/svm/core/ReservedRegisters;
            invokevirtual com.oracle.svm.core.ReservedRegisters.getFrameRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        22: .line 131
            iload 4 /* useBasePointer */
            ifeq 24
        23: .line 132
            aload 5 /* regs */
            getstatic jdk.vm.ci.amd64.AMD64.rbp:Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        24: .line 134
      StackMap locals: java.util.ArrayList
      StackMap stack:
            aload 5 /* regs */
            invokestatic com.oracle.svm.core.ReservedRegisters.singleton:()Lcom/oracle/svm/core/ReservedRegisters;
            invokevirtual com.oracle.svm.core.ReservedRegisters.getHeapBaseRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        25: .line 135
            aload 5 /* regs */
            invokestatic com.oracle.svm.core.ReservedRegisters.singleton:()Lcom/oracle/svm/core/ReservedRegisters;
            invokevirtual com.oracle.svm.core.ReservedRegisters.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        26: .line 136
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            aload 5 /* regs */
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:(Ljava/util/Collection;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.allocatableRegs:Ljdk/vm/ci/code/RegisterArray;
        end local 5 // java.util.ArrayList regs
        27: .line 139
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$SWITCH_TABLE$com$oracle$svm$core$graal$meta$SubstrateRegisterConfig$ConfigKind:()[I
            aload 1 /* config */
            invokevirtual com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind.ordinal:()I
            iaload
            tableswitch { // 1 - 2
                    1: 28
                    2: 30
              default: 37
          }
        28: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            iconst_0
            anewarray jdk.vm.ci.code.Register
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.calleeSaveRegisters:Ljdk/vm/ci/code/RegisterArray;
        29: .line 142
            goto 38
        30: .line 149
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.OS.getCurrent:()Lcom/oracle/svm/core/OS;
            getstatic com.oracle.svm.core.OS.WINDOWS:Lcom/oracle/svm/core/OS;
            if_acmpne 35
        31: .line 150
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            bipush 18
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.rbx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.rdi:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.rsi:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.r12:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_4
            getstatic jdk.vm.ci.amd64.AMD64.r13:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_5
            getstatic jdk.vm.ci.amd64.AMD64.r14:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 6
            getstatic jdk.vm.ci.amd64.AMD64.r15:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 7
            getstatic jdk.vm.ci.amd64.AMD64.rbp:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 8
        32: .line 151
            getstatic jdk.vm.ci.amd64.AMD64.xmm6:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 9
            getstatic jdk.vm.ci.amd64.AMD64.xmm7:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 10
            getstatic jdk.vm.ci.amd64.AMD64.xmm8:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 11
            getstatic jdk.vm.ci.amd64.AMD64.xmm9:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 12
            getstatic jdk.vm.ci.amd64.AMD64.xmm10:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 13
            getstatic jdk.vm.ci.amd64.AMD64.xmm11:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 14
            getstatic jdk.vm.ci.amd64.AMD64.xmm12:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 15
            getstatic jdk.vm.ci.amd64.AMD64.xmm13:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 16
            getstatic jdk.vm.ci.amd64.AMD64.xmm14:Ljdk/vm/ci/code/Register;
            aastore
            dup
            bipush 17
            getstatic jdk.vm.ci.amd64.AMD64.xmm15:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
        33: .line 150
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.calleeSaveRegisters:Ljdk/vm/ci/code/RegisterArray;
        34: .line 152
            goto 38
        35: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new jdk.vm.ci.code.RegisterArray
            dup
            bipush 6
            anewarray jdk.vm.ci.code.Register
            dup
            iconst_0
            getstatic jdk.vm.ci.amd64.AMD64.rbx:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_1
            getstatic jdk.vm.ci.amd64.AMD64.r12:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_2
            getstatic jdk.vm.ci.amd64.AMD64.r13:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_3
            getstatic jdk.vm.ci.amd64.AMD64.r14:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_4
            getstatic jdk.vm.ci.amd64.AMD64.r15:Ljdk/vm/ci/code/Register;
            aastore
            dup
            iconst_5
            getstatic jdk.vm.ci.amd64.AMD64.rbp:Ljdk/vm/ci/code/Register;
            aastore
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:([Ljdk/vm/ci/code/Register;)V
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.calleeSaveRegisters:Ljdk/vm/ci/code/RegisterArray;
        36: .line 155
            goto 38
        37: .line 158
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        38: .line 161
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getstatic jdk.vm.ci.amd64.AMD64.allRegisters:Ljdk/vm/ci/code/RegisterArray;
            invokestatic jdk.vm.ci.code.RegisterAttributes.createMap:(Ljdk/vm/ci/code/RegisterConfig;Ljdk/vm/ci/code/RegisterArray;)[Ljdk/vm/ci/code/RegisterAttributes;
            putfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.attributesMap:[Ljdk/vm/ci/code/RegisterAttributes;
        39: .line 162
            return
        end local 4 // boolean useBasePointer
        end local 3 // jdk.vm.ci.code.TargetDescription target
        end local 2 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 1 // com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind config
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   40     0            this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;
            0   40     1          config  Lcom/oracle/svm/core/graal/meta/SubstrateRegisterConfig$ConfigKind;
            0   40     2      metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            0   40     3          target  Ljdk/vm/ci/code/TargetDescription;
            0   40     4  useBasePointer  Z
           10   15     5            regs  Ljava/util/ArrayList<Ljdk/vm/ci/code/Register;>;
           21   27     5            regs  Ljava/util/ArrayList<Ljdk/vm/ci/code/Register;>;
    MethodParameters:
                Name  Flags
      config          
      metaAccess      
      target          
      useBasePointer  

  public jdk.vm.ci.code.Register getReturnRegister(jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/code/Register;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
        start local 1 // jdk.vm.ci.meta.JavaKind kind
         0: .line 166
            invokestatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:()[I
            aload 1 /* kind */
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iaload
            tableswitch { // 1 - 10
                    1: 1
                    2: 1
                    3: 1
                    4: 1
                    5: 1
                    6: 2
                    7: 1
                    8: 2
                    9: 1
                   10: 3
              default: 4
          }
         1: .line 174
      StackMap locals:
      StackMap stack:
            getstatic jdk.vm.ci.amd64.AMD64.rax:Ljdk/vm/ci/code/Register;
            areturn
         2: .line 177
      StackMap locals:
      StackMap stack:
            getstatic jdk.vm.ci.amd64.AMD64.xmm0:Ljdk/vm/ci/code/Register;
            areturn
         3: .line 179
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         4: .line 181
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // jdk.vm.ci.meta.JavaKind kind
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;
            0    5     1  kind  Ljdk/vm/ci/meta/JavaKind;
    MethodParameters:
      Name  Flags
      kind  

  public jdk.vm.ci.code.RegisterArray getAllocatableRegisters();
    descriptor: ()Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
         0: .line 187
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.allocatableRegs:Ljdk/vm/ci/code/RegisterArray;
            areturn
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;

  public jdk.vm.ci.code.RegisterArray getCalleeSaveRegisters();
    descriptor: ()Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
         0: .line 192
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.calleeSaveRegisters:Ljdk/vm/ci/code/RegisterArray;
            areturn
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;

  public jdk.vm.ci.code.RegisterArray getCallerSaveRegisters();
    descriptor: ()Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
         0: .line 197
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.getAllocatableRegisters:()Ljdk/vm/ci/code/RegisterArray;
            areturn
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;

  public boolean areAllAllocatableRegistersCallerSaved();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
         0: .line 202
            iconst_1
            ireturn
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;

  public jdk.vm.ci.code.RegisterAttributes[] getAttributesMap();
    descriptor: ()[Ljdk/vm/ci/code/RegisterAttributes;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
         0: .line 207
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.attributesMap:[Ljdk/vm/ci/code/RegisterAttributes;
            areturn
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;

  public jdk.vm.ci.code.RegisterArray getCallingConventionRegisters(jdk.vm.ci.code.CallingConvention$Type, jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
        start local 1 // jdk.vm.ci.code.CallingConvention$Type t
        start local 2 // jdk.vm.ci.meta.JavaKind kind
         0: .line 212
            aload 1 /* t */
            checkcast com.oracle.svm.core.graal.code.SubstrateCallingConventionType
            astore 3 /* type */
        start local 3 // com.oracle.svm.core.graal.code.SubstrateCallingConventionType type
         1: .line 213
            invokestatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:()[I
            aload 2 /* kind */
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iaload
            tableswitch { // 1 - 9
                    1: 2
                    2: 2
                    3: 2
                    4: 2
                    5: 2
                    6: 5
                    7: 2
                    8: 5
                    9: 2
              default: 6
          }
         2: .line 221
      StackMap locals: com.oracle.svm.core.graal.code.SubstrateCallingConventionType
      StackMap stack:
            aload 3 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.nativeABI:Z
            ifeq 3
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            goto 4
      StackMap locals:
      StackMap stack:
         3: aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.javaGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
      StackMap locals:
      StackMap stack: jdk.vm.ci.code.RegisterArray
         4: areturn
         5: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.xmmParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            areturn
         6: .line 226
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 3 // com.oracle.svm.core.graal.code.SubstrateCallingConventionType type
        end local 2 // jdk.vm.ci.meta.JavaKind kind
        end local 1 // jdk.vm.ci.code.CallingConvention$Type t
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;
            0    7     1     t  Ljdk/vm/ci/code/CallingConvention$Type;
            0    7     2  kind  Ljdk/vm/ci/meta/JavaKind;
            1    7     3  type  Lcom/oracle/svm/core/graal/code/SubstrateCallingConventionType;
    MethodParameters:
      Name  Flags
      t     
      kind  

  public boolean shouldUseBasePointer();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
         0: .line 231
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.useBasePointer:Z
            ireturn
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;

  public jdk.vm.ci.code.CallingConvention getCallingConvention(jdk.vm.ci.code.CallingConvention$Type, jdk.vm.ci.meta.JavaType, jdk.vm.ci.meta.JavaType[], jdk.vm.ci.code.ValueKindFactory<?>);
    descriptor: (Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/meta/JavaType;[Ljdk/vm/ci/meta/JavaType;Ljdk/vm/ci/code/ValueKindFactory;)Ljdk/vm/ci/code/CallingConvention;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=15, args_size=5
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
        start local 1 // jdk.vm.ci.code.CallingConvention$Type t
        start local 2 // jdk.vm.ci.meta.JavaType returnType
        start local 3 // jdk.vm.ci.meta.JavaType[] parameterTypes
        start local 4 // jdk.vm.ci.code.ValueKindFactory valueKindFactory
         0: .line 236
            aload 1 /* t */
            checkcast com.oracle.svm.core.graal.code.SubstrateCallingConventionType
            astore 5 /* type */
        start local 5 // com.oracle.svm.core.graal.code.SubstrateCallingConventionType type
         1: .line 237
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.nativeABI:Z
            ifeq 2
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.outgoing:Z
            ifne 2
            iconst_1
            goto 3
      StackMap locals: com.oracle.svm.core.graal.code.SubstrateCallingConventionType
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 6 /* isEntryPoint */
        start local 6 // boolean isEntryPoint
         4: .line 239
            aload 3 /* parameterTypes */
            arraylength
            anewarray jdk.vm.ci.meta.AllocatableValue
            astore 7 /* locations */
        start local 7 // jdk.vm.ci.meta.AllocatableValue[] locations
         5: .line 241
            iconst_0
            istore 8 /* currentGeneral */
        start local 8 // int currentGeneral
         6: .line 242
            iconst_0
            istore 9 /* currentXMM */
        start local 9 // int currentXMM
         7: .line 248
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.nativeABI:Z
            ifeq 8
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeParamsStackOffset:I
            goto 9
      StackMap locals: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig jdk.vm.ci.code.CallingConvention$Type jdk.vm.ci.meta.JavaType jdk.vm.ci.meta.JavaType[] jdk.vm.ci.code.ValueKindFactory com.oracle.svm.core.graal.code.SubstrateCallingConventionType int jdk.vm.ci.meta.AllocatableValue[] int int
      StackMap stack:
         8: aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.target:Ljdk/vm/ci/code/TargetDescription;
            getfield jdk.vm.ci.code.TargetDescription.wordSize:I
      StackMap locals:
      StackMap stack: int
         9: istore 10 /* currentStackOffset */
        start local 10 // int currentStackOffset
        10: .line 250
            aload 7 /* locations */
            arraylength
            anewarray jdk.vm.ci.meta.JavaKind
            astore 11 /* kinds */
        start local 11 // jdk.vm.ci.meta.JavaKind[] kinds
        11: .line 251
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        12: goto 39
        13: .line 252
      StackMap locals: int jdk.vm.ci.meta.JavaKind[] int
      StackMap stack:
            iload 6 /* isEntryPoint */
            aload 3 /* parameterTypes */
            iload 12 /* i */
            aaload
            checkcast jdk.vm.ci.meta.ResolvedJavaType
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.target:Ljdk/vm/ci/code/TargetDescription;
            invokestatic com.oracle.svm.core.config.ObjectLayout.getCallSignatureKind:(ZLjdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/code/TargetDescription;)Ljdk/vm/ci/meta/JavaKind;
            astore 13 /* kind */
        start local 13 // jdk.vm.ci.meta.JavaKind kind
        14: .line 253
            aload 11 /* kinds */
            iload 12 /* i */
            aload 13 /* kind */
            aastore
        15: .line 255
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.nativeABI:Z
            ifeq 18
            invokestatic com.oracle.svm.core.OS.getCurrent:()Lcom/oracle/svm/core/OS;
            getstatic com.oracle.svm.core.OS.WINDOWS:Lcom/oracle/svm/core/OS;
            if_acmpne 18
        16: .line 257
            iload 12 /* i */
            istore 8 /* currentGeneral */
        17: .line 258
            iload 12 /* i */
            istore 9 /* currentXMM */
        18: .line 260
      StackMap locals: jdk.vm.ci.meta.JavaKind
      StackMap stack:
            invokestatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:()[I
            aload 13 /* kind */
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iaload
            tableswitch { // 1 - 9
                    1: 19
                    2: 19
                    3: 19
                    4: 19
                    5: 19
                    6: 27
                    7: 19
                    8: 27
                    9: 19
              default: 31
          }
        19: .line 268
      StackMap locals:
      StackMap stack:
            iload 8 /* currentGeneral */
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.nativeABI:Z
            ifeq 20
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
            goto 21
      StackMap locals:
      StackMap stack: int
        20: aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.javaGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
      StackMap locals: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig jdk.vm.ci.code.CallingConvention$Type jdk.vm.ci.meta.JavaType jdk.vm.ci.meta.JavaType[] jdk.vm.ci.code.ValueKindFactory com.oracle.svm.core.graal.code.SubstrateCallingConventionType int jdk.vm.ci.meta.AllocatableValue[] int int int jdk.vm.ci.meta.JavaKind[] int jdk.vm.ci.meta.JavaKind
      StackMap stack: int int
        21: if_icmpge 32
        22: .line 269
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.nativeABI:Z
            ifeq 23
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.nativeGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            iload 8 /* currentGeneral */
            iinc 8 /* currentGeneral */ 1
            invokevirtual jdk.vm.ci.code.RegisterArray.get:(I)Ljdk/vm/ci/code/Register;
            goto 24
      StackMap locals:
      StackMap stack:
        23: aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.javaGeneralParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            iload 8 /* currentGeneral */
            iinc 8 /* currentGeneral */ 1
            invokevirtual jdk.vm.ci.code.RegisterArray.get:(I)Ljdk/vm/ci/code/Register;
      StackMap locals:
      StackMap stack: jdk.vm.ci.code.Register
        24: astore 14 /* register */
        start local 14 // jdk.vm.ci.code.Register register
        25: .line 270
            aload 7 /* locations */
            iload 12 /* i */
            aload 14 /* register */
            aload 4 /* valueKindFactory */
            aload 13 /* kind */
            invokevirtual jdk.vm.ci.meta.JavaKind.getStackKind:()Ljdk/vm/ci/meta/JavaKind;
            invokeinterface jdk.vm.ci.code.ValueKindFactory.getValueKind:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/meta/ValueKind;
            invokevirtual jdk.vm.ci.code.Register.asValue:(Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/code/RegisterValue;
            aastore
        end local 14 // jdk.vm.ci.code.Register register
        26: .line 272
            goto 32
        27: .line 275
      StackMap locals:
      StackMap stack:
            iload 9 /* currentXMM */
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.xmmParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            invokevirtual jdk.vm.ci.code.RegisterArray.size:()I
            if_icmpge 32
        28: .line 276
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.xmmParameterRegs:Ljdk/vm/ci/code/RegisterArray;
            iload 9 /* currentXMM */
            iinc 9 /* currentXMM */ 1
            invokevirtual jdk.vm.ci.code.RegisterArray.get:(I)Ljdk/vm/ci/code/Register;
            astore 14 /* register */
        start local 14 // jdk.vm.ci.code.Register register
        29: .line 277
            aload 7 /* locations */
            iload 12 /* i */
            aload 14 /* register */
            aload 4 /* valueKindFactory */
            aload 13 /* kind */
            invokeinterface jdk.vm.ci.code.ValueKindFactory.getValueKind:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/meta/ValueKind;
            invokevirtual jdk.vm.ci.code.Register.asValue:(Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/code/RegisterValue;
            aastore
        end local 14 // jdk.vm.ci.code.Register register
        30: .line 279
            goto 32
        31: .line 281
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        32: .line 284
      StackMap locals:
      StackMap stack:
            aload 7 /* locations */
            iload 12 /* i */
            aaload
            ifnonnull 38
        33: .line 285
            aload 4 /* valueKindFactory */
            aload 13 /* kind */
            invokevirtual jdk.vm.ci.meta.JavaKind.getStackKind:()Ljdk/vm/ci/meta/JavaKind;
            invokeinterface jdk.vm.ci.code.ValueKindFactory.getValueKind:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/meta/ValueKind;
            astore 14 /* valueKind */
        start local 14 // jdk.vm.ci.meta.ValueKind valueKind
        34: .line 286
            aload 7 /* locations */
            iload 12 /* i */
            aload 14 /* valueKind */
            iload 10 /* currentStackOffset */
            aload 5 /* type */
            getfield com.oracle.svm.core.graal.code.SubstrateCallingConventionType.outgoing:Z
            ifeq 35
            iconst_0
            goto 36
      StackMap locals: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig jdk.vm.ci.code.CallingConvention$Type jdk.vm.ci.meta.JavaType jdk.vm.ci.meta.JavaType[] jdk.vm.ci.code.ValueKindFactory com.oracle.svm.core.graal.code.SubstrateCallingConventionType int jdk.vm.ci.meta.AllocatableValue[] int int int jdk.vm.ci.meta.JavaKind[] int jdk.vm.ci.meta.JavaKind jdk.vm.ci.meta.ValueKind
      StackMap stack: jdk.vm.ci.meta.AllocatableValue[] int jdk.vm.ci.meta.ValueKind int
        35: iconst_1
      StackMap locals: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig jdk.vm.ci.code.CallingConvention$Type jdk.vm.ci.meta.JavaType jdk.vm.ci.meta.JavaType[] jdk.vm.ci.code.ValueKindFactory com.oracle.svm.core.graal.code.SubstrateCallingConventionType int jdk.vm.ci.meta.AllocatableValue[] int int int jdk.vm.ci.meta.JavaKind[] int jdk.vm.ci.meta.JavaKind jdk.vm.ci.meta.ValueKind
      StackMap stack: jdk.vm.ci.meta.AllocatableValue[] int jdk.vm.ci.meta.ValueKind int int
        36: invokestatic jdk.vm.ci.code.StackSlot.get:(Ljdk/vm/ci/meta/ValueKind;IZ)Ljdk/vm/ci/code/StackSlot;
            aastore
        37: .line 287
            iload 10 /* currentStackOffset */
            aload 14 /* valueKind */
            invokevirtual jdk.vm.ci.meta.ValueKind.getPlatformKind:()Ljdk/vm/ci/meta/PlatformKind;
            invokeinterface jdk.vm.ci.meta.PlatformKind.getSizeInBytes:()I
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.target:Ljdk/vm/ci/code/TargetDescription;
            getfield jdk.vm.ci.code.TargetDescription.wordSize:I
            invokestatic java.lang.Math.max:(II)I
            iadd
            istore 10 /* currentStackOffset */
        end local 14 // jdk.vm.ci.meta.ValueKind valueKind
        end local 13 // jdk.vm.ci.meta.JavaKind kind
        38: .line 251
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        39: iload 12 /* i */
            aload 3 /* parameterTypes */
            arraylength
            if_icmplt 13
        end local 12 // int i
        40: .line 291
            aload 2 /* returnType */
            ifnonnull 41
            getstatic jdk.vm.ci.meta.JavaKind.Void:Ljdk/vm/ci/meta/JavaKind;
            goto 42
      StackMap locals:
      StackMap stack:
        41: iload 6 /* isEntryPoint */
            aload 2 /* returnType */
            checkcast jdk.vm.ci.meta.ResolvedJavaType
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.target:Ljdk/vm/ci/code/TargetDescription;
            invokestatic com.oracle.svm.core.config.ObjectLayout.getCallSignatureKind:(ZLjdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/code/TargetDescription;)Ljdk/vm/ci/meta/JavaKind;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.JavaKind
        42: astore 12 /* returnKind */
        start local 12 // jdk.vm.ci.meta.JavaKind returnKind
        43: .line 292
            aload 12 /* returnKind */
            getstatic jdk.vm.ci.meta.JavaKind.Void:Ljdk/vm/ci/meta/JavaKind;
            if_acmpne 44
            getstatic jdk.vm.ci.meta.Value.ILLEGAL:Ljdk/vm/ci/meta/AllocatableValue;
            goto 45
      StackMap locals: jdk.vm.ci.meta.JavaKind
      StackMap stack:
        44: aload 0 /* this */
            aload 12 /* returnKind */
            invokevirtual com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.getReturnRegister:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/code/Register;
            aload 4 /* valueKindFactory */
            aload 12 /* returnKind */
            invokevirtual jdk.vm.ci.meta.JavaKind.getStackKind:()Ljdk/vm/ci/meta/JavaKind;
            invokeinterface jdk.vm.ci.code.ValueKindFactory.getValueKind:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/meta/ValueKind;
            invokevirtual jdk.vm.ci.code.Register.asValue:(Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/code/RegisterValue;
      StackMap locals:
      StackMap stack: jdk.vm.ci.meta.AllocatableValue
        45: astore 13 /* returnLocation */
        start local 13 // jdk.vm.ci.meta.AllocatableValue returnLocation
        46: .line 293
            new com.oracle.svm.core.graal.code.SubstrateCallingConvention
            dup
            aload 5 /* type */
            aload 11 /* kinds */
            iload 10 /* currentStackOffset */
            aload 13 /* returnLocation */
            aload 7 /* locations */
            invokespecial com.oracle.svm.core.graal.code.SubstrateCallingConvention.<init>:(Ljdk/vm/ci/code/CallingConvention$Type;[Ljdk/vm/ci/meta/JavaKind;ILjdk/vm/ci/meta/AllocatableValue;[Ljdk/vm/ci/meta/AllocatableValue;)V
            areturn
        end local 13 // jdk.vm.ci.meta.AllocatableValue returnLocation
        end local 12 // jdk.vm.ci.meta.JavaKind returnKind
        end local 11 // jdk.vm.ci.meta.JavaKind[] kinds
        end local 10 // int currentStackOffset
        end local 9 // int currentXMM
        end local 8 // int currentGeneral
        end local 7 // jdk.vm.ci.meta.AllocatableValue[] locations
        end local 6 // boolean isEntryPoint
        end local 5 // com.oracle.svm.core.graal.code.SubstrateCallingConventionType type
        end local 4 // jdk.vm.ci.code.ValueKindFactory valueKindFactory
        end local 3 // jdk.vm.ci.meta.JavaType[] parameterTypes
        end local 2 // jdk.vm.ci.meta.JavaType returnType
        end local 1 // jdk.vm.ci.code.CallingConvention$Type t
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   47     0                this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;
            0   47     1                   t  Ljdk/vm/ci/code/CallingConvention$Type;
            0   47     2          returnType  Ljdk/vm/ci/meta/JavaType;
            0   47     3      parameterTypes  [Ljdk/vm/ci/meta/JavaType;
            0   47     4    valueKindFactory  Ljdk/vm/ci/code/ValueKindFactory<*>;
            1   47     5                type  Lcom/oracle/svm/core/graal/code/SubstrateCallingConventionType;
            4   47     6        isEntryPoint  Z
            5   47     7           locations  [Ljdk/vm/ci/meta/AllocatableValue;
            6   47     8      currentGeneral  I
            7   47     9          currentXMM  I
           10   47    10  currentStackOffset  I
           11   47    11               kinds  [Ljdk/vm/ci/meta/JavaKind;
           12   40    12                   i  I
           14   38    13                kind  Ljdk/vm/ci/meta/JavaKind;
           25   26    14            register  Ljdk/vm/ci/code/Register;
           29   30    14            register  Ljdk/vm/ci/code/Register;
           34   38    14           valueKind  Ljdk/vm/ci/meta/ValueKind<*>;
           43   47    12          returnKind  Ljdk/vm/ci/meta/JavaKind;
           46   47    13      returnLocation  Ljdk/vm/ci/meta/AllocatableValue;
    Signature: (Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/meta/JavaType;[Ljdk/vm/ci/meta/JavaType;Ljdk/vm/ci/code/ValueKindFactory<*>;)Ljdk/vm/ci/code/CallingConvention;
    MethodParameters:
                  Name  Flags
      t                 
      returnType        
      parameterTypes    
      valueKindFactory  

  public jdk.vm.ci.code.RegisterArray filterAllocatableRegisters(jdk.vm.ci.meta.PlatformKind, jdk.vm.ci.code.RegisterArray);
    descriptor: (Ljdk/vm/ci/meta/PlatformKind;Ljdk/vm/ci/code/RegisterArray;)Ljdk/vm/ci/code/RegisterArray;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
        start local 1 // jdk.vm.ci.meta.PlatformKind kind
        start local 2 // jdk.vm.ci.code.RegisterArray registers
         0: .line 298
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* list */
        start local 3 // java.util.ArrayList list
         1: .line 299
            aload 2 /* registers */
            invokevirtual jdk.vm.ci.code.RegisterArray.iterator:()Ljava/util/Iterator;
            astore 5
            goto 5
      StackMap locals: com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig jdk.vm.ci.meta.PlatformKind jdk.vm.ci.code.RegisterArray java.util.ArrayList top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.vm.ci.code.Register
            astore 4 /* reg */
        start local 4 // jdk.vm.ci.code.Register reg
         3: .line 300
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.target:Ljdk/vm/ci/code/TargetDescription;
            getfield jdk.vm.ci.code.TargetDescription.arch:Ljdk/vm/ci/code/Architecture;
            aload 4 /* reg */
            invokevirtual jdk.vm.ci.code.Register.getRegisterCategory:()Ljdk/vm/ci/code/Register$RegisterCategory;
            aload 1 /* kind */
            invokevirtual jdk.vm.ci.code.Architecture.canStoreValue:(Ljdk/vm/ci/code/Register$RegisterCategory;Ljdk/vm/ci/meta/PlatformKind;)Z
            ifeq 5
         4: .line 301
            aload 3 /* list */
            aload 4 /* reg */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // jdk.vm.ci.code.Register reg
         5: .line 299
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 305
            new jdk.vm.ci.code.RegisterArray
            dup
            aload 3 /* list */
            invokespecial jdk.vm.ci.code.RegisterArray.<init>:(Ljava/util/Collection;)V
            areturn
        end local 3 // java.util.ArrayList list
        end local 2 // jdk.vm.ci.code.RegisterArray registers
        end local 1 // jdk.vm.ci.meta.PlatformKind kind
        end local 0 // com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/oracle/svm/core/graal/amd64/SubstrateAMD64RegisterConfig;
            0    7     1       kind  Ljdk/vm/ci/meta/PlatformKind;
            0    7     2  registers  Ljdk/vm/ci/code/RegisterArray;
            1    7     3       list  Ljava/util/ArrayList<Ljdk/vm/ci/code/Register;>;
            3    5     4        reg  Ljdk/vm/ci/code/Register;
    MethodParameters:
           Name  Flags
      kind       
      registers  

  static int[] $SWITCH_TABLE$com$oracle$svm$core$graal$meta$SubstrateRegisterConfig$ConfigKind();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 86
            getstatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$SWITCH_TABLE$com$oracle$svm$core$graal$meta$SubstrateRegisterConfig$ConfigKind:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind.values:()[Lcom/oracle/svm/core/graal/meta/SubstrateRegisterConfig$ConfigKind;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind.NATIVE_TO_JAVA:Lcom/oracle/svm/core/graal/meta/SubstrateRegisterConfig$ConfigKind;
            invokevirtual com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind.NORMAL:Lcom/oracle/svm/core/graal/meta/SubstrateRegisterConfig$ConfigKind;
            invokevirtual com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            dup
            putstatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$SWITCH_TABLE$com$oracle$svm$core$graal$meta$SubstrateRegisterConfig$ConfigKind:[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

  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 86
            getstatic com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$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 com.oracle.svm.core.graal.amd64.SubstrateAMD64RegisterConfig.$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: "SubstrateAMD64RegisterConfig.java"
InnerClasses:
  public final ConfigKind = com.oracle.svm.core.graal.meta.SubstrateRegisterConfig$ConfigKind of com.oracle.svm.core.graal.meta.SubstrateRegisterConfig
  public abstract Type = jdk.vm.ci.code.CallingConvention$Type of jdk.vm.ci.code.CallingConvention
  public RegisterCategory = jdk.vm.ci.code.Register$RegisterCategory of jdk.vm.ci.code.Register