class jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator extends jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator
super_class: jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator
{
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$jdk$internal$foreign$abi$aarch64$TypeClass;
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: 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$UnboxBindingCalculator.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(boolean);
descriptor: (Z)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
invokespecial jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator.<init>:(Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/internal/foreign/abi/aarch64/CallArranger$UnboxBindingCalculator;
0 2 1 forArguments Z
MethodParameters:
Name Flags
forArguments
java.util.List<jdk.internal.foreign.abi.Binding> getIndirectBindings();
descriptor: ()Ljava/util/List;
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: invokestatic jdk.internal.foreign.abi.Binding.builder:()Ljdk/internal/foreign/abi/Binding$Builder;
1: invokevirtual jdk.internal.foreign.abi.Binding$Builder.unboxAddress:()Ljdk/internal/foreign/abi/Binding$Builder;
2: getstatic jdk.internal.foreign.abi.aarch64.CallArranger.INDIRECT_RESULT:Ljdk/internal/foreign/abi/VMStorage;
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
3: invokevirtual jdk.internal.foreign.abi.Binding$Builder.build:()Ljava/util/List;
4: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljdk/internal/foreign/abi/aarch64/CallArranger$UnboxBindingCalculator;
Signature: ()Ljava/util/List<Ljdk/internal/foreign/abi/Binding;>;
java.util.List<jdk.internal.foreign.abi.Binding> getBindings(java.lang.Class<?>, jdk.incubator.foreign.MemoryLayout);
descriptor: (Ljava/lang/Class;Ljdk/incubator/foreign/MemoryLayout;)Ljava/util/List;
flags: (0x0000)
Code:
stack=5, locals=14, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic jdk.internal.foreign.abi.aarch64.TypeClass.classifyLayout:(Ljdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/aarch64/TypeClass;
astore 3
start local 3 1: invokestatic jdk.internal.foreign.abi.Binding.builder:()Ljdk/internal/foreign/abi/Binding$Builder;
astore 4
start local 4 2: invokestatic jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.$SWITCH_TABLE$jdk$internal$foreign$abi$aarch64$TypeClass:()[I
aload 3
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.ordinal:()I
iaload
tableswitch { // 1 - 6
1: 3
2: 23
3: 32
4: 54
5: 59
6: 63
default: 67
}
3: StackMap locals: jdk.internal.foreign.abi.aarch64.TypeClass jdk.internal.foreign.abi.Binding$Builder
StackMap stack:
getstatic jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.$assertionsDisabled:Z
ifne 4
aload 1
ldc Ljdk/incubator/foreign/MemorySegment;
if_acmpeq 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.storageCalculator:Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
5: iconst_0
aload 2
6: invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.regAlloc:(ILjdk/incubator/foreign/MemoryLayout;)[Ljdk/internal/foreign/abi/VMStorage;
astore 5
start local 5 7: aload 5
ifnull 21
8: iconst_0
istore 6
start local 6 9: lconst_0
lstore 7
start local 7 10: goto 19
11: StackMap locals: jdk.internal.foreign.abi.VMStorage[] int long
StackMap stack:
aload 2
invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
lload 7
lsub
ldc 8
invokestatic java.lang.Math.min:(JJ)J
lstore 9
start local 9 12: aload 5
iload 6
iinc 6 1
aaload
astore 11
start local 11 13: lload 9
invokestatic jdk.internal.foreign.abi.SharedUtils.primitiveCarrierForSize:(J)Ljava/lang/Class;
astore 12
start local 12 14: lload 7
lload 9
ladd
aload 2
invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
lcmp
ifge 16
15: aload 4
invokevirtual jdk.internal.foreign.abi.Binding$Builder.dup:()Ljdk/internal/foreign/abi/Binding$Builder;
pop
16: StackMap locals: long jdk.internal.foreign.abi.VMStorage java.lang.Class
StackMap stack:
aload 4
lload 7
aload 12
invokevirtual jdk.internal.foreign.abi.Binding$Builder.bufferLoad:(JLjava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
17: aload 11
aload 12
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
pop
18: lload 7
lload 9
ladd
lstore 7
end local 12 end local 11 end local 9 19: StackMap locals:
StackMap stack:
lload 7
aload 2
invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
lcmp
iflt 11
end local 7 end local 6 20: goto 68
21: StackMap locals:
StackMap stack:
aload 0
aload 4
aload 2
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.spillStructUnbox:(Ljdk/internal/foreign/abi/Binding$Builder;Ljdk/incubator/foreign/MemoryLayout;)V
22: goto 68
end local 5 23: StackMap locals:
StackMap stack:
getstatic jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.$assertionsDisabled:Z
ifne 24
aload 1
ldc Ljdk/incubator/foreign/MemorySegment;
if_acmpeq 24
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
24: StackMap locals:
StackMap stack:
aload 4
aload 2
invokevirtual jdk.internal.foreign.abi.Binding$Builder.copy:(Ljdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/Binding$Builder;
25: invokevirtual jdk.internal.foreign.abi.Binding$Builder.baseAddress:()Ljdk/internal/foreign/abi/Binding$Builder;
26: invokevirtual jdk.internal.foreign.abi.Binding$Builder.unboxAddress:()Ljdk/internal/foreign/abi/Binding$Builder;
pop
27: aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.storageCalculator:Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
28: iconst_0
getstatic jdk.internal.foreign.PlatformLayouts$AArch64.C_POINTER:Ljdk/incubator/foreign/ValueLayout;
29: invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nextStorage:(ILjdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
astore 5
start local 5 30: aload 4
aload 5
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
pop
31: goto 68
end local 5 32: StackMap locals:
StackMap stack:
getstatic jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.$assertionsDisabled:Z
ifne 33
aload 1
ldc Ljdk/incubator/foreign/MemorySegment;
if_acmpeq 33
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
33: StackMap locals:
StackMap stack:
aload 2
checkcast jdk.incubator.foreign.GroupLayout
astore 5
start local 5 34: aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.storageCalculator:Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
35: iconst_1
aload 5
invokevirtual jdk.incubator.foreign.GroupLayout.memberLayouts:()Ljava/util/List;
invokeinterface java.util.List.size:()I
36: invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.regAlloc:(II)[Ljdk/internal/foreign/abi/VMStorage;
astore 6
start local 6 37: aload 6
ifnull 52
38: lconst_0
lstore 7
start local 7 39: iconst_0
istore 9
start local 9 40: goto 50
41: StackMap locals: jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator java.lang.Class jdk.incubator.foreign.MemoryLayout jdk.internal.foreign.abi.aarch64.TypeClass jdk.internal.foreign.abi.Binding$Builder jdk.incubator.foreign.GroupLayout jdk.internal.foreign.abi.VMStorage[] long int
StackMap stack:
aload 6
iload 9
aaload
astore 10
start local 10 42: aload 5
invokevirtual jdk.incubator.foreign.GroupLayout.memberLayouts:()Ljava/util/List;
iload 9
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.incubator.foreign.MemoryLayout
invokeinterface jdk.incubator.foreign.MemoryLayout.byteSize:()J
lstore 11
start local 11 43: lload 11
invokestatic jdk.internal.foreign.abi.SharedUtils.primitiveCarrierForSize:(J)Ljava/lang/Class;
astore 13
start local 13 44: iload 9
iconst_1
iadd
aload 5
invokevirtual jdk.incubator.foreign.GroupLayout.memberLayouts:()Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmpge 46
45: aload 4
invokevirtual jdk.internal.foreign.abi.Binding$Builder.dup:()Ljdk/internal/foreign/abi/Binding$Builder;
pop
46: StackMap locals: jdk.internal.foreign.abi.VMStorage long java.lang.Class
StackMap stack:
aload 4
lload 7
aload 13
invokevirtual jdk.internal.foreign.abi.Binding$Builder.bufferLoad:(JLjava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
47: aload 10
aload 13
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
pop
48: lload 7
lload 11
ladd
lstore 7
end local 13 end local 11 end local 10 49: iinc 9 1
StackMap locals:
StackMap stack:
50: iload 9
aload 5
invokevirtual jdk.incubator.foreign.GroupLayout.memberLayouts:()Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 41
end local 9 end local 7 51: goto 68
52: StackMap locals:
StackMap stack:
aload 0
aload 4
aload 2
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.spillStructUnbox:(Ljdk/internal/foreign/abi/Binding$Builder;Ljdk/incubator/foreign/MemoryLayout;)V
53: goto 68
end local 6 end local 5 54: StackMap locals:
StackMap stack:
aload 4
invokevirtual jdk.internal.foreign.abi.Binding$Builder.unboxAddress:()Ljdk/internal/foreign/abi/Binding$Builder;
pop
55: aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.storageCalculator:Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
iconst_0
aload 2
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nextStorage:(ILjdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
56: astore 5
start local 5 57: aload 4
aload 5
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
pop
58: goto 68
end local 5 59: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.storageCalculator:Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
iconst_0
aload 2
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nextStorage:(ILjdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
60: astore 5
start local 5 61: aload 4
aload 5
aload 1
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
pop
62: goto 68
end local 5 63: StackMap locals:
StackMap stack:
aload 0
getfield jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.storageCalculator:Ljdk/internal/foreign/abi/aarch64/CallArranger$StorageCalculator;
iconst_1
aload 2
invokevirtual jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator.nextStorage:(ILjdk/incubator/foreign/MemoryLayout;)Ljdk/internal/foreign/abi/VMStorage;
64: astore 5
start local 5 65: aload 4
aload 5
aload 1
invokevirtual jdk.internal.foreign.abi.Binding$Builder.vmStore:(Ljdk/internal/foreign/abi/VMStorage;Ljava/lang/Class;)Ljdk/internal/foreign/abi/Binding$Builder;
pop
66: goto 68
end local 5 67: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
new java.lang.StringBuilder
dup
ldc "Unhandled class "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
68: StackMap locals:
StackMap stack:
aload 4
invokevirtual jdk.internal.foreign.abi.Binding$Builder.build:()Ljava/util/List;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 69 0 this Ljdk/internal/foreign/abi/aarch64/CallArranger$UnboxBindingCalculator;
0 69 1 carrier Ljava/lang/Class<*>;
0 69 2 layout Ljdk/incubator/foreign/MemoryLayout;
1 69 3 argumentClass Ljdk/internal/foreign/abi/aarch64/TypeClass;
2 69 4 bindings Ljdk/internal/foreign/abi/Binding$Builder;
7 23 5 regs [Ljdk/internal/foreign/abi/VMStorage;
9 20 6 regIndex I
10 20 7 offset J
12 19 9 copy J
13 19 11 storage Ljdk/internal/foreign/abi/VMStorage;
14 19 12 type Ljava/lang/Class<*>;
30 32 5 storage Ljdk/internal/foreign/abi/VMStorage;
34 54 5 group Ljdk/incubator/foreign/GroupLayout;
37 54 6 regs [Ljdk/internal/foreign/abi/VMStorage;
39 51 7 offset J
40 51 9 i I
42 49 10 storage Ljdk/internal/foreign/abi/VMStorage;
43 49 11 size J
44 49 13 type Ljava/lang/Class<*>;
57 59 5 storage Ljdk/internal/foreign/abi/VMStorage;
61 63 5 storage Ljdk/internal/foreign/abi/VMStorage;
65 67 5 storage Ljdk/internal/foreign/abi/VMStorage;
Signature: (Ljava/lang/Class<*>;Ljdk/incubator/foreign/MemoryLayout;)Ljava/util/List<Ljdk/internal/foreign/abi/Binding;>;
MethodParameters:
Name Flags
carrier
layout
static int[] $SWITCH_TABLE$jdk$internal$foreign$abi$aarch64$TypeClass();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.$SWITCH_TABLE$jdk$internal$foreign$abi$aarch64$TypeClass:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic jdk.internal.foreign.abi.aarch64.TypeClass.values:()[Ljdk/internal/foreign/abi/aarch64/TypeClass;
arraylength
newarray 10
astore 0
2: aload 0
getstatic jdk.internal.foreign.abi.aarch64.TypeClass.FLOAT:Ljdk/internal/foreign/abi/aarch64/TypeClass;
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.ordinal:()I
bipush 6
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic jdk.internal.foreign.abi.aarch64.TypeClass.INTEGER:Ljdk/internal/foreign/abi/aarch64/TypeClass;
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.ordinal:()I
iconst_5
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic jdk.internal.foreign.abi.aarch64.TypeClass.POINTER:Ljdk/internal/foreign/abi/aarch64/TypeClass;
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.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.internal.foreign.abi.aarch64.TypeClass.STRUCT_HFA:Ljdk/internal/foreign/abi/aarch64/TypeClass;
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.ordinal:()I
iconst_3
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic jdk.internal.foreign.abi.aarch64.TypeClass.STRUCT_REFERENCE:Ljdk/internal/foreign/abi/aarch64/TypeClass;
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.ordinal:()I
iconst_2
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic jdk.internal.foreign.abi.aarch64.TypeClass.STRUCT_REGISTER:Ljdk/internal/foreign/abi/aarch64/TypeClass;
invokevirtual jdk.internal.foreign.abi.aarch64.TypeClass.ordinal:()I
iconst_1
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
dup
putstatic jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator.$SWITCH_TABLE$jdk$internal$foreign$abi$aarch64$TypeClass:[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
}
SourceFile: "CallArranger.java"
NestHost: jdk.internal.foreign.abi.aarch64.CallArranger
InnerClasses:
public final AArch64 = jdk.internal.foreign.PlatformLayouts$AArch64 of jdk.internal.foreign.PlatformLayouts
public Builder = jdk.internal.foreign.abi.Binding$Builder of jdk.internal.foreign.abi.Binding
abstract BindingCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$BindingCalculator of jdk.internal.foreign.abi.aarch64.CallArranger
StorageCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$StorageCalculator of jdk.internal.foreign.abi.aarch64.CallArranger
UnboxBindingCalculator = jdk.internal.foreign.abi.aarch64.CallArranger$UnboxBindingCalculator of jdk.internal.foreign.abi.aarch64.CallArranger