class jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator
  super_class: java.lang.Object
{
  private final boolean forArguments;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int[] nRegs;
    descriptor: [I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long stackOffset;
    descriptor: J
    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 158
            ldc Ljdk/internal/foreign/abi/aarch64/CallArranger;
            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 jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
        start local 1 // boolean forArguments
         0: .line 164
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 161
            aload 0 /* this */
            iconst_2
            newarray 10
            putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
         2: .line 162
            aload 0 /* this */
            lconst_0
            putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
         3: .line 165
            aload 0 /* this */
            iload 1 /* forArguments */
            putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.forArguments:Z
         4: .line 166
            return
        end local 1 // boolean forArguments
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
            0    5     1  forArguments  Z
    MethodParameters:
              Name  Flags
      forArguments  

  jdk.internal.foreign.abi.VMStorage stackAlloc(long, long);
    descriptor: (JJ)Ljdk/internal/foreign/abi/VMStorage;
    flags: (0x0000) 
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
        start local 1 // long size
        start local 3 // long alignment
         0: .line 169
            getstatic jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.forArguments:Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "no stack returns"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 170
      StackMap locals:
      StackMap stack:
            lload 3 /* alignment */
            ldc 8
            invokestatic java.lang.Math.max:(JJ)J
            lstore 3 /* alignment */
         2: .line 171
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
            lload 3 /* alignment */
            invokestatic jdk.internal.foreign.Utils.alignUp:(JJ)J
            putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
         3: .line 174
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
            ldc 8
            ldiv
            l2i
            invokestatic jdk.internal.foreign.abi.aarch64.AArch64Architecture.stackStorage:(I)Ljdk/internal/foreign/abi/VMStorage;
         4: .line 173
            astore 5 /* storage */
        start local 5 // jdk.internal.foreign.abi.VMStorage storage
         5: .line 175
            aload 0 /* this */
            dup
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
            lload 1 /* size */
            ladd
            putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
         6: .line 176
            aload 5 /* storage */
            areturn
        end local 5 // jdk.internal.foreign.abi.VMStorage storage
        end local 3 // long alignment
        end local 1 // long size
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
            0    7     1       size  J
            0    7     3  alignment  J
            5    7     5    storage  Ljdk/internal/foreign/abi/VMStorage;
    MethodParameters:
           Name  Flags
      size       
      alignment  

  jdk.internal.foreign.abi.VMStorage stackAlloc(jdk.incubator.foreign.MemoryLayout);
    descriptor: (Ljdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
        start local 1 // jdk.incubator.foreign.MemoryLayout layout
         0: .line 180
            aload 0 /* this */
            aload 1 /* layout */
            invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
            aload 1 /* layout */
            iconst_1
            invokestatic jdk.internal.foreign.abi.SharedUtils.alignment:(Ljdk/incubator/foreign/MemoryLayout;Z)J
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackAlloc:(JJ)Ljdk/internal/foreign/abi/VMStorage;
            areturn
        end local 1 // jdk.incubator.foreign.MemoryLayout layout
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
            0    1     1  layout  Ljdk/incubator/foreign/MemoryLayout;
    MethodParameters:
        Name  Flags
      layout  

  jdk.internal.foreign.abi.VMStorage[] regAlloc(int, int);
    descriptor: (II)[Ljdk/internal/foreign/abi/VMStorage;
    flags: (0x0000) 
    Code:
      stack=8, locals=6, args_size=3
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
        start local 1 // int type
        start local 2 // int count
         0: .line 184
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
            iload 1 /* type */
            iaload
            iload 2 /* count */
            iadd
            bipush 8
            if_icmpgt 12
         1: .line 186
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.forArguments:Z
            ifeq 2
            getstatic jdk.internal.foreign.abi.aarch64.CallArranger.C:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.inputStorage:[[Ljdk/internal/foreign/abi/VMStorage;
            goto 3
      StackMap locals:
      StackMap stack:
         2: getstatic jdk.internal.foreign.abi.aarch64.CallArranger.C:Ljdk/internal/foreign/abi/ABIDescriptor;
            getfield jdk.internal.foreign.abi.ABIDescriptor.outputStorage:[[Ljdk/internal/foreign/abi/VMStorage;
      StackMap locals:
      StackMap stack: jdk.internal.foreign.abi.VMStorage[][]
         3: iload 1 /* type */
            aaload
         4: .line 185
            astore 3 /* source */
        start local 3 // jdk.internal.foreign.abi.VMStorage[] source
         5: .line 187
            iload 2 /* count */
            anewarray jdk.internal.foreign.abi.VMStorage
            astore 4 /* result */
        start local 4 // jdk.internal.foreign.abi.VMStorage[] result
         6: .line 188
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         7: goto 10
         8: .line 189
      StackMap locals: jdk.internal.foreign.abi.VMStorage[] jdk.internal.foreign.abi.VMStorage[] int
      StackMap stack:
            aload 4 /* result */
            iload 5 /* i */
            aload 3 /* source */
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
            iload 1 /* type */
            dup2
            iaload
            dup_x2
            iconst_1
            iadd
            iastore
            aaload
            aastore
         9: .line 188
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            iload 2 /* count */
            if_icmplt 8
        end local 5 // int i
        11: .line 191
            aload 4 /* result */
            areturn
        end local 4 // jdk.internal.foreign.abi.VMStorage[] result
        end local 3 // jdk.internal.foreign.abi.VMStorage[] source
        12: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
            iload 1 /* type */
            bipush 8
            iastore
        13: .line 196
            aconst_null
            areturn
        end local 2 // int count
        end local 1 // int type
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
            0   14     1    type  I
            0   14     2   count  I
            5   12     3  source  [Ljdk/internal/foreign/abi/VMStorage;
            6   12     4  result  [Ljdk/internal/foreign/abi/VMStorage;
            7   11     5       i  I
    MethodParameters:
       Name  Flags
      type   
      count  

  jdk.internal.foreign.abi.VMStorage[] regAlloc(int, jdk.incubator.foreign.MemoryLayout);
    descriptor: (ILjdk/incubator/foreign/MemoryLayout;)[Ljdk/internal/foreign/abi/VMStorage;
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
        start local 1 // int type
        start local 2 // jdk.incubator.foreign.MemoryLayout layout
         0: .line 201
            aload 0 /* this */
            iload 1 /* type */
            aload 2 /* layout */
            invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
            ldc 8
            invokestatic jdk.internal.foreign.Utils.alignUp:(JJ)J
            l2i
            bipush 8
            idiv
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.regAlloc:(II)[Ljdk/internal/foreign/abi/VMStorage;
            areturn
        end local 2 // jdk.incubator.foreign.MemoryLayout layout
        end local 1 // int type
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
            0    1     1    type  I
            0    1     2  layout  Ljdk/incubator/foreign/MemoryLayout;
    MethodParameters:
        Name  Flags
      type    
      layout  

  jdk.internal.foreign.abi.VMStorage nextStorage(int, jdk.incubator.foreign.MemoryLayout);
    descriptor: (ILjdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
        start local 1 // int type
        start local 2 // jdk.incubator.foreign.MemoryLayout layout
         0: .line 205
            aload 0 /* this */
            iload 1 /* type */
            iconst_1
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.regAlloc:(II)[Ljdk/internal/foreign/abi/VMStorage;
            astore 3 /* storage */
        start local 3 // jdk.internal.foreign.abi.VMStorage[] storage
         1: .line 206
            aload 3 /* storage */
            ifnonnull 3
         2: .line 207
            aload 0 /* this */
            aload 2 /* layout */
            invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackAlloc:(Ljdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
            areturn
         3: .line 210
      StackMap locals: jdk.internal.foreign.abi.VMStorage[]
      StackMap stack:
            aload 3 /* storage */
            iconst_0
            aaload
            areturn
        end local 3 // jdk.internal.foreign.abi.VMStorage[] storage
        end local 2 // jdk.incubator.foreign.MemoryLayout layout
        end local 1 // int type
        end local 0 // jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
            0    4     1     type  I
            0    4     2   layout  Ljdk/incubator/foreign/MemoryLayout;
            1    4     3  storage  [Ljdk/internal/foreign/abi/VMStorage;
    MethodParameters:
        Name  Flags
      type    
      layout  
}
SourceFile: "CallArranger.java"
NestHost: jdk.internal.foreign.abi.aarch64.CallArranger
InnerClasses:
  StorageCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator of jdk.internal.foreign.abi.aarch64.CallArranger