final class java.lang.invoke.MethodTypeForm
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: java.lang.invoke.MethodTypeForm
super_class: java.lang.Object
{
final int[] argToSlotTable;
descriptor: [I
flags: (0x0010) ACC_FINAL
final int[] slotToArgTable;
descriptor: [I
flags: (0x0010) ACC_FINAL
final long argCounts;
descriptor: J
flags: (0x0010) ACC_FINAL
final long primCounts;
descriptor: J
flags: (0x0010) ACC_FINAL
final java.lang.invoke.MethodType erasedType;
descriptor: Ljava/lang/invoke/MethodType;
flags: (0x0010) ACC_FINAL
final java.lang.invoke.MethodType basicType;
descriptor: Ljava/lang/invoke/MethodType;
flags: (0x0010) ACC_FINAL
final java.lang.ref.SoftReference<java.lang.invoke.MethodHandle>[] methodHandles;
descriptor: [Ljava/lang/ref/SoftReference;
flags: (0x0010) ACC_FINAL
Signature: [Ljava/lang/ref/SoftReference<Ljava/lang/invoke/MethodHandle;>;
RuntimeVisibleAnnotations:
jdk.internal.vm.annotation.Stable()
static final int MH_BASIC_INV;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 0
static final int MH_NF_INV;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 1
static final int MH_UNINIT_CS;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 2
static final int MH_LIMIT;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 3
final java.lang.ref.SoftReference<java.lang.invoke.LambdaForm>[] lambdaForms;
descriptor: [Ljava/lang/ref/SoftReference;
flags: (0x0010) ACC_FINAL
Signature: [Ljava/lang/ref/SoftReference<Ljava/lang/invoke/LambdaForm;>;
RuntimeVisibleAnnotations:
jdk.internal.vm.annotation.Stable()
static final int LF_INVVIRTUAL;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 0
static final int LF_INVSTATIC;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 1
static final int LF_INVSPECIAL;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 2
static final int LF_NEWINVSPECIAL;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 3
static final int LF_INVINTERFACE;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 4
static final int LF_INVSTATIC_INIT;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 5
static final int LF_INTERPRET;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 6
static final int LF_REBIND;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 7
static final int LF_DELEGATE;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 8
static final int LF_DELEGATE_BLOCK_INLINING;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 9
static final int LF_EX_LINKER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 10
static final int LF_EX_INVOKER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 11
static final int LF_GEN_LINKER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 12
static final int LF_GEN_INVOKER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 13
static final int LF_CS_LINKER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 14
static final int LF_MH_LINKER;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 15
static final int LF_GWC;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 16
static final int LF_GWT;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 17
static final int LF_TF;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 18
static final int LF_LOOP;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 19
static final int LF_INVSPECIAL_IFC;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 20
static final int LF_LIMIT;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 21
public static final int NO_CHANGE;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 0
public static final int ERASE;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1
public static final int WRAP;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 2
public static final int UNWRAP;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 3
public static final int INTS;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 4
public static final int LONGS;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 5
public static final int RAW_RETURN;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 6
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 Ljava/lang/invoke/MethodTypeForm;
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 java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
public java.lang.invoke.MethodType erasedType();
descriptor: ()Ljava/lang/invoke/MethodType;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.erasedType:Ljava/lang/invoke/MethodType;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public java.lang.invoke.MethodType basicType();
descriptor: ()Ljava/lang/invoke/MethodType;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
private boolean assertIsBasicType();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=1, args_size=1
start local 0 0: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 2
aload 0
getfield java.lang.invoke.MethodTypeForm.erasedType:Ljava/lang/invoke/MethodType;
aload 0
getfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
if_acmpeq 2
new java.lang.AssertionError
dup
1: new java.lang.StringBuilder
dup
ldc "erasedType: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield java.lang.invoke.MethodTypeForm.erasedType:Ljava/lang/invoke/MethodType;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " != basicType: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/invoke/MethodTypeForm;
public java.lang.invoke.MethodHandle cachedMethodHandle(int);
descriptor: (I)Ljava/lang/invoke/MethodHandle;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual java.lang.invoke.MethodTypeForm.assertIsBasicType:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.invoke.MethodTypeForm.methodHandles:[Ljava/lang/ref/SoftReference;
iload 1
aaload
astore 2
start local 2 2: aload 2
ifnull 3
aload 2
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.lang.invoke.MethodHandle
goto 4
StackMap locals: java.lang.ref.SoftReference
StackMap stack:
3: aconst_null
StackMap locals:
StackMap stack: java.lang.invoke.MethodHandle
4: areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/lang/invoke/MethodTypeForm;
0 5 1 which I
2 5 2 entry Ljava/lang/ref/SoftReference<Ljava/lang/invoke/MethodHandle;>;
MethodParameters:
Name Flags
which
public synchronized java.lang.invoke.MethodHandle setCachedMethodHandle(int, java.lang.invoke.MethodHandle);
descriptor: (ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield java.lang.invoke.MethodTypeForm.methodHandles:[Ljava/lang/ref/SoftReference;
iload 1
aaload
astore 3
start local 3 1: aload 3
ifnull 5
2: aload 3
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.lang.invoke.MethodHandle
astore 4
start local 4 3: aload 4
ifnull 5
4: aload 4
areturn
end local 4 5: StackMap locals: java.lang.ref.SoftReference
StackMap stack:
aload 0
getfield java.lang.invoke.MethodTypeForm.methodHandles:[Ljava/lang/ref/SoftReference;
iload 1
new java.lang.ref.SoftReference
dup
aload 2
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
aastore
6: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/lang/invoke/MethodTypeForm;
0 7 1 which I
0 7 2 mh Ljava/lang/invoke/MethodHandle;
1 7 3 entry Ljava/lang/ref/SoftReference<Ljava/lang/invoke/MethodHandle;>;
3 5 4 prev Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
which
mh
public java.lang.invoke.LambdaForm cachedLambdaForm(int);
descriptor: (I)Ljava/lang/invoke/LambdaForm;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual java.lang.invoke.MethodTypeForm.assertIsBasicType:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.invoke.MethodTypeForm.lambdaForms:[Ljava/lang/ref/SoftReference;
iload 1
aaload
astore 2
start local 2 2: aload 2
ifnull 3
aload 2
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.lang.invoke.LambdaForm
goto 4
StackMap locals: java.lang.ref.SoftReference
StackMap stack:
3: aconst_null
StackMap locals:
StackMap stack: java.lang.invoke.LambdaForm
4: areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/lang/invoke/MethodTypeForm;
0 5 1 which I
2 5 2 entry Ljava/lang/ref/SoftReference<Ljava/lang/invoke/LambdaForm;>;
MethodParameters:
Name Flags
which
public synchronized java.lang.invoke.LambdaForm setCachedLambdaForm(int, java.lang.invoke.LambdaForm);
descriptor: (ILjava/lang/invoke/LambdaForm;)Ljava/lang/invoke/LambdaForm;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield java.lang.invoke.MethodTypeForm.lambdaForms:[Ljava/lang/ref/SoftReference;
iload 1
aaload
astore 3
start local 3 1: aload 3
ifnull 5
2: aload 3
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.lang.invoke.LambdaForm
astore 4
start local 4 3: aload 4
ifnull 5
4: aload 4
areturn
end local 4 5: StackMap locals: java.lang.ref.SoftReference
StackMap stack:
aload 0
getfield java.lang.invoke.MethodTypeForm.lambdaForms:[Ljava/lang/ref/SoftReference;
iload 1
new java.lang.ref.SoftReference
dup
aload 2
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
aastore
6: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/lang/invoke/MethodTypeForm;
0 7 1 which I
0 7 2 form Ljava/lang/invoke/LambdaForm;
1 7 3 entry Ljava/lang/ref/SoftReference<Ljava/lang/invoke/LambdaForm;>;
3 5 4 prev Ljava/lang/invoke/LambdaForm;
MethodParameters:
Name Flags
which
form
protected void <init>(java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodType;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=21, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield java.lang.invoke.MethodTypeForm.erasedType:Ljava/lang/invoke/MethodType;
2: aload 1
invokevirtual java.lang.invoke.MethodType.ptypes:()[Ljava/lang/Class;
astore 2
start local 2 3: aload 2
arraylength
istore 3
start local 3 4: iload 3
istore 4
start local 4 5: iconst_1
istore 5
start local 5 6: iconst_1
istore 6
start local 6 7: aconst_null
astore 7
start local 7 8: aconst_null
astore 8
start local 8 9: iconst_0
istore 9
start local 9 10: iconst_0
istore 10
start local 10 11: iconst_0
istore 11
start local 11 12: iconst_0
istore 12
start local 12 13: aload 2
astore 13
start local 13 14: aload 13
astore 14
start local 14 15: iconst_0
istore 15
start local 15 16: goto 27
17: StackMap locals: java.lang.invoke.MethodTypeForm java.lang.invoke.MethodType java.lang.Class[] int int int int int[] int[] int int int int java.lang.Class[] java.lang.Class[] int
StackMap stack:
aload 13
iload 15
aaload
astore 16
start local 16 18: aload 16
ldc Ljava/lang/Object;
if_acmpeq 26
19: iinc 9 1
20: aload 16
invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
astore 17
start local 17 21: aload 17
invokevirtual sun.invoke.util.Wrapper.isDoubleWord:()Z
ifeq 22
iinc 10 1
22: StackMap locals: java.lang.Class sun.invoke.util.Wrapper
StackMap stack:
aload 17
invokevirtual sun.invoke.util.Wrapper.isSubwordOrInt:()Z
ifeq 26
aload 16
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
if_acmpeq 26
23: aload 14
aload 13
if_acmpne 25
24: aload 14
invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
checkcast java.lang.Class[]
astore 14
25: StackMap locals:
StackMap stack:
aload 14
iload 15
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
aastore
end local 17 end local 16 26: StackMap locals:
StackMap stack:
iinc 15 1
StackMap locals:
StackMap stack:
27: iload 15
aload 13
arraylength
if_icmplt 17
end local 15 28: iload 4
iload 10
iadd
istore 4
29: aload 1
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
astore 15
start local 15 30: aload 15
astore 16
start local 16 31: aload 15
ldc Ljava/lang/Object;
if_acmpeq 40
32: iinc 11 1
33: aload 15
invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
astore 17
start local 17 34: aload 17
invokevirtual sun.invoke.util.Wrapper.isDoubleWord:()Z
ifeq 35
iinc 12 1
35: StackMap locals: java.lang.invoke.MethodTypeForm java.lang.invoke.MethodType java.lang.Class[] int int int int int[] int[] int int int int java.lang.Class[] java.lang.Class[] java.lang.Class java.lang.Class sun.invoke.util.Wrapper
StackMap stack:
aload 17
invokevirtual sun.invoke.util.Wrapper.isSubwordOrInt:()Z
ifeq 37
aload 15
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
if_acmpeq 37
36: getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
astore 16
37: StackMap locals:
StackMap stack:
aload 15
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 39
38: iconst_0
dup
istore 6
istore 5
goto 40
39: StackMap locals:
StackMap stack:
iload 6
iload 12
iadd
istore 6
end local 17 40: StackMap locals:
StackMap stack:
aload 13
aload 14
if_acmpne 43
aload 16
aload 15
if_acmpne 43
41: aload 0
aload 1
putfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
42: goto 53
43: StackMap locals:
StackMap stack:
aload 0
aload 16
aload 14
iconst_1
invokestatic java.lang.invoke.MethodType.makeImpl:(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
putfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
44: aload 0
getfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodType.form:()Ljava/lang/invoke/MethodTypeForm;
astore 17
start local 17 45: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 46
aload 0
aload 17
if_acmpne 46
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
46: StackMap locals: java.lang.invoke.MethodTypeForm
StackMap stack:
aload 0
aload 17
getfield java.lang.invoke.MethodTypeForm.primCounts:J
putfield java.lang.invoke.MethodTypeForm.primCounts:J
47: aload 0
aload 17
getfield java.lang.invoke.MethodTypeForm.argCounts:J
putfield java.lang.invoke.MethodTypeForm.argCounts:J
48: aload 0
aload 17
getfield java.lang.invoke.MethodTypeForm.argToSlotTable:[I
putfield java.lang.invoke.MethodTypeForm.argToSlotTable:[I
49: aload 0
aload 17
getfield java.lang.invoke.MethodTypeForm.slotToArgTable:[I
putfield java.lang.invoke.MethodTypeForm.slotToArgTable:[I
50: aload 0
aconst_null
putfield java.lang.invoke.MethodTypeForm.methodHandles:[Ljava/lang/ref/SoftReference;
51: aload 0
aconst_null
putfield java.lang.invoke.MethodTypeForm.lambdaForms:[Ljava/lang/ref/SoftReference;
52: return
end local 17 53: StackMap locals:
StackMap stack:
iload 10
ifeq 69
54: iload 3
iload 10
iadd
istore 17
start local 17 55: iload 17
iconst_1
iadd
newarray 10
astore 8
56: iconst_1
iload 3
iadd
newarray 10
astore 7
57: aload 7
iconst_0
iload 17
iastore
58: iconst_0
istore 18
start local 18 59: goto 67
60: StackMap locals: int int
StackMap stack:
aload 13
iload 18
aaload
astore 19
start local 19 61: aload 19
invokestatic sun.invoke.util.Wrapper.forBasicType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
astore 20
start local 20 62: aload 20
invokevirtual sun.invoke.util.Wrapper.isDoubleWord:()Z
ifeq 63
iinc 17 -1
63: StackMap locals: java.lang.Class sun.invoke.util.Wrapper
StackMap stack:
iinc 17 -1
64: aload 8
iload 17
iload 18
iconst_1
iadd
iastore
65: aload 7
iconst_1
iload 18
iadd
iload 17
iastore
end local 20 end local 19 66: iinc 18 1
StackMap locals:
StackMap stack:
67: iload 18
aload 13
arraylength
if_icmplt 60
end local 18 68: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 87
iload 17
ifeq 87
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 17 69: StackMap locals:
StackMap stack:
iload 9
ifeq 76
70: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 71
iload 3
iload 4
if_icmpeq 71
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
71: StackMap locals:
StackMap stack:
iload 3
invokestatic java.lang.invoke.MethodType.genericMethodType:(I)Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodType.form:()Ljava/lang/invoke/MethodTypeForm;
astore 17
start local 17 72: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 73
aload 0
aload 17
if_acmpne 73
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
73: StackMap locals: java.lang.invoke.MethodTypeForm
StackMap stack:
aload 17
getfield java.lang.invoke.MethodTypeForm.slotToArgTable:[I
astore 8
74: aload 17
getfield java.lang.invoke.MethodTypeForm.argToSlotTable:[I
astore 7
end local 17 75: goto 87
76: StackMap locals:
StackMap stack:
iload 3
istore 17
start local 17 77: iload 17
iconst_1
iadd
newarray 10
astore 8
78: iconst_1
iload 3
iadd
newarray 10
astore 7
79: aload 7
iconst_0
iload 17
iastore
80: iconst_0
istore 18
start local 18 81: goto 86
82: StackMap locals: int int
StackMap stack:
iinc 17 -1
83: aload 8
iload 17
iload 18
iconst_1
iadd
iastore
84: aload 7
iconst_1
iload 18
iadd
iload 17
iastore
85: iinc 18 1
StackMap locals:
StackMap stack:
86: iload 18
iload 3
if_icmplt 82
end local 18 end local 17 87: StackMap locals:
StackMap stack:
aload 0
iload 12
iload 11
iload 10
iload 9
invokestatic java.lang.invoke.MethodTypeForm.pack:(IIII)J
putfield java.lang.invoke.MethodTypeForm.primCounts:J
88: aload 0
iload 6
iload 5
iload 4
iload 3
invokestatic java.lang.invoke.MethodTypeForm.pack:(IIII)J
putfield java.lang.invoke.MethodTypeForm.argCounts:J
89: aload 0
aload 7
putfield java.lang.invoke.MethodTypeForm.argToSlotTable:[I
90: aload 0
aload 8
putfield java.lang.invoke.MethodTypeForm.slotToArgTable:[I
91: iload 4
sipush 256
if_icmplt 92
ldc "too many arguments"
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
92: StackMap locals:
StackMap stack:
getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 93
aload 0
getfield java.lang.invoke.MethodTypeForm.basicType:Ljava/lang/invoke/MethodType;
aload 1
if_acmpeq 93
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
93: StackMap locals:
StackMap stack:
aload 0
bipush 21
anewarray java.lang.ref.SoftReference
putfield java.lang.invoke.MethodTypeForm.lambdaForms:[Ljava/lang/ref/SoftReference;
94: aload 0
iconst_3
anewarray java.lang.ref.SoftReference
putfield java.lang.invoke.MethodTypeForm.methodHandles:[Ljava/lang/ref/SoftReference;
95: return
end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 96 0 this Ljava/lang/invoke/MethodTypeForm;
0 96 1 erasedType Ljava/lang/invoke/MethodType;
3 96 2 ptypes [Ljava/lang/Class;
4 96 3 ptypeCount I
5 96 4 pslotCount I
6 96 5 rtypeCount I
7 96 6 rslotCount I
8 96 7 argToSlotTab [I
9 96 8 slotToArgTab [I
10 96 9 pac I
11 96 10 lac I
12 96 11 prc I
13 96 12 lrc I
14 96 13 epts [Ljava/lang/Class;
15 96 14 bpts [Ljava/lang/Class;
16 28 15 i I
18 26 16 pt Ljava/lang/Class<*>;
21 26 17 w Lsun/invoke/util/Wrapper;
30 96 15 rt Ljava/lang/Class<*>;
31 96 16 bt Ljava/lang/Class<*>;
34 40 17 w Lsun/invoke/util/Wrapper;
45 53 17 that Ljava/lang/invoke/MethodTypeForm;
55 69 17 slot I
59 68 18 i I
61 66 19 pt Ljava/lang/Class<*>;
62 66 20 w Lsun/invoke/util/Wrapper;
72 75 17 that Ljava/lang/invoke/MethodTypeForm;
77 87 17 slot I
81 87 18 i I
MethodParameters:
Name Flags
erasedType
private static long pack(int, int, int, int);
descriptor: (IIII)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 1
iload 0
iload 1
ior
iload 2
ior
iload 3
ior
ldc -65536
iand
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iload 0
bipush 16
ishl
iload 1
ior
i2l
lstore 4
start local 4 2: iload 2
bipush 16
ishl
iload 3
ior
i2l
lstore 6
start local 6 3: lload 4
bipush 32
lshl
lload 6
lor
lreturn
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 a I
0 4 1 b I
0 4 2 c I
0 4 3 d I
2 4 4 hw J
3 4 6 lw J
MethodParameters:
Name Flags
a
b
c
d
private static char unpack(long, int);
descriptor: (JI)C
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 2 0: getstatic java.lang.invoke.MethodTypeForm.$assertionsDisabled:Z
ifne 1
iload 2
iconst_3
if_icmple 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
lload 0
iconst_3
iload 2
isub
bipush 16
imul
lshr
l2i
i2c
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 packed J
0 2 2 word I
MethodParameters:
Name Flags
packed
word
public int parameterCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.argCounts:J
iconst_3
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int parameterSlotCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.argCounts:J
iconst_2
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int returnCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.argCounts:J
iconst_1
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int returnSlotCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.argCounts:J
iconst_0
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int primitiveParameterCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.primCounts:J
iconst_3
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int longPrimitiveParameterCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.primCounts:J
iconst_2
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int primitiveReturnCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.primCounts:J
iconst_1
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public int longPrimitiveReturnCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.primCounts:J
iconst_0
invokestatic java.lang.invoke.MethodTypeForm.unpack:(JI)C
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
public boolean hasPrimitives();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.primCounts:J
lconst_0
lcmp
ifeq 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/invoke/MethodTypeForm;
public boolean hasNonVoidPrimitives();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.invoke.MethodTypeForm.primCounts:J
lconst_0
lcmp
ifne 1
iconst_0
ireturn
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.invoke.MethodTypeForm.primitiveParameterCount:()I
ifeq 2
iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.invoke.MethodTypeForm.primitiveReturnCount:()I
ifeq 3
aload 0
invokevirtual java.lang.invoke.MethodTypeForm.returnCount:()I
ifeq 3
iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/lang/invoke/MethodTypeForm;
public boolean hasLongPrimitives();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.invoke.MethodTypeForm.longPrimitiveParameterCount:()I
aload 0
invokevirtual java.lang.invoke.MethodTypeForm.longPrimitiveReturnCount:()I
ior
ifeq 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/invoke/MethodTypeForm;
public int parameterToArgSlot(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.lang.invoke.MethodTypeForm.argToSlotTable:[I
iconst_1
iload 1
iadd
iaload
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
0 1 1 i I
MethodParameters:
Name Flags
i
public int argSlotToParameter(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.lang.invoke.MethodTypeForm.slotToArgTable:[I
iload 1
iaload
iconst_1
isub
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
0 1 1 argSlot I
MethodParameters:
Name Flags
argSlot
static java.lang.invoke.MethodTypeForm findForm(java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodTypeForm;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
iconst_1
iconst_1
invokestatic java.lang.invoke.MethodTypeForm.canonicalize:(Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: new java.lang.invoke.MethodTypeForm
dup
aload 0
invokespecial java.lang.invoke.MethodTypeForm.<init>:(Ljava/lang/invoke/MethodType;)V
areturn
3: StackMap locals: java.lang.invoke.MethodType
StackMap stack:
aload 1
invokevirtual java.lang.invoke.MethodType.form:()Ljava/lang/invoke/MethodTypeForm;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 mt Ljava/lang/invoke/MethodType;
1 4 1 erased Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
mt
public static java.lang.invoke.MethodType canonicalize(java.lang.invoke.MethodType, int, int);
descriptor: (Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodType.ptypes:()[Ljava/lang/Class;
astore 3
start local 3 1: aload 3
iload 2
invokestatic java.lang.invoke.MethodTypeForm.canonicalizeAll:([Ljava/lang/Class;I)[Ljava/lang/Class;
astore 4
start local 4 2: aload 0
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
astore 5
start local 5 3: aload 5
iload 1
invokestatic java.lang.invoke.MethodTypeForm.canonicalize:(Ljava/lang/Class;I)Ljava/lang/Class;
astore 6
start local 6 4: aload 4
ifnonnull 6
aload 6
ifnonnull 6
5: aconst_null
areturn
6: StackMap locals: java.lang.invoke.MethodType int int java.lang.Class[] java.lang.Class[] java.lang.Class java.lang.Class
StackMap stack:
aload 6
ifnonnull 7
aload 5
astore 6
7: StackMap locals:
StackMap stack:
aload 4
ifnonnull 8
aload 3
astore 4
8: StackMap locals:
StackMap stack:
aload 6
aload 4
iconst_1
invokestatic java.lang.invoke.MethodType.makeImpl:(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 mt Ljava/lang/invoke/MethodType;
0 9 1 howRet I
0 9 2 howArgs I
1 9 3 ptypes [Ljava/lang/Class;
2 9 4 ptc [Ljava/lang/Class;
3 9 5 rtype Ljava/lang/Class<*>;
4 9 6 rtc Ljava/lang/Class<*>;
MethodParameters:
Name Flags
mt
howRet
howArgs
static java.lang.Class<?> canonicalize(java.lang.Class<?>, int);
descriptor: (Ljava/lang/Class;I)Ljava/lang/Class;
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
ldc Ljava/lang/Object;
if_acmpeq 26
1: aload 0
invokevirtual java.lang.Class.isPrimitive:()Z
ifne 7
2: iload 1
tableswitch { // 1 - 6
1: 5
2: 6
3: 3
4: 6
5: 6
6: 5
default: 6
}
3: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.invoke.util.Wrapper.asPrimitiveType:(Ljava/lang/Class;)Ljava/lang/Class;
astore 2
start local 2 4: aload 2
aload 0
if_acmpeq 26
aload 2
areturn
end local 2 5: StackMap locals:
StackMap stack:
ldc Ljava/lang/Object;
areturn
6: StackMap locals:
StackMap stack:
goto 26
StackMap locals:
StackMap stack:
7: aload 0
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 12
8: iload 1
tableswitch { // 2 - 6
2: 10
3: 11
4: 11
5: 11
6: 9
default: 11
}
9: StackMap locals:
StackMap stack:
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
areturn
10: StackMap locals:
StackMap stack:
ldc Ljava/lang/Void;
areturn
11: StackMap locals:
StackMap stack:
goto 26
12: StackMap locals:
StackMap stack:
iload 1
tableswitch { // 2 - 6
2: 13
3: 26
4: 14
5: 19
6: 22
default: 26
}
13: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.invoke.util.Wrapper.asWrapperType:(Ljava/lang/Class;)Ljava/lang/Class;
areturn
14: StackMap locals:
StackMap stack:
aload 0
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
if_acmpeq 15
aload 0
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
if_acmpne 16
15: StackMap locals:
StackMap stack:
aconst_null
areturn
16: StackMap locals:
StackMap stack:
aload 0
getstatic java.lang.Double.TYPE:Ljava/lang/Class;
if_acmpne 18
17: getstatic java.lang.Long.TYPE:Ljava/lang/Class;
areturn
18: StackMap locals:
StackMap stack:
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
areturn
19: StackMap locals:
StackMap stack:
aload 0
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
if_acmpne 21
20: aconst_null
areturn
21: StackMap locals:
StackMap stack:
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
areturn
22: StackMap locals:
StackMap stack:
aload 0
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
if_acmpeq 24
aload 0
getstatic java.lang.Long.TYPE:Ljava/lang/Class;
if_acmpeq 24
23: aload 0
getstatic java.lang.Float.TYPE:Ljava/lang/Class;
if_acmpeq 24
aload 0
getstatic java.lang.Double.TYPE:Ljava/lang/Class;
if_acmpne 25
24: StackMap locals:
StackMap stack:
aconst_null
areturn
25: StackMap locals:
StackMap stack:
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
areturn
26: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 t Ljava/lang/Class<*>;
0 27 1 how I
4 5 2 ct Ljava/lang/Class<*>;
Signature: (Ljava/lang/Class<*>;I)Ljava/lang/Class<*>;
MethodParameters:
Name Flags
t
how
static java.lang.Class<?>[] canonicalizeAll(java.lang.Class<?>[], int);
descriptor: ([Ljava/lang/Class;I)[Ljava/lang/Class;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
arraylength
istore 3
start local 3 2: iconst_0
istore 4
start local 4 3: goto 12
4: StackMap locals: java.lang.Class[] int int
StackMap stack:
aload 0
iload 4
aaload
iload 1
invokestatic java.lang.invoke.MethodTypeForm.canonicalize:(Ljava/lang/Class;I)Ljava/lang/Class;
astore 5
start local 5 5: aload 5
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 7
6: aconst_null
astore 5
7: StackMap locals: java.lang.Class
StackMap stack:
aload 5
ifnull 11
8: aload 2
ifnonnull 10
9: aload 0
invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
checkcast java.lang.Class[]
astore 2
10: StackMap locals:
StackMap stack:
aload 2
iload 4
aload 5
aastore
end local 5 11: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
12: iload 4
iload 3
if_icmplt 4
end local 4 end local 3 13: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 ts [Ljava/lang/Class;
0 14 1 how I
1 14 2 cs [Ljava/lang/Class;
2 13 3 imax I
3 13 4 i I
5 11 5 c Ljava/lang/Class<*>;
Signature: ([Ljava/lang/Class<*>;I)[Ljava/lang/Class<*>;
MethodParameters:
Name Flags
ts
how
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
ldc "Form"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield java.lang.invoke.MethodTypeForm.erasedType:Ljava/lang/invoke/MethodType;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodTypeForm;
}
SourceFile: "MethodTypeForm.java"