public class java.lang.invoke.MethodHandles
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.lang.invoke.MethodHandles
super_class: java.lang.Object
{
private static final java.lang.invoke.MemberName$Factory IMPL_NAMES;
descriptor: Ljava/lang/invoke/MemberName$Factory;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.security.Permission ACCESS_PERMISSION;
descriptor: Ljava/security/Permission;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.MethodHandle[] IDENTITY_MHS;
descriptor: [Ljava/lang/invoke/MethodHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.MethodHandle[] ZERO_MHS;
descriptor: [Ljava/lang/invoke/MethodHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$sun$invoke$util$Wrapper;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Ljava/lang/invoke/MethodHandles;
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.MethodHandles.$assertionsDisabled:Z
3: invokestatic java.lang.invoke.MemberName.getFactory:()Ljava/lang/invoke/MemberName$Factory;
putstatic java.lang.invoke.MethodHandles.IMPL_NAMES:Ljava/lang/invoke/MemberName$Factory;
4: invokestatic java.lang.invoke.MethodHandleImpl.initStatics:()V
5: new java.lang.reflect.ReflectPermission
dup
ldc "suppressAccessChecks"
invokespecial java.lang.reflect.ReflectPermission.<init>:(Ljava/lang/String;)V
6: putstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
7: invokestatic sun.invoke.util.Wrapper.values:()[Lsun/invoke/util/Wrapper;
arraylength
anewarray java.lang.invoke.MethodHandle
putstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
8: invokestatic sun.invoke.util.Wrapper.values:()[Lsun/invoke/util/Wrapper;
arraylength
anewarray java.lang.invoke.MethodHandle
putstatic java.lang.invoke.MethodHandles.ZERO_MHS:[Ljava/lang/invoke/MethodHandle;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/invoke/MethodHandles;
public static java.lang.invoke.MethodHandles$Lookup lookup();
descriptor: ()Ljava/lang/invoke/MethodHandles$Lookup;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.lang.invoke.MethodHandles$Lookup
dup
invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
invokespecial java.lang.invoke.MethodHandles$Lookup.<init>:(Ljava/lang/Class;)V
areturn
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
sun.reflect.CallerSensitive()
public static java.lang.invoke.MethodHandles$Lookup publicLookup();
descriptor: ()Ljava/lang/invoke/MethodHandles$Lookup;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic java.lang.invoke.MethodHandles$Lookup.PUBLIC_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static <T extends java.lang.reflect.Member> T reflectAs(java.lang.Class<T>, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/reflect/Member;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
getstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
2: StackMap locals: java.lang.SecurityManager
StackMap stack:
getstatic java.lang.invoke.MethodHandles$Lookup.IMPL_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
astore 3
start local 3 3: aload 3
aload 1
invokevirtual java.lang.invoke.MethodHandles$Lookup.revealDirect:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandleInfo;
aload 0
aload 3
invokeinterface java.lang.invoke.MethodHandleInfo.reflectAs:(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/reflect/Member;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 expected Ljava/lang/Class<TT;>;
0 4 1 target Ljava/lang/invoke/MethodHandle;
1 4 2 smgr Ljava/lang/SecurityManager;
3 4 3 lookup Ljava/lang/invoke/MethodHandles$Lookup;
Signature: <T::Ljava/lang/reflect/Member;>(Ljava/lang/Class<TT;>;Ljava/lang/invoke/MethodHandle;)TT;
MethodParameters:
Name Flags
expected
target
public static java.lang.invoke.MethodHandle arrayElementGetter(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokestatic java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor:(Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 arrayClass Ljava/lang/Class<*>;
Exceptions:
throws java.lang.IllegalArgumentException
Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
arrayClass
public static java.lang.invoke.MethodHandle arrayElementSetter(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokestatic java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor:(Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 arrayClass Ljava/lang/Class<*>;
Exceptions:
throws java.lang.IllegalArgumentException
Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
arrayClass
public static java.lang.invoke.MethodHandle spreadInvoker(java.lang.invoke.MethodType, int);
descriptor: (Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iflt 1
iload 1
aload 0
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
if_icmple 2
1: StackMap locals:
StackMap stack:
ldc "bad argument count"
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
2: StackMap locals:
StackMap stack:
aload 0
ldc [Ljava/lang/Object;
aload 0
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
iload 1
isub
invokevirtual java.lang.invoke.MethodType.asSpreaderType:(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
astore 0
3: aload 0
invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
iload 1
invokevirtual java.lang.invoke.Invokers.spreadInvoker:(I)Ljava/lang/invoke/MethodHandle;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 type Ljava/lang/invoke/MethodType;
0 4 1 leadingArgCount I
MethodParameters:
Name Flags
type
leadingArgCount
public static java.lang.invoke.MethodHandle exactInvoker(java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
invokevirtual java.lang.invoke.Invokers.exactInvoker:()Ljava/lang/invoke/MethodHandle;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 type Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
type
public static java.lang.invoke.MethodHandle invoker(java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
invokevirtual java.lang.invoke.Invokers.genericInvoker:()Ljava/lang/invoke/MethodHandle;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 type Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
type
static java.lang.invoke.MethodHandle basicInvoker(java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
invokevirtual java.lang.invoke.Invokers.basicInvoker:()Ljava/lang/invoke/MethodHandle;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 type Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
type
public static java.lang.invoke.MethodHandle explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic java.lang.invoke.MethodHandles.explicitCastArgumentsChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
1: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 2
start local 2 2: aload 2
aload 1
if_acmpne 3
aload 0
areturn
3: StackMap locals: java.lang.invoke.MethodType
StackMap stack:
aload 2
aload 1
invokevirtual java.lang.invoke.MethodType.explicitCastEquivalentToAsType:(Ljava/lang/invoke/MethodType;)Z
ifeq 5
4: aload 0
invokevirtual java.lang.invoke.MethodHandle.asFixedArity:()Ljava/lang/invoke/MethodHandle;
aload 1
invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
areturn
5: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_0
invokestatic java.lang.invoke.MethodHandleImpl.makePairwiseConvert:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/MethodHandle;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 target Ljava/lang/invoke/MethodHandle;
0 6 1 newType Ljava/lang/invoke/MethodType;
2 6 2 oldType Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
target
newType
private static void explicitCastArgumentsChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
if_icmpeq 2
1: new java.lang.invoke.WrongMethodTypeException
dup
new java.lang.StringBuilder
dup
ldc "cannot explicitly cast "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.invoke.WrongMethodTypeException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 target Ljava/lang/invoke/MethodHandle;
0 3 1 newType Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
target
newType
public static java.lang.invoke.MethodHandle permuteArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, int[]);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;[I)Ljava/lang/invoke/MethodHandle;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=6, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual int[].clone:()Ljava/lang/Object;
checkcast int[]
astore 2
1: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 2: aload 2
aload 1
aload 3
invokestatic java.lang.invoke.MethodHandles.permuteArgumentChecks:([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
pop
3: aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 4
start local 4 4: aload 4
getfield java.lang.invoke.BoundMethodHandle.form:Ljava/lang/invoke/LambdaForm;
astore 5
start local 5 5: aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 6
start local 6 6: goto 39
start local 7 7: StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodType int[] java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int int
StackMap stack:
iload 7
ifle 26
8: iload 7
istore 8
start local 8 9: iload 8
istore 9
start local 9 10: aload 2
iload 8
iaload
istore 10
start local 10 11: iconst_0
istore 11
start local 11 12: goto 14
start local 12 13: StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodType int[] java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int int int int int int int
StackMap stack:
iload 10
iload 12
if_icmple 14
iconst_1
istore 11
end local 12 14: StackMap locals:
StackMap stack:
aload 2
iinc 9 -1
iload 9
iaload
dup
istore 12
start local 12 15: iload 10
if_icmpne 13
end local 12 16: iload 11
ifne 19
17: iload 9
istore 8
18: iload 7
istore 9
19: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
iload 8
iadd
iconst_1
iload 9
iadd
invokevirtual java.lang.invoke.LambdaFormEditor.dupArgumentForm:(II)Ljava/lang/invoke/LambdaForm;
astore 5
20: getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 21
aload 2
iload 8
iaload
aload 2
iload 9
iaload
if_icmpeq 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
21: StackMap locals:
StackMap stack:
aload 3
iload 9
iload 9
iconst_1
iadd
invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
astore 3
22: iload 9
iconst_1
iadd
istore 12
start local 12 23: aload 2
iload 12
aload 2
iload 9
aload 2
arraylength
iload 12
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
24: aload 2
aload 2
arraylength
iconst_1
isub
invokestatic java.util.Arrays.copyOf:([II)[I
astore 2
end local 12 end local 11 end local 10 end local 9 end local 8 25: goto 38
26: StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodType int[] java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int int
StackMap stack:
iload 7
iconst_m1
ixor
istore 8
start local 8 27: iconst_0
istore 9
start local 9 28: goto 30
29: StackMap locals: int int
StackMap stack:
iinc 9 1
30: StackMap locals:
StackMap stack:
iload 9
aload 2
arraylength
if_icmpge 31
aload 2
iload 9
iaload
iload 8
if_icmplt 29
31: StackMap locals:
StackMap stack:
aload 1
iload 8
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
astore 10
start local 10 32: aload 5
invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
iload 9
iadd
aload 10
invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
invokevirtual java.lang.invoke.LambdaFormEditor.addArgumentForm:(ILjava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
astore 5
33: aload 3
iload 9
iconst_1
anewarray java.lang.Class
dup
iconst_0
aload 10
aastore
invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 3
34: iload 9
iconst_1
iadd
istore 11
start local 11 35: aload 2
aload 2
arraylength
iconst_1
iadd
invokestatic java.util.Arrays.copyOf:([II)[I
astore 2
36: aload 2
iload 9
aload 2
iload 11
aload 2
arraylength
iload 11
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
37: aload 2
iload 9
iload 8
iastore
end local 11 end local 10 end local 9 end local 8 38: StackMap locals:
StackMap stack:
getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 39
aload 2
aload 1
aload 3
invokestatic java.lang.invoke.MethodHandles.permuteArgumentChecks:([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
ifne 39
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 7 39: StackMap locals:
StackMap stack:
aload 2
iload 6
invokestatic java.lang.invoke.MethodHandles.findFirstDupOrDrop:([II)I
dup
istore 7
start local 7 40: ifne 7
end local 7 41: getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 42
aload 2
arraylength
iload 6
if_icmpeq 42
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
42: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
aload 2
invokevirtual java.lang.invoke.LambdaFormEditor.permuteArgumentsForm:(I[I)Ljava/lang/invoke/LambdaForm;
astore 5
43: aload 1
aload 4
invokevirtual java.lang.invoke.BoundMethodHandle.type:()Ljava/lang/invoke/MethodType;
if_acmpne 45
aload 5
aload 4
invokevirtual java.lang.invoke.BoundMethodHandle.internalForm:()Ljava/lang/invoke/LambdaForm;
if_acmpne 45
44: aload 4
areturn
45: StackMap locals:
StackMap stack:
aload 4
aload 1
aload 5
invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
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 46 0 target Ljava/lang/invoke/MethodHandle;
0 46 1 newType Ljava/lang/invoke/MethodType;
0 46 2 reorder [I
2 46 3 oldType Ljava/lang/invoke/MethodType;
4 46 4 result Ljava/lang/invoke/BoundMethodHandle;
5 46 5 form Ljava/lang/invoke/LambdaForm;
6 46 6 newArity I
7 39 7 ddIdx I
40 41 7 ddIdx I
9 25 8 srcPos I
10 25 9 dstPos I
11 25 10 dupVal I
12 25 11 killFirst Z
13 14 12 val I
15 16 12 val I
23 25 12 tailPos I
27 38 8 dropVal I
28 38 9 insPos I
32 38 10 ptype Ljava/lang/Class<*>;
35 38 11 tailPos I
MethodParameters:
Name Flags
target
newType
reorder
private static int findFirstDupOrDrop(int[], int);
descriptor: ([II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=8, args_size=2
start local 0 start local 1 0: iload 1
bipush 63
if_icmpge 22
1: lconst_0
lstore 2
start local 2 2: iconst_0
istore 4
start local 4 3: goto 12
4: StackMap locals: long int
StackMap stack:
aload 0
iload 4
iaload
istore 5
start local 5 5: iload 5
iload 1
if_icmplt 7
6: aload 0
arraylength
ireturn
7: StackMap locals: int
StackMap stack:
lconst_1
iload 5
lshl
lstore 6
start local 6 8: lload 2
lload 6
land
lconst_0
lcmp
ifeq 10
9: iload 4
ireturn
10: StackMap locals: long
StackMap stack:
lload 2
lload 6
lor
lstore 2
end local 6 end local 5 11: iinc 4 1
StackMap locals:
StackMap stack:
12: iload 4
aload 0
arraylength
if_icmplt 4
end local 4 13: lload 2
lconst_1
iload 1
lshl
lconst_1
lsub
lcmp
ifne 16
14: getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 15
lload 2
ldc -1
lxor
invokestatic java.lang.Long.lowestOneBit:(J)J
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
iload 1
if_icmpeq 15
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
15: StackMap locals:
StackMap stack:
iconst_0
ireturn
16: StackMap locals:
StackMap stack:
lload 2
ldc -1
lxor
invokestatic java.lang.Long.lowestOneBit:(J)J
lstore 4
start local 4 17: lload 4
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
istore 6
start local 6 18: getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 19
iload 6
iload 1
if_icmple 19
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
19: StackMap locals: long int
StackMap stack:
iload 6
iload 1
if_icmpne 21
20: iconst_0
ireturn
21: StackMap locals:
StackMap stack:
iload 6
iconst_m1
ixor
ireturn
end local 6 end local 4 end local 2 22: StackMap locals:
StackMap stack:
new java.util.BitSet
dup
iload 1
invokespecial java.util.BitSet.<init>:(I)V
astore 2
start local 2 23: iconst_0
istore 3
start local 3 24: goto 32
25: StackMap locals: java.util.BitSet int
StackMap stack:
aload 0
iload 3
iaload
istore 4
start local 4 26: iload 4
iload 1
if_icmplt 28
27: aload 0
arraylength
ireturn
28: StackMap locals: int
StackMap stack:
aload 2
iload 4
invokevirtual java.util.BitSet.get:(I)Z
ifeq 30
29: iload 3
ireturn
30: StackMap locals:
StackMap stack:
aload 2
iload 4
invokevirtual java.util.BitSet.set:(I)V
end local 4 31: iinc 3 1
StackMap locals:
StackMap stack:
32: iload 3
aload 0
arraylength
if_icmplt 25
end local 3 33: aload 2
iconst_0
invokevirtual java.util.BitSet.nextClearBit:(I)I
istore 3
start local 3 34: getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 35
iload 3
iload 1
if_icmple 35
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
35: StackMap locals:
StackMap stack:
iload 3
iload 1
if_icmpne 37
36: iconst_0
ireturn
37: StackMap locals:
StackMap stack:
iload 3
iconst_m1
ixor
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 reorder [I
0 38 1 newArity I
2 22 2 mask J
3 13 4 i I
5 11 5 arg I
8 11 6 bit J
17 22 4 zeroBit J
18 22 6 zeroPos I
23 38 2 mask Ljava/util/BitSet;
24 33 3 i I
26 31 4 arg I
34 38 3 zeroPos I
MethodParameters:
Name Flags
reorder
newArity
private static boolean permuteArgumentChecks(int[], java.lang.invoke.MethodType, java.lang.invoke.MethodType);
descriptor: ([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
aload 2
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
if_acmpeq 4
1: ldc "return types do not match"
2: aload 2
aload 1
3: invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
4: StackMap locals:
StackMap stack:
aload 0
arraylength
aload 2
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
if_icmpne 21
5: aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 3
start local 3 6: iconst_0
istore 4
start local 4 7: iconst_0
istore 5
start local 5 8: goto 19
9: StackMap locals: int int int
StackMap stack:
aload 0
iload 5
iaload
istore 6
start local 6 10: iload 6
iflt 11
iload 6
iload 3
if_icmplt 12
11: StackMap locals: int
StackMap stack:
iconst_1
istore 4
goto 20
12: StackMap locals:
StackMap stack:
aload 1
iload 6
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
astore 7
start local 7 13: aload 2
iload 5
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
astore 8
start local 8 14: aload 7
aload 8
if_acmpeq 18
15: ldc "parameter types do not match after reorder"
16: aload 2
aload 1
17: invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
end local 8 end local 7 end local 6 18: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
19: iload 5
aload 0
arraylength
if_icmplt 9
end local 5 20: StackMap locals:
StackMap stack:
iload 4
ifne 21
iconst_1
ireturn
end local 4 end local 3 21: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "bad reorder array: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokestatic java.util.Arrays.toString:([I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 reorder [I
0 22 1 newType Ljava/lang/invoke/MethodType;
0 22 2 oldType Ljava/lang/invoke/MethodType;
6 21 3 limit I
7 21 4 bad Z
8 20 5 j I
10 18 6 i I
13 18 7 src Ljava/lang/Class<*>;
14 18 8 dst Ljava/lang/Class<*>;
MethodParameters:
Name Flags
reorder
newType
oldType
public static java.lang.invoke.MethodHandle constant(java.lang.Class<?>, );
descriptor: (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.Class.isPrimitive:()Z
ifeq 8
1: aload 0
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 3
2: ldc "void type"
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
3: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
astore 2
start local 2 4: aload 2
aload 1
aload 0
invokevirtual sun.invoke.util.Wrapper.convert:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
astore 1
5: aload 2
invokevirtual sun.invoke.util.Wrapper.zero:()Ljava/lang/Object;
aload 1
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 7
6: aload 2
aload 0
invokestatic java.lang.invoke.MethodHandles.zero:(Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
areturn
7: StackMap locals: sun.invoke.util.Wrapper
StackMap stack:
aload 0
invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
iconst_0
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic java.lang.invoke.MethodHandles.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
areturn
end local 2 8: StackMap locals:
StackMap stack:
aload 1
ifnonnull 10
9: getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
aload 0
invokestatic java.lang.invoke.MethodHandles.zero:(Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
areturn
10: StackMap locals:
StackMap stack:
aload 0
invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
aload 1
invokevirtual java.lang.invoke.MethodHandle.bindTo:(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 type Ljava/lang/Class<*>;
0 11 1 value Ljava/lang/Object;
4 8 2 w Lsun/invoke/util/Wrapper;
Signature: (Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
type
value
public static java.lang.invoke.MethodHandle identity(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.Class.isPrimitive:()Z
ifeq 1
aload 0
invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
goto 2
StackMap locals:
StackMap stack:
1: getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
StackMap locals:
StackMap stack: sun.invoke.util.Wrapper
2: astore 1
start local 1 3: aload 1
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
istore 2
start local 2 4: getstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
iload 2
aaload
astore 3
start local 3 5: aload 3
ifnonnull 7
6: getstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
iload 2
aload 1
invokevirtual sun.invoke.util.Wrapper.primitiveType:()Ljava/lang/Class;
invokestatic java.lang.invoke.MethodHandles.makeIdentity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
invokestatic java.lang.invoke.MethodHandles.setCachedMethodHandle:([Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
astore 3
7: StackMap locals: sun.invoke.util.Wrapper int java.lang.invoke.MethodHandle
StackMap stack:
aload 3
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
aload 0
if_acmpne 9
8: aload 3
areturn
9: StackMap locals:
StackMap stack:
getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 10
aload 1
getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
if_acmpeq 10
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
10: StackMap locals:
StackMap stack:
aload 0
invokestatic java.lang.invoke.MethodHandles.makeIdentity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 type Ljava/lang/Class<*>;
3 11 1 btw Lsun/invoke/util/Wrapper;
4 11 2 pos I
5 11 3 ident Ljava/lang/invoke/MethodHandle;
Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
type
private static java.lang.invoke.MethodHandle makeIdentity(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
aload 0
invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 1
start local 1 1: aload 0
invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
invokestatic java.lang.invoke.LambdaForm.identityForm:(Ljava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
astore 2
start local 2 2: aload 1
aload 2
getstatic java.lang.invoke.MethodHandleImpl$Intrinsic.IDENTITY:Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
invokestatic java.lang.invoke.MethodHandleImpl.makeIntrinsic:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MethodHandleImpl$Intrinsic;)Ljava/lang/invoke/MethodHandle;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 ptype Ljava/lang/Class<*>;
1 3 1 mtype Ljava/lang/invoke/MethodType;
2 3 2 lform Ljava/lang/invoke/LambdaForm;
Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
ptype
private static java.lang.invoke.MethodHandle zero(sun.invoke.util.Wrapper, java.lang.Class<?>);
descriptor: (Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
istore 2
start local 2 1: getstatic java.lang.invoke.MethodHandles.ZERO_MHS:[Ljava/lang/invoke/MethodHandle;
iload 2
aaload
astore 3
start local 3 2: aload 3
ifnonnull 4
3: getstatic java.lang.invoke.MethodHandles.ZERO_MHS:[Ljava/lang/invoke/MethodHandle;
iload 2
aload 0
invokevirtual sun.invoke.util.Wrapper.primitiveType:()Ljava/lang/Class;
invokestatic java.lang.invoke.MethodHandles.makeZero:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
invokestatic java.lang.invoke.MethodHandles.setCachedMethodHandle:([Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
astore 3
4: StackMap locals: int java.lang.invoke.MethodHandle
StackMap stack:
aload 3
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
aload 1
if_acmpne 6
5: aload 3
areturn
6: StackMap locals:
StackMap stack:
getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
ifne 7
aload 0
getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
if_acmpeq 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals:
StackMap stack:
aload 1
invokestatic java.lang.invoke.MethodHandles.makeZero:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 btw Lsun/invoke/util/Wrapper;
0 8 1 rtype Ljava/lang/Class<*>;
1 8 2 pos I
2 8 3 zero Ljava/lang/invoke/MethodHandle;
Signature: (Lsun/invoke/util/Wrapper;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
btw
rtype
private static java.lang.invoke.MethodHandle makeZero(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 1
start local 1 1: aload 0
invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
invokestatic java.lang.invoke.LambdaForm.zeroForm:(Ljava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
astore 2
start local 2 2: aload 1
aload 2
getstatic java.lang.invoke.MethodHandleImpl$Intrinsic.ZERO:Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
invokestatic java.lang.invoke.MethodHandleImpl.makeIntrinsic:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MethodHandleImpl$Intrinsic;)Ljava/lang/invoke/MethodHandle;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 rtype Ljava/lang/Class<*>;
1 3 1 mtype Ljava/lang/invoke/MethodType;
2 3 2 lform Ljava/lang/invoke/LambdaForm;
Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
rtype
private static synchronized java.lang.invoke.MethodHandle setCachedMethodHandle(java.lang.invoke.MethodHandle[], int, java.lang.invoke.MethodHandle);
descriptor: ([Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aaload
astore 3
start local 3 1: aload 3
ifnull 2
aload 3
areturn
2: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
aload 0
iload 1
aload 2
dup_x2
aastore
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 cache [Ljava/lang/invoke/MethodHandle;
0 3 1 pos I
0 3 2 value Ljava/lang/invoke/MethodHandle;
1 3 3 prev Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
cache
pos
value
public static java.lang.invoke.MethodHandle insertArguments(java.lang.invoke.MethodHandle, int, java.lang.Object[]);
descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 2
arraylength
istore 3
start local 3 1: aload 0
iload 3
iload 1
invokestatic java.lang.invoke.MethodHandles.insertArgumentsChecks:(Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class;
astore 4
start local 4 2: iload 3
ifne 3
aload 0
areturn
3: StackMap locals: int java.lang.Class[]
StackMap stack:
aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 5
start local 5 4: iconst_0
istore 6
start local 6 5: goto 14
6: StackMap locals: java.lang.invoke.BoundMethodHandle int
StackMap stack:
aload 2
iload 6
aaload
astore 7
start local 7 7: aload 4
iload 1
iload 6
iadd
aaload
astore 8
start local 8 8: aload 8
invokevirtual java.lang.Class.isPrimitive:()Z
ifeq 11
9: aload 5
iload 1
aload 8
aload 7
invokestatic java.lang.invoke.MethodHandles.insertArgumentPrimitive:(Ljava/lang/invoke/BoundMethodHandle;ILjava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
astore 5
10: goto 13
11: StackMap locals: java.lang.Object java.lang.Class
StackMap stack:
aload 8
aload 7
invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
astore 7
12: aload 5
iload 1
aload 7
invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentL:(ILjava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
astore 5
end local 8 end local 7 13: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
14: iload 6
iload 3
if_icmplt 6
end local 6 15: aload 5
areturn
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 16 0 target Ljava/lang/invoke/MethodHandle;
0 16 1 pos I
0 16 2 values [Ljava/lang/Object;
1 16 3 insCount I
2 16 4 ptypes [Ljava/lang/Class;
4 16 5 result Ljava/lang/invoke/BoundMethodHandle;
5 15 6 i I
7 13 7 value Ljava/lang/Object;
8 13 8 ptype Ljava/lang/Class<*>;
MethodParameters:
Name Flags
target
pos
values
private static java.lang.invoke.BoundMethodHandle insertArgumentPrimitive(java.lang.invoke.BoundMethodHandle, int, java.lang.Class<?>, );
descriptor: (Ljava/lang/invoke/BoundMethodHandle;ILjava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
astore 4
start local 4 1: aload 4
aload 3
aload 2
invokevirtual sun.invoke.util.Wrapper.convert:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
astore 3
2: invokestatic java.lang.invoke.MethodHandles.$SWITCH_TABLE$sun$invoke$util$Wrapper:()[I
aload 4
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
iaload
tableswitch { // 5 - 8
5: 3
6: 4
7: 5
8: 6
default: 7
}
3: StackMap locals: sun.invoke.util.Wrapper
StackMap stack:
aload 0
iload 1
aload 3
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentI:(II)Ljava/lang/invoke/BoundMethodHandle;
areturn
4: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 3
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentJ:(IJ)Ljava/lang/invoke/BoundMethodHandle;
areturn
5: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 3
checkcast java.lang.Float
invokevirtual java.lang.Float.floatValue:()F
invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentF:(IF)Ljava/lang/invoke/BoundMethodHandle;
areturn
6: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 3
checkcast java.lang.Double
invokevirtual java.lang.Double.doubleValue:()D
invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentD:(ID)Ljava/lang/invoke/BoundMethodHandle;
areturn
7: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 3
invokestatic sun.invoke.util.ValueConversions.widenSubword:(Ljava/lang/Object;)I
invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentI:(II)Ljava/lang/invoke/BoundMethodHandle;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 result Ljava/lang/invoke/BoundMethodHandle;
0 8 1 pos I
0 8 2 ptype Ljava/lang/Class<*>;
0 8 3 value Ljava/lang/Object;
1 8 4 w Lsun/invoke/util/Wrapper;
Signature: (Ljava/lang/invoke/BoundMethodHandle;ILjava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
MethodParameters:
Name Flags
result
pos
ptype
value
private static java.lang.Class<?>[] insertArgumentsChecks(java.lang.invoke.MethodHandle, int, int);
descriptor: (Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 3
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 4
start local 4 2: iload 4
iload 1
isub
istore 5
start local 5 3: iload 5
ifge 5
4: ldc "too many values to insert"
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
5: StackMap locals: java.lang.invoke.MethodType int int
StackMap stack:
iload 2
iflt 6
iload 2
iload 5
if_icmple 7
6: StackMap locals:
StackMap stack:
ldc "no argument type to append"
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
7: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.lang.invoke.MethodType.ptypes:()[Ljava/lang/Class;
areturn
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 8 0 target Ljava/lang/invoke/MethodHandle;
0 8 1 insCount I
0 8 2 pos I
1 8 3 oldType Ljava/lang/invoke/MethodType;
2 8 4 outargs I
3 8 5 inargs I
Exceptions:
throws java.lang.RuntimeException
Signature: (Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class<*>;
MethodParameters:
Name Flags
target
insCount
pos
public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic java.lang.invoke.MethodHandles.copyTypes:(Ljava/util/List;)Ljava/util/List;
astore 2
1: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 2: aload 3
iload 1
aload 2
invokestatic java.lang.invoke.MethodHandles.dropArgumentChecks:(Ljava/lang/invoke/MethodType;ILjava/util/List;)I
istore 4
start local 4 3: aload 3
iload 1
aload 2
invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)Ljava/lang/invoke/MethodType;
astore 5
start local 5 4: iload 4
ifne 5
aload 0
areturn
5: StackMap locals: java.lang.invoke.MethodType int java.lang.invoke.MethodType
StackMap stack:
aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 6
start local 6 6: aload 6
getfield java.lang.invoke.BoundMethodHandle.form:Ljava/lang/invoke/LambdaForm;
astore 7
start local 7 7: iconst_1
iload 1
iadd
istore 8
start local 8 8: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 11
StackMap locals: java.lang.invoke.MethodHandle int java.util.List java.lang.invoke.MethodType int java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int top java.util.Iterator
StackMap stack:
9: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Class
astore 9
start local 9 10: aload 7
invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
iload 8
iinc 8 1
aload 9
invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
invokevirtual java.lang.invoke.LambdaFormEditor.addArgumentForm:(ILjava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
astore 7
end local 9 11: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
12: aload 6
aload 5
aload 7
invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
astore 6
13: aload 6
areturn
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 14 0 target Ljava/lang/invoke/MethodHandle;
0 14 1 pos I
0 14 2 valueTypes Ljava/util/List<Ljava/lang/Class<*>;>;
2 14 3 oldType Ljava/lang/invoke/MethodType;
3 14 4 dropped I
4 14 5 newType Ljava/lang/invoke/MethodType;
6 14 6 result Ljava/lang/invoke/BoundMethodHandle;
7 14 7 lform Ljava/lang/invoke/LambdaForm;
8 14 8 insertFormArg I
10 11 9 ptype Ljava/lang/Class<*>;
Signature: (Ljava/lang/invoke/MethodHandle;ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
target
pos
valueTypes
private static java.util.List<java.lang.Class<?>> copyTypes(java.util.List<java.lang.Class<?>>);
descriptor: (Ljava/util/List;)Ljava/util/List;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
astore 1
start local 1 1: aload 1
aload 1
arraylength
ldc [Ljava/lang/Class;
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;
checkcast java.lang.Class[]
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 types Ljava/util/List<Ljava/lang/Class<*>;>;
1 2 1 a [Ljava/lang/Object;
Signature: (Ljava/util/List<Ljava/lang/Class<*>;>;)Ljava/util/List<Ljava/lang/Class<*>;>;
MethodParameters:
Name Flags
types
private static int dropArgumentChecks(java.lang.invoke.MethodType, int, java.util.List<java.lang.Class<?>>);
descriptor: (Ljava/lang/invoke/MethodType;ILjava/util/List;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokeinterface java.util.List.size:()I
istore 3
start local 3 1: iload 3
invokestatic java.lang.invoke.MethodType.checkSlotCount:(I)V
2: aload 0
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 4
start local 4 3: iload 4
iload 3
iadd
istore 5
start local 5 4: iload 1
iflt 5
iload 1
iload 4
if_icmple 8
5: StackMap locals: int int int
StackMap stack:
new java.lang.StringBuilder
dup
ldc "no argument type to remove"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: iconst_5
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
dup
iconst_1
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
aload 2
aastore
dup
iconst_3
iload 5
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_4
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
7: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
8: StackMap locals:
StackMap stack:
iload 3
ireturn
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 oldType Ljava/lang/invoke/MethodType;
0 9 1 pos I
0 9 2 valueTypes Ljava/util/List<Ljava/lang/Class<*>;>;
1 9 3 dropped I
3 9 4 outargs I
4 9 5 inargs I
Signature: (Ljava/lang/invoke/MethodType;ILjava/util/List<Ljava/lang/Class<*>;>;)I
MethodParameters:
Name Flags
oldType
pos
valueTypes
public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.lang.Class<?>[]);
descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 target Ljava/lang/invoke/MethodHandle;
0 1 1 pos I
0 1 2 valueTypes [Ljava/lang/Class;
Signature: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
target
pos
valueTypes
public static java.lang.invoke.MethodHandle filterArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle[]);
descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
invokestatic java.lang.invoke.MethodHandles.filterArgumentsCheckArity:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
1: aload 0
astore 3
start local 3 2: iload 1
iconst_1
isub
istore 4
start local 4 3: aload 2
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 9
StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int top int int java.lang.invoke.MethodHandle[]
StackMap stack:
4: aload 8
iload 6
aaload
astore 5
start local 5 5: iinc 4 1
6: aload 5
ifnonnull 7
goto 8
7: StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle int int java.lang.invoke.MethodHandle[]
StackMap stack:
aload 3
iload 4
aload 5
invokestatic java.lang.invoke.MethodHandles.filterArgument:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
astore 3
end local 5 8: StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int top int int java.lang.invoke.MethodHandle[]
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
9: iload 6
iload 7
if_icmplt 4
10: aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 target Ljava/lang/invoke/MethodHandle;
0 11 1 pos I
0 11 2 filters [Ljava/lang/invoke/MethodHandle;
2 11 3 adapter Ljava/lang/invoke/MethodHandle;
3 11 4 curPos I
5 8 5 filter Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
target
pos
filters
static java.lang.invoke.MethodHandle filterArgument(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
invokestatic java.lang.invoke.MethodHandles.filterArgumentChecks:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
1: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 2: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 3: aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 5
start local 5 4: aload 4
iconst_0
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
astore 6
start local 6 5: aload 5
invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
iload 1
iadd
aload 6
invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
invokevirtual java.lang.invoke.LambdaFormEditor.filterArgumentForm:(ILjava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
astore 7
start local 7 6: aload 3
iload 1
aload 6
invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 8
start local 8 7: aload 5
aload 8
aload 7
aload 2
invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
astore 5
8: aload 5
areturn
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 9 0 target Ljava/lang/invoke/MethodHandle;
0 9 1 pos I
0 9 2 filter Ljava/lang/invoke/MethodHandle;
2 9 3 targetType Ljava/lang/invoke/MethodType;
3 9 4 filterType Ljava/lang/invoke/MethodType;
4 9 5 result Ljava/lang/invoke/BoundMethodHandle;
5 9 6 newParamType Ljava/lang/Class<*>;
6 9 7 lform Ljava/lang/invoke/LambdaForm;
7 9 8 newType Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
target
pos
filter
private static void filterArgumentsCheckArity(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle[]);
descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 3
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 4
start local 4 2: iload 1
aload 2
arraylength
iadd
iload 4
if_icmple 4
3: ldc "too many filters"
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
4: StackMap locals: java.lang.invoke.MethodType int
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 target Ljava/lang/invoke/MethodHandle;
0 5 1 pos I
0 5 2 filters [Ljava/lang/invoke/MethodHandle;
1 5 3 targetType Ljava/lang/invoke/MethodType;
2 5 4 maxPos I
MethodParameters:
Name Flags
target
pos
filters
private static void filterArgumentChecks(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 2: aload 4
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
iconst_1
if_icmpne 4
3: aload 4
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
aload 3
iload 1
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
if_acmpeq 5
4: StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType
StackMap stack:
ldc "target and filter types do not match"
aload 3
aload 4
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
5: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 target Ljava/lang/invoke/MethodHandle;
0 6 1 pos I
0 6 2 filter Ljava/lang/invoke/MethodHandle;
1 6 3 targetType Ljava/lang/invoke/MethodType;
2 6 4 filterType Ljava/lang/invoke/MethodType;
Exceptions:
throws java.lang.RuntimeException
MethodParameters:
Name Flags
target
pos
filter
public static java.lang.invoke.MethodHandle collectArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
invokestatic java.lang.invoke.MethodHandles.collectArgumentsChecks:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 2: aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 5
start local 5 3: aload 4
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
invokevirtual java.lang.Class.isArray:()Z
ifeq 7
aload 2
invokevirtual java.lang.invoke.MethodHandle.intrinsicName:()Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
getstatic java.lang.invoke.MethodHandleImpl$Intrinsic.NEW_ARRAY:Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
if_acmpne 7
4: aload 5
invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
iload 1
iadd
aload 2
invokevirtual java.lang.invoke.LambdaFormEditor.collectArgumentArrayForm:(ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/LambdaForm;
astore 6
start local 6 5: aload 6
ifnull 7
6: aload 5
aload 3
aload 6
invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
areturn
end local 6 7: StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle
StackMap stack:
aload 5
invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
iload 1
iadd
aload 4
invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.LambdaFormEditor.collectArgumentsForm:(ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/LambdaForm;
astore 6
start local 6 8: aload 5
aload 3
aload 6
aload 2
invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
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 target Ljava/lang/invoke/MethodHandle;
0 9 1 pos I
0 9 2 filter Ljava/lang/invoke/MethodHandle;
1 9 3 newType Ljava/lang/invoke/MethodType;
2 9 4 collectorType Ljava/lang/invoke/MethodType;
3 9 5 result Ljava/lang/invoke/BoundMethodHandle;
5 7 6 lform Ljava/lang/invoke/LambdaForm;
8 9 6 lform Ljava/lang/invoke/LambdaForm;
MethodParameters:
Name Flags
target
pos
filter
private static java.lang.invoke.MethodType collectArgumentsChecks(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 2: aload 4
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
astore 5
start local 5 3: aload 4
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
astore 6
start local 6 4: aload 5
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 6
5: aload 3
iload 1
aload 6
invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)Ljava/lang/invoke/MethodType;
areturn
6: StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.Class java.util.List
StackMap stack:
aload 5
aload 3
iload 1
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
if_acmpeq 8
7: ldc "target and filter types do not match"
aload 3
aload 4
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
8: StackMap locals:
StackMap stack:
aload 3
iload 1
iload 1
iconst_1
iadd
invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
iload 1
aload 6
invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)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 target Ljava/lang/invoke/MethodHandle;
0 9 1 pos I
0 9 2 filter Ljava/lang/invoke/MethodHandle;
1 9 3 targetType Ljava/lang/invoke/MethodType;
2 9 4 filterType Ljava/lang/invoke/MethodType;
3 9 5 rtype Ljava/lang/Class<*>;
4 9 6 filterArgs Ljava/util/List<Ljava/lang/Class<*>;>;
Exceptions:
throws java.lang.RuntimeException
MethodParameters:
Name Flags
target
pos
filter
public static java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 2
start local 2 1: aload 1
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 2: aload 2
aload 3
invokestatic java.lang.invoke.MethodHandles.filterReturnValueChecks:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
3: aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 4
start local 4 4: aload 3
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
astore 5
start local 5 5: aload 4
invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
aload 5
iconst_0
invokevirtual java.lang.invoke.LambdaFormEditor.filterReturnForm:(Ljava/lang/invoke/LambdaForm$BasicType;Z)Ljava/lang/invoke/LambdaForm;
astore 6
start local 6 6: aload 2
aload 3
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 7
start local 7 7: aload 4
aload 7
aload 6
aload 1
invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
astore 4
8: aload 4
areturn
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 9 0 target Ljava/lang/invoke/MethodHandle;
0 9 1 filter Ljava/lang/invoke/MethodHandle;
1 9 2 targetType Ljava/lang/invoke/MethodType;
2 9 3 filterType Ljava/lang/invoke/MethodType;
4 9 4 result Ljava/lang/invoke/BoundMethodHandle;
5 9 5 rtype Ljava/lang/invoke/LambdaForm$BasicType;
6 9 6 lform Ljava/lang/invoke/LambdaForm;
7 9 7 newType Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
target
filter
private static void filterReturnValueChecks(java.lang.invoke.MethodType, java.lang.invoke.MethodType);
descriptor: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
astore 2
start local 2 1: aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 3
start local 3 2: iload 3
ifne 4
3: aload 2
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpeq 6
goto 5
4: StackMap locals: java.lang.Class int
StackMap stack:
aload 2
aload 1
iconst_0
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
if_acmpne 5
iload 3
iconst_1
if_icmpeq 6
5: StackMap locals:
StackMap stack:
ldc "target and filter types do not match"
aload 0
aload 1
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
6: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 targetType Ljava/lang/invoke/MethodType;
0 7 1 filterType Ljava/lang/invoke/MethodType;
1 7 2 rtype Ljava/lang/Class<*>;
2 7 3 filterValues I
Exceptions:
throws java.lang.RuntimeException
MethodParameters:
Name Flags
targetType
filterType
public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=10, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 2: aload 1
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 3: iload 2
aload 3
aload 4
invokestatic java.lang.invoke.MethodHandles.foldArgumentChecks:(ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
astore 5
start local 5 4: aload 0
invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
astore 6
start local 6 5: aload 5
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 6
iconst_1
goto 7
StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle int java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.Class java.lang.invoke.BoundMethodHandle
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: istore 7
start local 7 8: aload 6
invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
iconst_1
iload 2
iadd
iload 7
aload 4
invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.LambdaFormEditor.foldArgumentsForm:(IZLjava/lang/invoke/MethodType;)Ljava/lang/invoke/LambdaForm;
astore 8
start local 8 9: aload 3
astore 9
start local 9 10: iload 7
ifne 12
11: aload 9
iload 2
iload 2
iconst_1
iadd
invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
astore 9
12: StackMap locals: int java.lang.invoke.LambdaForm java.lang.invoke.MethodType
StackMap stack:
aload 6
aload 9
aload 8
aload 1
invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
astore 6
13: aload 6
areturn
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 14 0 target Ljava/lang/invoke/MethodHandle;
0 14 1 combiner Ljava/lang/invoke/MethodHandle;
1 14 2 foldPos I
2 14 3 targetType Ljava/lang/invoke/MethodType;
3 14 4 combinerType Ljava/lang/invoke/MethodType;
4 14 5 rtype Ljava/lang/Class<*>;
5 14 6 result Ljava/lang/invoke/BoundMethodHandle;
8 14 7 dropResult Z
9 14 8 lform Ljava/lang/invoke/LambdaForm;
10 14 9 newType Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
target
combiner
private static java.lang.Class<?> foldArgumentChecks(int, java.lang.invoke.MethodType, java.lang.invoke.MethodType);
descriptor: (ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
istore 3
start local 3 1: aload 2
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
astore 4
start local 4 2: aload 4
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
if_acmpne 3
iconst_0
goto 4
StackMap locals: int java.lang.Class
StackMap stack:
3: iconst_1
StackMap locals:
StackMap stack: int
4: istore 5
start local 5 5: iload 0
iload 5
iadd
istore 6
start local 6 6: aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
iload 6
iload 3
iadd
if_icmplt 7
iconst_1
goto 8
StackMap locals: int int
StackMap stack:
7: iconst_0
StackMap locals:
StackMap stack: int
8: istore 7
start local 7 9: iload 7
ifeq 15
aload 2
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
10: aload 1
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
iload 6
11: iload 6
iload 3
iadd
12: invokeinterface java.util.List.subList:(II)Ljava/util/List;
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
13: ifne 15
14: iconst_0
istore 7
15: StackMap locals: int
StackMap stack:
iload 7
ifeq 17
iload 5
ifeq 17
aload 2
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
aload 1
iconst_0
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
if_acmpeq 17
16: iconst_0
istore 7
17: StackMap locals:
StackMap stack:
iload 7
ifne 19
18: ldc "target and combiner types"
aload 1
aload 2
invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
athrow
19: StackMap locals:
StackMap stack:
aload 4
areturn
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 20 0 foldPos I
0 20 1 targetType Ljava/lang/invoke/MethodType;
0 20 2 combinerType Ljava/lang/invoke/MethodType;
1 20 3 foldArgs I
2 20 4 rtype Ljava/lang/Class<*>;
5 20 5 foldVals I
6 20 6 afterInsertPos I
9 20 7 ok Z
Signature: (ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class<*>;
MethodParameters:
Name Flags
foldPos
targetType
combinerType
public static java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 1
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 2: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 5
start local 5 3: aload 4
aload 5
invokevirtual java.lang.invoke.MethodType.equals:(Ljava/lang/Object;)Z
ifne 5
4: ldc "target and fallback types"
aload 4
aload 5
invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
athrow
5: StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.MethodType
StackMap stack:
aload 3
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
if_acmpeq 7
6: new java.lang.StringBuilder
dup
ldc "guard type is not a predicate "
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;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
7: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
astore 6
start local 6 8: aload 3
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
astore 7
start local 7 9: aload 6
aload 7
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
ifne 16
10: aload 7
invokeinterface java.util.List.size:()I
istore 8
start local 8 11: aload 6
invokeinterface java.util.List.size:()I
istore 9
start local 9 12: iload 8
iload 9
if_icmpge 13
aload 6
iconst_0
iload 8
invokeinterface java.util.List.subList:(II)Ljava/util/List;
aload 7
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
ifne 14
13: StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.MethodType java.util.List java.util.List int int
StackMap stack:
ldc "target and test types"
aload 4
aload 3
invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
athrow
14: StackMap locals:
StackMap stack:
aload 0
iload 8
aload 6
iload 8
iload 9
invokeinterface java.util.List.subList:(II)Ljava/util/List;
invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
astore 0
15: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
end local 9 end local 8 16: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokestatic java.lang.invoke.MethodHandleImpl.makeGuardWithTest:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
areturn
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 17 0 test Ljava/lang/invoke/MethodHandle;
0 17 1 target Ljava/lang/invoke/MethodHandle;
0 17 2 fallback Ljava/lang/invoke/MethodHandle;
1 17 3 gtype Ljava/lang/invoke/MethodType;
2 17 4 ttype Ljava/lang/invoke/MethodType;
3 17 5 ftype Ljava/lang/invoke/MethodType;
8 17 6 targs Ljava/util/List<Ljava/lang/Class<*>;>;
9 17 7 gargs Ljava/util/List<Ljava/lang/Class<*>;>;
11 16 8 gpc I
12 16 9 tpc I
MethodParameters:
Name Flags
test
target
fallback
static java.lang.RuntimeException misMatchedTypes(java.lang.String, java.lang.invoke.MethodType, java.lang.invoke.MethodType);
descriptor: (Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: new java.lang.StringBuilder
dup
aload 0
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " must match: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " != "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 what Ljava/lang/String;
0 1 1 t1 Ljava/lang/invoke/MethodType;
0 1 2 t2 Ljava/lang/invoke/MethodType;
MethodParameters:
Name Flags
what
t1
t2
public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, java.lang.Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 3
start local 3 1: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
start local 4 2: aload 4
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
iconst_1
if_icmplt 4
3: aload 4
iconst_0
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
aload 1
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifne 5
4: StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType
StackMap stack:
new java.lang.StringBuilder
dup
ldc "handler does not accept exception type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
5: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
aload 3
invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
if_acmpeq 7
6: ldc "target and handler return types"
aload 3
aload 4
invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
athrow
7: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
astore 5
start local 5 8: aload 4
invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
astore 6
start local 6 9: aload 6
iconst_1
aload 6
invokeinterface java.util.List.size:()I
invokeinterface java.util.List.subList:(II)Ljava/util/List;
astore 6
10: aload 5
aload 6
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
ifne 17
11: aload 6
invokeinterface java.util.List.size:()I
istore 7
start local 7 12: aload 5
invokeinterface java.util.List.size:()I
istore 8
start local 8 13: iload 7
iload 8
if_icmpge 14
aload 5
iconst_0
iload 7
invokeinterface java.util.List.subList:(II)Ljava/util/List;
aload 6
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
ifne 15
14: StackMap locals: java.lang.invoke.MethodHandle java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.invoke.MethodType java.util.List java.util.List int int
StackMap stack:
ldc "target and handler types"
aload 3
aload 4
invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
athrow
15: StackMap locals:
StackMap stack:
aload 2
iconst_1
iload 7
iadd
aload 5
iload 7
iload 8
invokeinterface java.util.List.subList:(II)Ljava/util/List;
invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
astore 2
16: aload 2
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
astore 4
end local 8 end local 7 17: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokestatic java.lang.invoke.MethodHandleImpl.makeGuardWithCatch:(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
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 18 0 target Ljava/lang/invoke/MethodHandle;
0 18 1 exType Ljava/lang/Class<+Ljava/lang/Throwable;>;
0 18 2 handler Ljava/lang/invoke/MethodHandle;
1 18 3 ttype Ljava/lang/invoke/MethodType;
2 18 4 htype Ljava/lang/invoke/MethodType;
8 18 5 targs Ljava/util/List<Ljava/lang/Class<*>;>;
9 18 6 hargs Ljava/util/List<Ljava/lang/Class<*>;>;
12 17 7 hpc I
13 17 8 tpc I
Signature: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<+Ljava/lang/Throwable;>;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
target
exType
handler
public static java.lang.invoke.MethodHandle throwException(java.lang.Class<?>, java.lang.Class<? extends java.lang.Throwable>);
descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: ldc Ljava/lang/Throwable;
aload 1
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifne 2
1: new java.lang.ClassCastException
dup
aload 1
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokespecial java.lang.ClassCastException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
invokestatic java.lang.invoke.MethodHandleImpl.throwException:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 returnType Ljava/lang/Class<*>;
0 3 1 exType Ljava/lang/Class<+Ljava/lang/Throwable;>;
Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<+Ljava/lang/Throwable;>;)Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
returnType
exType
static int[] $SWITCH_TABLE$sun$invoke$util$Wrapper();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic java.lang.invoke.MethodHandles.$SWITCH_TABLE$sun$invoke$util$Wrapper:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic sun.invoke.util.Wrapper.values:()[Lsun/invoke/util/Wrapper;
arraylength
newarray 10
astore 0
2: aload 0
getstatic sun.invoke.util.Wrapper.BOOLEAN:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.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 sun.invoke.util.Wrapper.BYTE:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.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 sun.invoke.util.Wrapper.CHAR:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.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 sun.invoke.util.Wrapper.DOUBLE:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.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 sun.invoke.util.Wrapper.FLOAT:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
bipush 7
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic sun.invoke.util.Wrapper.INT:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
iconst_5
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic sun.invoke.util.Wrapper.LONG:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
bipush 6
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
bipush 9
iastore
24: goto 26
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
25: pop
StackMap locals:
StackMap stack:
26: aload 0
getstatic sun.invoke.util.Wrapper.SHORT:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
iconst_3
iastore
27: goto 29
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
28: pop
StackMap locals:
StackMap stack:
29: aload 0
getstatic sun.invoke.util.Wrapper.VOID:Lsun/invoke/util/Wrapper;
invokevirtual sun.invoke.util.Wrapper.ordinal:()I
bipush 10
iastore
30: goto 32
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
31: pop
StackMap locals:
StackMap stack:
32: aload 0
dup
putstatic java.lang.invoke.MethodHandles.$SWITCH_TABLE$sun$invoke$util$Wrapper:[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
}
SourceFile: "MethodHandles.java"
NestMembers:
java.lang.invoke.MethodHandles$Lookup
InnerClasses:
final BasicType = java.lang.invoke.LambdaForm$BasicType of java.lang.invoke.LambdaForm
Factory = java.lang.invoke.MemberName$Factory of java.lang.invoke.MemberName
final Intrinsic = java.lang.invoke.MethodHandleImpl$Intrinsic of java.lang.invoke.MethodHandleImpl
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles