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: 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 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_2
newarray 10
putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
2: aload 0
lconst_0
putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
3: aload 0
iload 1
putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.forArguments:Z
4: return
end local 1 end local 0 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 start local 1 start local 3 0: getstatic jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.$assertionsDisabled:Z
ifne 1
aload 0
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: StackMap locals:
StackMap stack:
lload 3
ldc 8
invokestatic java.lang.Math.max:(JJ)J
lstore 3
2: aload 0
aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
lload 3
invokestatic jdk.internal.foreign.Utils.alignUp:(JJ)J
putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
3: aload 0
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: astore 5
start local 5 5: aload 0
dup
getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
lload 1
ladd
putfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackOffset:J
6: aload 5
areturn
end local 5 end local 3 end local 1 end local 0 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 start local 1 0: aload 0
aload 1
invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
aload 1
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 end local 0 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 start local 1 start local 2 0: aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
iload 1
iaload
iload 2
iadd
bipush 8
if_icmpgt 12
1: aload 0
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
aaload
4: astore 3
start local 3 5: iload 2
anewarray jdk.internal.foreign.abi.VMStorage
astore 4
start local 4 6: iconst_0
istore 5
start local 5 7: goto 10
8: StackMap locals: jdk.internal.foreign.abi.VMStorage[] jdk.internal.foreign.abi.VMStorage[] int
StackMap stack:
aload 4
iload 5
aload 3
aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
iload 1
dup2
iaload
dup_x2
iconst_1
iadd
iastore
aaload
aastore
9: iinc 5 1
StackMap locals:
StackMap stack:
10: iload 5
iload 2
if_icmplt 8
end local 5 11: aload 4
areturn
end local 4 end local 3 12: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nRegs:[I
iload 1
bipush 8
iastore
13: aconst_null
areturn
end local 2 end local 1 end local 0 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 start local 1 start local 2 0: aload 0
iload 1
aload 2
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 end local 1 end local 0 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 start local 1 start local 2 0: aload 0
iload 1
iconst_1
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.regAlloc:(II)[Ljdk/internal/foreign/abi/VMStorage;
astore 3
start local 3 1: aload 3
ifnonnull 3
2: aload 0
aload 2
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.stackAlloc:(Ljdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
areturn
3: StackMap locals: jdk.internal.foreign.abi.VMStorage[]
StackMap stack:
aload 3
iconst_0
aaload
areturn
end local 3 end local 2 end local 1 end local 0 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