public class java.lang.reflect.Proxy implements java.io.Serializable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.lang.reflect.Proxy
super_class: java.lang.Object
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -2222568056686623797
private static final java.lang.String proxyClassNamePrefix;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "$Proxy"
private static final java.lang.Class[] constructorParams;
descriptor: [Ljava/lang/Class;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static java.util.Map<java.lang.ClassLoader, java.util.Map<java.util.List<java.lang.String>, java.lang.Object>> loaderToCache;
descriptor: Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Map<Ljava/util/List<Ljava/lang/String;>;Ljava/lang/Object;>;>;
private static java.lang.Object pendingGenerationMarker;
descriptor: Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static long nextUniqueNumber;
descriptor: J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static java.lang.Object nextUniqueNumberLock;
descriptor: Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static java.util.Map<java.lang.Class<?>, java.lang.Void> proxyClasses;
descriptor: Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/Void;>;
protected java.lang.reflect.InvocationHandler h;
descriptor: Ljava/lang/reflect/InvocationHandler;
flags: (0x0004) ACC_PROTECTED
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/reflect/InvocationHandler;
aastore
1: putstatic java.lang.reflect.Proxy.constructorParams:[Ljava/lang/Class;
2: new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
3: putstatic java.lang.reflect.Proxy.loaderToCache:Ljava/util/Map;
4: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic java.lang.reflect.Proxy.pendingGenerationMarker:Ljava/lang/Object;
5: lconst_0
putstatic java.lang.reflect.Proxy.nextUniqueNumber:J
6: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic java.lang.reflect.Proxy.nextUniqueNumberLock:Ljava/lang/Object;
7: new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
8: putstatic java.lang.reflect.Proxy.proxyClasses:Ljava/util/Map;
9: 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
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/reflect/Proxy;
protected void <init>(java.lang.reflect.InvocationHandler);
descriptor: (Ljava/lang/reflect/InvocationHandler;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokevirtual java.lang.reflect.Proxy.doNewInstanceCheck:()V
2: aload 0
aload 1
putfield java.lang.reflect.Proxy.h:Ljava/lang/reflect/InvocationHandler;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/lang/reflect/Proxy;
0 4 1 h Ljava/lang/reflect/InvocationHandler;
MethodParameters:
Name Flags
h
private void doNewInstanceCheck();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=1
start local 0 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 1
start local 1 1: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
astore 2
start local 2 2: aload 1
ifnull 9
aload 2
invokestatic java.lang.reflect.Proxy$ProxyAccessHelper.needsNewInstanceCheck:(Ljava/lang/Class;)Z
ifeq 9
3: aload 1
getstatic java.lang.reflect.Proxy$ProxyAccessHelper.PROXY_PERMISSION:Ljava/security/Permission;
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
4: goto 9
StackMap locals: java.lang.reflect.Proxy java.lang.SecurityManager java.lang.Class
StackMap stack: java.lang.SecurityException
5: astore 3
start local 3 6: new java.lang.SecurityException
dup
ldc "Not allowed to construct a Proxy instance that implements a non-public interface"
7: aload 3
8: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 9: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/lang/reflect/Proxy;
1 10 1 sm Ljava/lang/SecurityManager;
2 10 2 proxyClass Ljava/lang/Class<*>;
6 9 3 e Ljava/lang/SecurityException;
Exception table:
from to target type
3 4 5 Class java.lang.SecurityException
public static java.lang.Class<?> getProxyClass(java.lang.ClassLoader, java.lang.Class<?>[]);
descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
checkcast java.lang.Class[]
astore 2
start local 2 1: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 3
start local 3 2: aload 3
ifnull 4
3: invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
aload 0
aload 2
invokestatic java.lang.reflect.Proxy.checkProxyAccess:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
4: StackMap locals: java.lang.Class[] java.lang.SecurityManager
StackMap stack:
aload 0
aload 2
invokestatic java.lang.reflect.Proxy.getProxyClass0:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 loader Ljava/lang/ClassLoader;
0 5 1 interfaces [Ljava/lang/Class;
1 5 2 intfs [Ljava/lang/Class;
2 5 3 sm Ljava/lang/SecurityManager;
Exceptions:
throws java.lang.IllegalArgumentException
Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
RuntimeVisibleAnnotations:
sun.reflect.CallerSensitive()
MethodParameters:
Name Flags
loader
interfaces
private static void checkProxyAccess(java.lang.Class<?>, java.lang.ClassLoader, java.lang.Class<?>[]);
descriptor: (Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 3
start local 3 1: aload 3
ifnull 7
2: aload 0
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
astore 4
start local 4 3: aload 1
ifnonnull 6
aload 4
ifnull 6
4: getstatic java.lang.reflect.Proxy$ProxyAccessHelper.allowNullLoader:Z
ifne 6
5: aload 3
getstatic sun.security.util.SecurityConstants.GET_CLASSLOADER_PERMISSION:Ljava/lang/RuntimePermission;
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
6: StackMap locals: java.lang.SecurityManager java.lang.ClassLoader
StackMap stack:
aload 4
aload 2
invokestatic sun.reflect.misc.ReflectUtil.checkProxyPackageAccess:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
end local 4 7: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 caller Ljava/lang/Class<*>;
0 8 1 loader Ljava/lang/ClassLoader;
0 8 2 interfaces [Ljava/lang/Class;
1 8 3 sm Ljava/lang/SecurityManager;
3 7 4 ccl Ljava/lang/ClassLoader;
Signature: (Ljava/lang/Class<*>;Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)V
MethodParameters:
Name Flags
caller
loader
interfaces
private static java.lang.Class<?> getProxyClass0(java.lang.ClassLoader, java.lang.Class<?>[]);
descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
Code:
stack=6, locals=15, args_size=2
start local 0 start local 1 0: aload 1
arraylength
ldc 65535
if_icmple 2
1: new java.lang.IllegalArgumentException
dup
ldc "interface limit exceeded"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 3: aload 1
arraylength
anewarray java.lang.String
astore 3
start local 3 4: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 4
start local 4 5: iconst_0
istore 5
start local 5 6: goto 27
7: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set int
StackMap stack:
aload 1
iload 5
aaload
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
astore 6
start local 6 8: aconst_null
astore 7
start local 7 9: aload 6
iconst_0
aload 0
invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
astore 7
10: goto 12
StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set int java.lang.String java.lang.Class
StackMap stack: java.lang.ClassNotFoundException
11: pop
12: StackMap locals:
StackMap stack:
aload 7
aload 1
iload 5
aaload
if_acmpeq 16
13: new java.lang.IllegalArgumentException
dup
14: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 1
iload 5
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is not visible from class loader"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals:
StackMap stack:
aload 7
invokevirtual java.lang.Class.isInterface:()Z
ifne 20
17: new java.lang.IllegalArgumentException
dup
18: new java.lang.StringBuilder
dup
aload 7
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " is not an interface"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
aload 4
aload 7
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 24
21: new java.lang.IllegalArgumentException
dup
22: new java.lang.StringBuilder
dup
ldc "repeated interface: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 4
aload 7
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
25: aload 3
iload 5
aload 6
aastore
end local 7 end local 6 26: iinc 5 1
StackMap locals:
StackMap stack:
27: iload 5
aload 1
arraylength
if_icmplt 7
end local 5 28: aload 3
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
astore 5
start local 5 29: getstatic java.lang.reflect.Proxy.loaderToCache:Ljava/util/Map;
dup
astore 7
monitorenter
30: getstatic java.lang.reflect.Proxy.loaderToCache:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
astore 6
start local 6 31: aload 6
ifnonnull 34
32: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 6
33: getstatic java.lang.reflect.Proxy.loaderToCache:Ljava/util/Map;
aload 0
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
34: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map java.util.Map
StackMap stack:
aload 7
monitorexit
35: goto 38
end local 6 StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List top java.util.Map
StackMap stack: java.lang.Throwable
36: aload 7
monitorexit
37: athrow
start local 6 38: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map
StackMap stack:
aload 6
dup
astore 7
monitorenter
39: StackMap locals: java.util.Map
StackMap stack:
aload 6
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 8
start local 8 40: aload 8
instanceof java.lang.ref.Reference
ifeq 42
41: aload 8
checkcast java.lang.ref.Reference
invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
checkcast java.lang.Class
astore 2
42: StackMap locals: java.lang.Object
StackMap stack:
aload 2
ifnull 45
43: aload 2
aload 7
monitorexit
44: areturn
45: StackMap locals:
StackMap stack:
aload 8
getstatic java.lang.reflect.Proxy.pendingGenerationMarker:Ljava/lang/Object;
if_acmpne 50
46: aload 6
invokevirtual java.lang.Object.wait:()V
47: goto 39
StackMap locals:
StackMap stack: java.lang.InterruptedException
48: pop
49: goto 39
50: StackMap locals:
StackMap stack:
aload 6
aload 5
getstatic java.lang.reflect.Proxy.pendingGenerationMarker:Ljava/lang/Object;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 8 51: aload 7
monitorexit
52: goto 55
StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map java.util.Map
StackMap stack: java.lang.Throwable
53: aload 7
monitorexit
54: athrow
55: StackMap locals:
StackMap stack:
aconst_null
astore 7
start local 7 56: iconst_0
istore 8
start local 8 57: goto 73
58: StackMap locals: java.lang.String int
StackMap stack:
aload 1
iload 8
aaload
invokevirtual java.lang.Class.getModifiers:()I
istore 9
start local 9 59: iload 9
invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
ifne 72
60: aload 1
iload 8
aaload
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
astore 10
start local 10 61: aload 10
bipush 46
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 11
start local 11 62: iload 11
iconst_m1
if_icmpne 63
ldc ""
goto 64
StackMap locals: int java.lang.String int
StackMap stack:
63: aload 10
iconst_0
iload 11
iconst_1
iadd
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
StackMap locals:
StackMap stack: java.lang.String
64: astore 12
start local 12 65: aload 7
ifnonnull 68
66: aload 12
astore 7
67: goto 72
StackMap locals: java.lang.String
StackMap stack:
68: aload 12
aload 7
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 72
69: new java.lang.IllegalArgumentException
dup
70: ldc "non-public interfaces from different packages"
71: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 12 end local 11 end local 10 end local 9 72: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map java.lang.String int
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
73: iload 8
aload 1
arraylength
if_icmplt 58
end local 8 74: aload 7
ifnonnull 76
75: ldc "com.sun.proxy."
astore 7
76: StackMap locals:
StackMap stack:
getstatic java.lang.reflect.Proxy.nextUniqueNumberLock:Ljava/lang/Object;
dup
astore 10
monitorenter
77: getstatic java.lang.reflect.Proxy.nextUniqueNumber:J
dup2
lconst_1
ladd
putstatic java.lang.reflect.Proxy.nextUniqueNumber:J
lstore 8
start local 8 78: aload 10
monitorexit
79: goto 82
end local 8 StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map java.lang.String top top java.lang.Object
StackMap stack: java.lang.Throwable
80: aload 10
monitorexit
81: athrow
start local 8 82: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map java.lang.String long
StackMap stack:
new java.lang.StringBuilder
dup
aload 7
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "$Proxy"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 8
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 10
start local 10 83: aload 10
aload 1
84: invokestatic sun.misc.ProxyGenerator.generateProxyClass:(Ljava/lang/String;[Ljava/lang/Class;)[B
astore 11
start local 11 85: aload 0
aload 10
86: aload 11
iconst_0
aload 11
arraylength
87: invokestatic java.lang.reflect.Proxy.defineClass0:(Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;
astore 2
88: goto 91
StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map java.lang.String long java.lang.String byte[]
StackMap stack: java.lang.ClassFormatError
89: astore 12
start local 12 90: new java.lang.IllegalArgumentException
dup
aload 12
invokevirtual java.lang.ClassFormatError.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 12 end local 11 end local 10 end local 8 91: StackMap locals:
StackMap stack:
getstatic java.lang.reflect.Proxy.proxyClasses:Ljava/util/Map;
aload 2
aconst_null
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 7 92: goto 105
StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map
StackMap stack: java.lang.Throwable
93: astore 13
94: aload 6
dup
astore 14
monitorenter
95: aload 2
ifnull 98
96: aload 6
aload 5
new java.lang.ref.WeakReference
dup
aload 2
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
97: goto 99
98: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map top top top top top top java.lang.Throwable java.util.Map
StackMap stack:
aload 6
aload 5
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
99: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.lang.Object.notifyAll:()V
100: aload 14
monitorexit
101: goto 104
StackMap locals:
StackMap stack: java.lang.Throwable
102: aload 14
monitorexit
103: athrow
104: StackMap locals:
StackMap stack:
aload 13
athrow
105: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map
StackMap stack:
aload 6
dup
astore 14
monitorenter
106: aload 2
ifnull 109
107: aload 6
aload 5
new java.lang.ref.WeakReference
dup
aload 2
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
108: goto 110
109: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map top top top top top top top java.util.Map
StackMap stack:
aload 6
aload 5
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
110: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.lang.Object.notifyAll:()V
111: aload 14
monitorexit
112: goto 115
StackMap locals:
StackMap stack: java.lang.Throwable
113: aload 14
monitorexit
114: athrow
115: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.Class java.lang.String[] java.util.Set java.util.List java.util.Map
StackMap stack:
aload 2
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 116 0 loader Ljava/lang/ClassLoader;
0 116 1 interfaces [Ljava/lang/Class;
3 116 2 proxyClass Ljava/lang/Class;
4 116 3 interfaceNames [Ljava/lang/String;
5 116 4 interfaceSet Ljava/util/Set<Ljava/lang/Class<*>;>;
6 28 5 i I
8 26 6 interfaceName Ljava/lang/String;
9 26 7 interfaceClass Ljava/lang/Class;
29 116 5 key Ljava/util/List<Ljava/lang/String;>;
31 36 6 cache Ljava/util/Map<Ljava/util/List<Ljava/lang/String;>;Ljava/lang/Object;>;
38 116 6 cache Ljava/util/Map<Ljava/util/List<Ljava/lang/String;>;Ljava/lang/Object;>;
40 51 8 value Ljava/lang/Object;
56 92 7 proxyPkg Ljava/lang/String;
57 74 8 i I
59 72 9 flags I
61 72 10 name Ljava/lang/String;
62 72 11 n I
65 72 12 pkg Ljava/lang/String;
78 80 8 num J
82 91 8 num J
83 91 10 proxyName Ljava/lang/String;
85 91 11 proxyClassFile [B
90 91 12 e Ljava/lang/ClassFormatError;
Exception table:
from to target type
9 10 11 Class java.lang.ClassNotFoundException
30 35 36 any
36 37 36 any
46 47 48 Class java.lang.InterruptedException
39 44 53 any
45 52 53 any
53 54 53 any
77 79 80 any
80 81 80 any
85 88 89 Class java.lang.ClassFormatError
55 93 93 any
95 101 102 any
102 103 102 any
106 112 113 any
113 114 113 any
Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
MethodParameters:
Name Flags
loader
interfaces
public static newProxyInstance(java.lang.ClassLoader, java.lang.Class<?>[], java.lang.reflect.InvocationHandler);
descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 2
ifnonnull 2
1: new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
checkcast java.lang.Class[]
astore 3
start local 3 3: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 4
start local 4 4: aload 4
ifnull 6
5: invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
aload 0
aload 3
invokestatic java.lang.reflect.Proxy.checkProxyAccess:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
6: StackMap locals: java.lang.Class[] java.lang.SecurityManager
StackMap stack:
aload 0
aload 3
invokestatic java.lang.reflect.Proxy.getProxyClass0:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
astore 5
start local 5 7: aload 5
getstatic java.lang.reflect.Proxy.constructorParams:[Ljava/lang/Class;
invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
astore 6
start local 6 8: aload 2
astore 7
start local 7 9: aload 4
ifnull 12
aload 5
invokestatic java.lang.reflect.Proxy$ProxyAccessHelper.needsNewInstanceCheck:(Ljava/lang/Class;)Z
ifeq 12
10: new java.lang.reflect.Proxy$1
dup
aload 6
aload 7
invokespecial java.lang.reflect.Proxy$1.<init>:(Ljava/lang/reflect/Constructor;Ljava/lang/reflect/InvocationHandler;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
11: areturn
12: StackMap locals: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.InvocationHandler
StackMap stack:
aload 6
aload 7
invokestatic java.lang.reflect.Proxy.newInstance:(Ljava/lang/reflect/Constructor;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
13: areturn
end local 7 end local 6 14: StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.reflect.InvocationHandler java.lang.Class[] java.lang.SecurityManager java.lang.Class
StackMap stack: java.lang.NoSuchMethodException
astore 6
start local 6 15: new java.lang.InternalError
dup
aload 6
invokevirtual java.lang.NoSuchMethodException.toString:()Ljava/lang/String;
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
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 16 0 loader Ljava/lang/ClassLoader;
0 16 1 interfaces [Ljava/lang/Class;
0 16 2 h Ljava/lang/reflect/InvocationHandler;
3 16 3 intfs [Ljava/lang/Class;
4 16 4 sm Ljava/lang/SecurityManager;
7 16 5 cl Ljava/lang/Class<*>;
8 14 6 cons Ljava/lang/reflect/Constructor<*>;
9 14 7 ih Ljava/lang/reflect/InvocationHandler;
15 16 6 e Ljava/lang/NoSuchMethodException;
Exception table:
from to target type
7 11 14 Class java.lang.NoSuchMethodException
12 13 14 Class java.lang.NoSuchMethodException
Exceptions:
throws java.lang.IllegalArgumentException
Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
RuntimeVisibleAnnotations:
sun.reflect.CallerSensitive()
MethodParameters:
Name Flags
loader
interfaces
h
private static newInstance(java.lang.reflect.Constructor<?>, java.lang.reflect.InvocationHandler);
descriptor: (Ljava/lang/reflect/Constructor;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
1: areturn
2: StackMap locals:
StackMap stack: java.lang.IllegalAccessException
astore 2
start local 2 3: new java.lang.InternalError
dup
aload 2
invokevirtual java.lang.IllegalAccessException.toString:()Ljava/lang/String;
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
end local 2 4: StackMap locals:
StackMap stack: java.lang.InstantiationException
astore 2
start local 2 5: new java.lang.InternalError
dup
aload 2
invokevirtual java.lang.InstantiationException.toString:()Ljava/lang/String;
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
end local 2 6: StackMap locals:
StackMap stack: java.lang.reflect.InvocationTargetException
astore 2
start local 2 7: aload 2
invokevirtual java.lang.reflect.InvocationTargetException.getCause:()Ljava/lang/Throwable;
astore 3
start local 3 8: aload 3
instanceof java.lang.RuntimeException
ifeq 10
9: aload 3
checkcast java.lang.RuntimeException
athrow
10: StackMap locals: java.lang.reflect.InvocationTargetException java.lang.Throwable
StackMap stack:
new java.lang.InternalError
dup
aload 3
invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 cons Ljava/lang/reflect/Constructor<*>;
0 11 1 h Ljava/lang/reflect/InvocationHandler;
3 4 2 e Ljava/lang/IllegalAccessException;
5 6 2 e Ljava/lang/InstantiationException;
7 11 2 e Ljava/lang/reflect/InvocationTargetException;
8 11 3 t Ljava/lang/Throwable;
Exception table:
from to target type
0 1 2 Class java.lang.IllegalAccessException
0 1 4 Class java.lang.InstantiationException
0 1 6 Class java.lang.reflect.InvocationTargetException
Signature: (Ljava/lang/reflect/Constructor<*>;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
MethodParameters:
Name Flags
cons
h
public static boolean isProxyClass(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ifnonnull 2
1: new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
getstatic java.lang.reflect.Proxy.proxyClasses:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 cl Ljava/lang/Class<*>;
Signature: (Ljava/lang/Class<*>;)Z
MethodParameters:
Name Flags
cl
public static java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object);
descriptor: (Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokestatic java.lang.reflect.Proxy.isProxyClass:(Ljava/lang/Class;)Z
ifne 2
1: new java.lang.IllegalArgumentException
dup
ldc "not a proxy instance"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
checkcast java.lang.reflect.Proxy
astore 1
start local 1 3: aload 1
getfield java.lang.reflect.Proxy.h:Ljava/lang/reflect/InvocationHandler;
astore 2
start local 2 4: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
ifnull 12
5: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
astore 3
start local 3 6: invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
astore 4
start local 4 7: aload 4
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
8: aload 3
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
9: invokestatic sun.reflect.misc.ReflectUtil.needsPackageAccessCheck:(Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z
10: ifeq 12
11: aload 3
invokestatic sun.reflect.misc.ReflectUtil.checkPackageAccess:(Ljava/lang/Class;)V
end local 4 end local 3 12: StackMap locals: java.lang.reflect.Proxy java.lang.reflect.InvocationHandler
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 proxy Ljava/lang/Object;
3 13 1 p Ljava/lang/reflect/Proxy;
4 13 2 ih Ljava/lang/reflect/InvocationHandler;
6 12 3 ihClass Ljava/lang/Class<*>;
7 12 4 caller Ljava/lang/Class<*>;
Exceptions:
throws java.lang.IllegalArgumentException
RuntimeVisibleAnnotations:
sun.reflect.CallerSensitive()
MethodParameters:
Name Flags
proxy
private static native java.lang.Class defineClass0(java.lang.ClassLoader, java.lang.String, byte[], int, int);
descriptor: (Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
loader
name
b
off
len
}
SourceFile: "Proxy.java"
NestMembers:
java.lang.reflect.Proxy$1 java.lang.reflect.Proxy$ProxyAccessHelper java.lang.reflect.Proxy$ProxyAccessHelper$1
InnerClasses:
java.lang.reflect.Proxy$1
private ProxyAccessHelper = java.lang.reflect.Proxy$ProxyAccessHelper of java.lang.reflect.Proxy