final class jdk.nashorn.internal.runtime.linker.BoundCallableLinker implements jdk.dynalink.linker.TypeBasedGuardingDynamicLinker
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: jdk.nashorn.internal.runtime.linker.BoundCallableLinker
super_class: java.lang.Object
{
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
0: .line 46
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/runtime/linker/BoundCallableLinker;
public boolean canLinkType(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
start local 1 // java.lang.Class type
0: .line 49
aload 1 /* type */
ldc Ljdk/nashorn/internal/runtime/linker/BoundCallable;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 // java.lang.Class type
end local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/runtime/linker/BoundCallableLinker;
0 2 1 type Ljava/lang/Class<*>;
Signature: (Ljava/lang/Class<*>;)Z
MethodParameters:
Name Flags
type final
public jdk.dynalink.linker.GuardedInvocation getGuardedInvocation(jdk.dynalink.linker.LinkRequest, jdk.dynalink.linker.LinkerServices);
descriptor: (Ljdk/dynalink/linker/LinkRequest;Ljdk/dynalink/linker/LinkerServices;)Ljdk/dynalink/linker/GuardedInvocation;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=24, args_size=3
start local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
start local 1 // jdk.dynalink.linker.LinkRequest linkRequest
start local 2 // jdk.dynalink.linker.LinkerServices linkerServices
0: .line 54
aload 1 /* linkRequest */
invokeinterface jdk.dynalink.linker.LinkRequest.getReceiver:()Ljava/lang/Object;
astore 3 /* objBoundCallable */
start local 3 // java.lang.Object objBoundCallable
1: .line 55
aload 3 /* objBoundCallable */
instanceof jdk.nashorn.internal.runtime.linker.BoundCallable
ifne 3
2: .line 56
aconst_null
areturn
3: .line 59
StackMap locals: java.lang.Object
StackMap stack:
aload 1 /* linkRequest */
invokeinterface jdk.dynalink.linker.LinkRequest.getCallSiteDescriptor:()Ljdk/dynalink/CallSiteDescriptor;
astore 4 /* descriptor */
start local 4 // jdk.dynalink.CallSiteDescriptor descriptor
4: .line 60
aload 4 /* descriptor */
invokevirtual jdk.dynalink.CallSiteDescriptor.getOperation:()Ljdk/dynalink/Operation;
invokestatic jdk.dynalink.NamedOperation.getBaseOperation:(Ljdk/dynalink/Operation;)Ljdk/dynalink/Operation;
astore 5 /* operation */
start local 5 // jdk.dynalink.Operation operation
5: .line 64
aload 5 /* operation */
getstatic jdk.dynalink.StandardOperation.NEW:Ljdk/dynalink/StandardOperation;
if_acmpne 8
6: .line 65
iconst_0
istore 6 /* isCall */
start local 6 // boolean isCall
7: .line 66
goto 12
end local 6 // boolean isCall
StackMap locals: jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation
StackMap stack:
8: aload 5 /* operation */
getstatic jdk.dynalink.StandardOperation.CALL:Ljdk/dynalink/StandardOperation;
if_acmpne 11
9: .line 67
iconst_1
istore 6 /* isCall */
start local 6 // boolean isCall
10: .line 68
goto 12
end local 6 // boolean isCall
11: .line 70
StackMap locals:
StackMap stack:
aconst_null
areturn
start local 6 // boolean isCall
12: .line 72
StackMap locals: int
StackMap stack:
aload 3 /* objBoundCallable */
checkcast jdk.nashorn.internal.runtime.linker.BoundCallable
astore 7 /* boundCallable */
start local 7 // jdk.nashorn.internal.runtime.linker.BoundCallable boundCallable
13: .line 73
aload 7 /* boundCallable */
invokevirtual jdk.nashorn.internal.runtime.linker.BoundCallable.getCallable:()Ljava/lang/Object;
astore 8 /* callable */
start local 8 // java.lang.Object callable
14: .line 74
aload 7 /* boundCallable */
invokevirtual jdk.nashorn.internal.runtime.linker.BoundCallable.getBoundThis:()Ljava/lang/Object;
astore 9 /* boundThis */
start local 9 // java.lang.Object boundThis
15: .line 79
aload 1 /* linkRequest */
invokeinterface jdk.dynalink.linker.LinkRequest.getArguments:()[Ljava/lang/Object;
astore 10 /* args */
start local 10 // java.lang.Object[] args
16: .line 80
aload 7 /* boundCallable */
invokevirtual jdk.nashorn.internal.runtime.linker.BoundCallable.getBoundArgs:()[Ljava/lang/Object;
astore 11 /* boundArgs */
start local 11 // java.lang.Object[] boundArgs
17: .line 81
aload 10 /* args */
arraylength
istore 12 /* argsLen */
start local 12 // int argsLen
18: .line 82
aload 11 /* boundArgs */
arraylength
istore 13 /* boundArgsLen */
start local 13 // int boundArgsLen
19: .line 83
iload 12 /* argsLen */
iload 13 /* boundArgsLen */
iadd
anewarray java.lang.Object
astore 14 /* newArgs */
start local 14 // java.lang.Object[] newArgs
20: .line 84
aload 14 /* newArgs */
iconst_0
aload 8 /* callable */
aastore
21: .line 86
iload 6 /* isCall */
ifeq 25
22: .line 87
aload 14 /* newArgs */
iconst_1
aload 9 /* boundThis */
aastore
23: .line 88
iconst_2
istore 15 /* firstArgIndex */
start local 15 // int firstArgIndex
24: .line 89
goto 26
end local 15 // int firstArgIndex
25: .line 90
StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[]
StackMap stack:
iconst_1
istore 15 /* firstArgIndex */
start local 15 // int firstArgIndex
26: .line 92
StackMap locals: int
StackMap stack:
aload 11 /* boundArgs */
iconst_0
aload 14 /* newArgs */
iload 15 /* firstArgIndex */
iload 13 /* boundArgsLen */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
27: .line 93
aload 10 /* args */
iload 15 /* firstArgIndex */
aload 14 /* newArgs */
iload 15 /* firstArgIndex */
iload 13 /* boundArgsLen */
iadd
iload 12 /* argsLen */
iload 15 /* firstArgIndex */
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
28: .line 97
aload 4 /* descriptor */
invokevirtual jdk.dynalink.CallSiteDescriptor.getMethodType:()Ljava/lang/invoke/MethodType;
astore 16 /* type */
start local 16 // java.lang.invoke.MethodType type
29: .line 99
aload 4 /* descriptor */
invokevirtual jdk.dynalink.CallSiteDescriptor.getMethodType:()Ljava/lang/invoke/MethodType;
iconst_0
aload 8 /* callable */
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 17 /* newMethodType */
start local 17 // java.lang.invoke.MethodType newMethodType
30: .line 100
iload 6 /* isCall */
ifeq 34
31: .line 102
aload 17 /* newMethodType */
iconst_1
aload 9 /* boundThis */
ifnonnull 32
ldc Ljava/lang/Object;
goto 33
StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType
StackMap stack: java.lang.invoke.MethodType int
32: aload 9 /* boundThis */
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType
StackMap stack: java.lang.invoke.MethodType int java.lang.Class
33: invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 17 /* newMethodType */
34: .line 105
StackMap locals:
StackMap stack:
aload 11 /* boundArgs */
arraylength
istore 18 /* i */
start local 18 // int i
35: goto 39
36: .line 106
StackMap locals: int
StackMap stack:
aload 17 /* newMethodType */
iload 15 /* firstArgIndex */
iconst_1
anewarray java.lang.Class
dup
iconst_0
aload 11 /* boundArgs */
iload 18 /* i */
aaload
ifnonnull 37
ldc Ljava/lang/Object;
goto 38
StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType int
StackMap stack: java.lang.invoke.MethodType int java.lang.Class[] java.lang.Class[] int
37: aload 11 /* boundArgs */
iload 18 /* i */
aaload
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType int
StackMap stack: java.lang.invoke.MethodType int java.lang.Class[] java.lang.Class[] int java.lang.Class
38: aastore
invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
astore 17 /* newMethodType */
39: .line 105
StackMap locals:
StackMap stack:
iload 18 /* i */
iinc 18 /* i */ -1
ifgt 36
end local 18 // int i
40: .line 108
aload 4 /* descriptor */
aload 17 /* newMethodType */
invokevirtual jdk.dynalink.CallSiteDescriptor.changeMethodType:(Ljava/lang/invoke/MethodType;)Ljdk/dynalink/CallSiteDescriptor;
astore 18 /* newDescriptor */
start local 18 // jdk.dynalink.CallSiteDescriptor newDescriptor
41: .line 111
aload 2 /* linkerServices */
aload 1 /* linkRequest */
aload 18 /* newDescriptor */
aload 14 /* newArgs */
invokeinterface jdk.dynalink.linker.LinkRequest.replaceArguments:(Ljdk/dynalink/CallSiteDescriptor;[Ljava/lang/Object;)Ljdk/dynalink/linker/LinkRequest;
invokeinterface jdk.dynalink.linker.LinkerServices.getGuardedInvocation:(Ljdk/dynalink/linker/LinkRequest;)Ljdk/dynalink/linker/GuardedInvocation;
astore 19 /* inv */
start local 19 // jdk.dynalink.linker.GuardedInvocation inv
42: .line 112
aload 19 /* inv */
ifnonnull 44
43: .line 113
aconst_null
areturn
44: .line 117
StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType jdk.dynalink.CallSiteDescriptor jdk.dynalink.linker.GuardedInvocation
StackMap stack:
aload 19 /* inv */
invokevirtual jdk.dynalink.linker.GuardedInvocation.getInvocation:()Ljava/lang/invoke/MethodHandle;
iconst_0
45: .line 118
aload 14 /* newArgs */
iload 15 /* firstArgIndex */
aload 11 /* boundArgs */
arraylength
iadd
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
46: .line 117
invokestatic java.lang.invoke.MethodHandles.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
astore 20 /* boundHandle */
start local 20 // java.lang.invoke.MethodHandle boundHandle
47: .line 119
aload 16 /* type */
iconst_0
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
astore 21 /* p0Type */
start local 21 // java.lang.Class p0Type
48: .line 121
iload 6 /* isCall */
ifeq 51
49: .line 123
aload 20 /* boundHandle */
iconst_0
iconst_2
anewarray java.lang.Class
dup
iconst_0
aload 21 /* p0Type */
aastore
dup
iconst_1
aload 16 /* type */
iconst_1
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
aastore
invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
astore 22 /* droppingHandle */
start local 22 // java.lang.invoke.MethodHandle droppingHandle
50: .line 124
goto 52
end local 22 // java.lang.invoke.MethodHandle droppingHandle
51: .line 126
StackMap locals: java.lang.invoke.MethodHandle java.lang.Class
StackMap stack:
aload 20 /* boundHandle */
iconst_0
iconst_1
anewarray java.lang.Class
dup
iconst_0
aload 21 /* p0Type */
aastore
invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
astore 22 /* droppingHandle */
start local 22 // java.lang.invoke.MethodHandle droppingHandle
52: .line 129
StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
aload 7 /* boundCallable */
invokestatic jdk.dynalink.linker.support.Guards.getIdentityGuard:(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
astore 23 /* newGuard */
start local 23 // java.lang.invoke.MethodHandle newGuard
53: .line 130
aload 19 /* inv */
aload 22 /* droppingHandle */
aload 23 /* newGuard */
aload 23 /* newGuard */
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
iconst_0
aload 21 /* p0Type */
invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
invokevirtual jdk.dynalink.linker.GuardedInvocation.replaceMethods:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljdk/dynalink/linker/GuardedInvocation;
areturn
end local 23 // java.lang.invoke.MethodHandle newGuard
end local 22 // java.lang.invoke.MethodHandle droppingHandle
end local 21 // java.lang.Class p0Type
end local 20 // java.lang.invoke.MethodHandle boundHandle
end local 19 // jdk.dynalink.linker.GuardedInvocation inv
end local 18 // jdk.dynalink.CallSiteDescriptor newDescriptor
end local 17 // java.lang.invoke.MethodType newMethodType
end local 16 // java.lang.invoke.MethodType type
end local 15 // int firstArgIndex
end local 14 // java.lang.Object[] newArgs
end local 13 // int boundArgsLen
end local 12 // int argsLen
end local 11 // java.lang.Object[] boundArgs
end local 10 // java.lang.Object[] args
end local 9 // java.lang.Object boundThis
end local 8 // java.lang.Object callable
end local 7 // jdk.nashorn.internal.runtime.linker.BoundCallable boundCallable
end local 6 // boolean isCall
end local 5 // jdk.dynalink.Operation operation
end local 4 // jdk.dynalink.CallSiteDescriptor descriptor
end local 3 // java.lang.Object objBoundCallable
end local 2 // jdk.dynalink.linker.LinkerServices linkerServices
end local 1 // jdk.dynalink.linker.LinkRequest linkRequest
end local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Ljdk/nashorn/internal/runtime/linker/BoundCallableLinker;
0 54 1 linkRequest Ljdk/dynalink/linker/LinkRequest;
0 54 2 linkerServices Ljdk/dynalink/linker/LinkerServices;
1 54 3 objBoundCallable Ljava/lang/Object;
4 54 4 descriptor Ljdk/dynalink/CallSiteDescriptor;
5 54 5 operation Ljdk/dynalink/Operation;
7 8 6 isCall Z
10 11 6 isCall Z
12 54 6 isCall Z
13 54 7 boundCallable Ljdk/nashorn/internal/runtime/linker/BoundCallable;
14 54 8 callable Ljava/lang/Object;
15 54 9 boundThis Ljava/lang/Object;
16 54 10 args [Ljava/lang/Object;
17 54 11 boundArgs [Ljava/lang/Object;
18 54 12 argsLen I
19 54 13 boundArgsLen I
20 54 14 newArgs [Ljava/lang/Object;
24 25 15 firstArgIndex I
26 54 15 firstArgIndex I
29 54 16 type Ljava/lang/invoke/MethodType;
30 54 17 newMethodType Ljava/lang/invoke/MethodType;
35 40 18 i I
41 54 18 newDescriptor Ljdk/dynalink/CallSiteDescriptor;
42 54 19 inv Ljdk/dynalink/linker/GuardedInvocation;
47 54 20 boundHandle Ljava/lang/invoke/MethodHandle;
48 54 21 p0Type Ljava/lang/Class<*>;
50 51 22 droppingHandle Ljava/lang/invoke/MethodHandle;
52 54 22 droppingHandle Ljava/lang/invoke/MethodHandle;
53 54 23 newGuard Ljava/lang/invoke/MethodHandle;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
linkRequest final
linkerServices final
}
SourceFile: "BoundCallableLinker.java"