class java.lang.invoke.MethodHandleProxies$1 implements java.lang.reflect.InvocationHandler
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.lang.invoke.MethodHandleProxies$1
super_class: java.lang.Object
{
private final java.lang.invoke.MethodHandle val$target;
descriptor: Ljava/lang/invoke/MethodHandle;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
private final java.lang.Class val$intfc;
descriptor: Ljava/lang/Class;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
private final java.lang.reflect.Method[] val$methods;
descriptor: [Ljava/lang/reflect/Method;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
private final java.lang.invoke.MethodHandle[] val$vaTargets;
descriptor: [Ljava/lang/invoke/MethodHandle;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
private final java.util.concurrent.ConcurrentHashMap val$defaultMethodMap;
descriptor: Ljava/util/concurrent/ConcurrentHashMap;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
void <init>(java.lang.invoke.MethodHandle, java.lang.Class, java.lang.reflect.Method[], java.lang.invoke.MethodHandle[], java.util.concurrent.ConcurrentHashMap);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;[Ljava/lang/reflect/Method;[Ljava/lang/invoke/MethodHandle;Ljava/util/concurrent/ConcurrentHashMap;)V
flags: (0x0000)
Code:
stack=2, locals=6, args_size=6
start local 0 0: aload 0
aload 1
putfield java.lang.invoke.MethodHandleProxies$1.val$target:Ljava/lang/invoke/MethodHandle;
aload 0
aload 2
putfield java.lang.invoke.MethodHandleProxies$1.val$intfc:Ljava/lang/Class;
aload 0
aload 3
putfield java.lang.invoke.MethodHandleProxies$1.val$methods:[Ljava/lang/reflect/Method;
aload 0
aload 4
putfield java.lang.invoke.MethodHandleProxies$1.val$vaTargets:[Ljava/lang/invoke/MethodHandle;
aload 0
aload 5
putfield java.lang.invoke.MethodHandleProxies$1.val$defaultMethodMap:Ljava/util/concurrent/ConcurrentHashMap;
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/MethodHandleProxies$1;
MethodParameters:
Name Flags
val$target final
val$intfc final
val$methods final
val$vaTargets final
val$defaultMethodMap final
private java.lang.Object getArg(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "getWrapperInstanceTarget"
if_acmpne 1
aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$target:Ljava/lang/invoke/MethodHandle;
areturn
1: StackMap locals:
StackMap stack:
aload 1
ldc "getWrapperInstanceType"
if_acmpne 2
aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$intfc:Ljava/lang/Class;
areturn
2: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/invoke/MethodHandleProxies$1;
0 3 1 name Ljava/lang/String;
MethodParameters:
Name Flags
name
public java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 4
start local 4 1: goto 5
2: StackMap locals: int
StackMap stack:
aload 2
aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$methods:[Ljava/lang/reflect/Method;
iload 4
aaload
invokevirtual java.lang.reflect.Method.equals:(Ljava/lang/Object;)Z
ifeq 4
3: aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$vaTargets:[Ljava/lang/invoke/MethodHandle;
iload 4
aaload
aload 3
invokevirtual java.lang.invoke.MethodHandle.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;
areturn
4: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
5: iload 4
aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$methods:[Ljava/lang/reflect/Method;
arraylength
if_icmplt 2
end local 4 6: aload 2
invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
ldc Lsun/invoke/WrapperInstance;
if_acmpne 8
7: aload 0
aload 2
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
invokevirtual java.lang.invoke.MethodHandleProxies$1.getArg:(Ljava/lang/String;)Ljava/lang/Object;
areturn
8: StackMap locals:
StackMap stack:
aload 2
invokestatic java.lang.invoke.MethodHandleProxies.isObjectMethod:(Ljava/lang/reflect/Method;)Z
ifeq 10
9: aload 1
aload 2
aload 3
invokestatic java.lang.invoke.MethodHandleProxies.callObjectMethod:(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
10: StackMap locals:
StackMap stack:
aload 2
invokestatic java.lang.invoke.MethodHandleProxies.isDefaultMethod:(Ljava/lang/reflect/Method;)Z
ifeq 12
11: aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$defaultMethodMap:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
aload 0
getfield java.lang.invoke.MethodHandleProxies$1.val$intfc:Ljava/lang/Class;
aload 2
aload 3
invokestatic java.lang.invoke.MethodHandleProxies.callDefaultMethod:(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
12: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "bad proxy method: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
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.newInternalError:(Ljava/lang/String;)Ljava/lang/InternalError;
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/lang/invoke/MethodHandleProxies$1;
0 13 1 proxy Ljava/lang/Object;
0 13 2 method Ljava/lang/reflect/Method;
0 13 3 args [Ljava/lang/Object;
1 6 4 i I
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
proxy
method
args
}
SourceFile: "MethodHandleProxies.java"
EnclosingMethod: java.lang.invoke.MethodHandleProxies.asInterfaceInstance:(Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
NestHost: java.lang.invoke.MethodHandleProxies
InnerClasses:
java.lang.invoke.MethodHandleProxies$1