class net.sf.cglib.proxy.MethodInterceptorGenerator implements net.sf.cglib.proxy.CallbackGenerator
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: net.sf.cglib.proxy.MethodInterceptorGenerator
super_class: java.lang.Object
{
public static final net.sf.cglib.proxy.MethodInterceptorGenerator INSTANCE;
descriptor: Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
static final java.lang.String EMPTY_ARGS_NAME;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "CGLIB$emptyArgs"
static final java.lang.String FIND_PROXY_NAME;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "CGLIB$findMethodProxy"
static final java.lang.Class[] FIND_PROXY_TYPES;
descriptor: [Ljava/lang/Class;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final org.objectweb.asm.Type ABSTRACT_METHOD_ERROR;
descriptor: Lorg/objectweb/asm/Type;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.objectweb.asm.Type METHOD;
descriptor: Lorg/objectweb/asm/Type;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.objectweb.asm.Type REFLECT_UTILS;
descriptor: Lorg/objectweb/asm/Type;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.objectweb.asm.Type METHOD_PROXY;
descriptor: Lorg/objectweb/asm/Type;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.objectweb.asm.Type METHOD_INTERCEPTOR;
descriptor: Lorg/objectweb/asm/Type;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature GET_DECLARED_METHODS;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature GET_DECLARING_CLASS;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature FIND_METHODS;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature MAKE_PROXY;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature INTERCEPT;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature FIND_PROXY;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature TO_STRING;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Transformer METHOD_TO_CLASS;
descriptor: Lnet/sf/cglib/core/Transformer;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final net.sf.cglib.core.Signature CSTRUCT_SIGNATURE;
descriptor: Lnet/sf/cglib/core/Signature;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=8, locals=0, args_size=0
0: new net.sf.cglib.proxy.MethodInterceptorGenerator
dup
invokespecial net.sf.cglib.proxy.MethodInterceptorGenerator.<init>:()V
putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.INSTANCE:Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
1: iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Lnet/sf/cglib/core/Signature;
aastore
putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.FIND_PROXY_TYPES:[Ljava/lang/Class;
2: ldc "AbstractMethodError"
invokestatic net.sf.cglib.core.TypeUtils.parseType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
3: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.ABSTRACT_METHOD_ERROR:Lorg/objectweb/asm/Type;
4: ldc "java.lang.reflect.Method"
invokestatic net.sf.cglib.core.TypeUtils.parseType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
5: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD:Lorg/objectweb/asm/Type;
6: ldc "net.sf.cglib.core.ReflectUtils"
invokestatic net.sf.cglib.core.TypeUtils.parseType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
7: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.REFLECT_UTILS:Lorg/objectweb/asm/Type;
8: ldc "net.sf.cglib.proxy.MethodProxy"
invokestatic net.sf.cglib.core.TypeUtils.parseType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
9: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_PROXY:Lorg/objectweb/asm/Type;
10: ldc "net.sf.cglib.proxy.MethodInterceptor"
invokestatic net.sf.cglib.core.TypeUtils.parseType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
11: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_INTERCEPTOR:Lorg/objectweb/asm/Type;
12: ldc "java.lang.reflect.Method[] getDeclaredMethods()"
invokestatic net.sf.cglib.core.TypeUtils.parseSignature:(Ljava/lang/String;)Lnet/sf/cglib/core/Signature;
13: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.GET_DECLARED_METHODS:Lnet/sf/cglib/core/Signature;
14: ldc "Class getDeclaringClass()"
invokestatic net.sf.cglib.core.TypeUtils.parseSignature:(Ljava/lang/String;)Lnet/sf/cglib/core/Signature;
15: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.GET_DECLARING_CLASS:Lnet/sf/cglib/core/Signature;
16: ldc "java.lang.reflect.Method[] findMethods(String[], java.lang.reflect.Method[])"
invokestatic net.sf.cglib.core.TypeUtils.parseSignature:(Ljava/lang/String;)Lnet/sf/cglib/core/Signature;
17: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.FIND_METHODS:Lnet/sf/cglib/core/Signature;
18: new net.sf.cglib.core.Signature
dup
ldc "create"
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_PROXY:Lorg/objectweb/asm/Type;
iconst_5
anewarray org.objectweb.asm.Type
dup
iconst_0
19: getstatic net.sf.cglib.core.Constants.TYPE_CLASS:Lorg/objectweb/asm/Type;
aastore
dup
iconst_1
20: getstatic net.sf.cglib.core.Constants.TYPE_CLASS:Lorg/objectweb/asm/Type;
aastore
dup
iconst_2
21: getstatic net.sf.cglib.core.Constants.TYPE_STRING:Lorg/objectweb/asm/Type;
aastore
dup
iconst_3
22: getstatic net.sf.cglib.core.Constants.TYPE_STRING:Lorg/objectweb/asm/Type;
aastore
dup
iconst_4
23: getstatic net.sf.cglib.core.Constants.TYPE_STRING:Lorg/objectweb/asm/Type;
aastore
24: invokespecial net.sf.cglib.core.Signature.<init>:(Ljava/lang/String;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)V
25: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.MAKE_PROXY:Lnet/sf/cglib/core/Signature;
26: new net.sf.cglib.core.Signature
dup
ldc "intercept"
getstatic net.sf.cglib.core.Constants.TYPE_OBJECT:Lorg/objectweb/asm/Type;
iconst_4
anewarray org.objectweb.asm.Type
dup
iconst_0
27: getstatic net.sf.cglib.core.Constants.TYPE_OBJECT:Lorg/objectweb/asm/Type;
aastore
dup
iconst_1
28: getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD:Lorg/objectweb/asm/Type;
aastore
dup
iconst_2
29: getstatic net.sf.cglib.core.Constants.TYPE_OBJECT_ARRAY:Lorg/objectweb/asm/Type;
aastore
dup
iconst_3
30: getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_PROXY:Lorg/objectweb/asm/Type;
aastore
31: invokespecial net.sf.cglib.core.Signature.<init>:(Ljava/lang/String;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)V
32: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.INTERCEPT:Lnet/sf/cglib/core/Signature;
33: new net.sf.cglib.core.Signature
dup
ldc "CGLIB$findMethodProxy"
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_PROXY:Lorg/objectweb/asm/Type;
iconst_1
anewarray org.objectweb.asm.Type
dup
iconst_0
getstatic net.sf.cglib.core.Constants.TYPE_SIGNATURE:Lorg/objectweb/asm/Type;
aastore
invokespecial net.sf.cglib.core.Signature.<init>:(Ljava/lang/String;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)V
34: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.FIND_PROXY:Lnet/sf/cglib/core/Signature;
35: ldc "String toString()"
invokestatic net.sf.cglib.core.TypeUtils.parseSignature:(Ljava/lang/String;)Lnet/sf/cglib/core/Signature;
36: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.TO_STRING:Lnet/sf/cglib/core/Signature;
37: new net.sf.cglib.proxy.MethodInterceptorGenerator$1
dup
invokespecial net.sf.cglib.proxy.MethodInterceptorGenerator$1.<init>:()V
putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_TO_CLASS:Lnet/sf/cglib/core/Transformer;
38: ldc "String, String"
invokestatic net.sf.cglib.core.TypeUtils.parseConstructor:(Ljava/lang/String;)Lnet/sf/cglib/core/Signature;
39: putstatic net.sf.cglib.proxy.MethodInterceptorGenerator.CSTRUCT_SIGNATURE:Lnet/sf/cglib/core/Signature;
40: return
LocalVariableTable:
Start End Slot Name Signature
void <init>();
descriptor: ()V
flags: (0x0000)
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 Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
private java.lang.String getMethodField(net.sf.cglib.core.Signature);
descriptor: (Lnet/sf/cglib/core/Signature;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
aload 1
invokevirtual net.sf.cglib.core.Signature.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 "$Method"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
0 1 1 impl Lnet/sf/cglib/core/Signature;
MethodParameters:
Name Flags
impl
private java.lang.String getMethodProxyField(net.sf.cglib.core.Signature);
descriptor: (Lnet/sf/cglib/core/Signature;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
aload 1
invokevirtual net.sf.cglib.core.Signature.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 "$Proxy"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
0 1 1 impl Lnet/sf/cglib/core/Signature;
MethodParameters:
Name Flags
impl
public void generate(net.sf.cglib.core.ClassEmitter, net.sf.cglib.proxy.CallbackGenerator$Context, java.util.List);
descriptor: (Lnet/sf/cglib/core/ClassEmitter;Lnet/sf/cglib/proxy/CallbackGenerator$Context;Ljava/util/List;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 4
start local 4 1: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
start local 5 2: goto 38
3: StackMap locals: java.util.Map java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast net.sf.cglib.core.MethodInfo
astore 6
start local 6 4: aload 6
invokevirtual net.sf.cglib.core.MethodInfo.getSignature:()Lnet/sf/cglib/core/Signature;
astore 7
start local 7 5: aload 2
aload 6
invokeinterface net.sf.cglib.proxy.CallbackGenerator$Context.getImplSignature:(Lnet/sf/cglib/core/MethodInfo;)Lnet/sf/cglib/core/Signature;
astore 8
start local 8 6: aload 0
aload 8
invokevirtual net.sf.cglib.proxy.MethodInterceptorGenerator.getMethodField:(Lnet/sf/cglib/core/Signature;)Ljava/lang/String;
astore 9
start local 9 7: aload 0
aload 8
invokevirtual net.sf.cglib.proxy.MethodInterceptorGenerator.getMethodProxyField:(Lnet/sf/cglib/core/Signature;)Ljava/lang/String;
astore 10
start local 10 8: aload 4
aload 7
invokevirtual net.sf.cglib.core.Signature.toString:()Ljava/lang/String;
aload 10
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: aload 1
bipush 26
aload 9
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD:Lorg/objectweb/asm/Type;
aconst_null
invokevirtual net.sf.cglib.core.ClassEmitter.declare_field:(ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
10: aload 1
bipush 26
aload 10
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_PROXY:Lorg/objectweb/asm/Type;
aconst_null
invokevirtual net.sf.cglib.core.ClassEmitter.declare_field:(ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
11: aload 1
bipush 26
ldc "CGLIB$emptyArgs"
getstatic net.sf.cglib.core.Constants.TYPE_OBJECT_ARRAY:Lorg/objectweb/asm/Type;
aconst_null
invokevirtual net.sf.cglib.core.ClassEmitter.declare_field:(ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
12: aload 1
bipush 16
13: aload 8
14: aload 6
invokevirtual net.sf.cglib.core.MethodInfo.getExceptionTypes:()[Lorg/objectweb/asm/Type;
15: invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
astore 11
start local 11 16: aload 11
aload 6
aload 2
invokestatic net.sf.cglib.proxy.MethodInterceptorGenerator.superHelper:(Lnet/sf/cglib/core/CodeEmitter;Lnet/sf/cglib/core/MethodInfo;Lnet/sf/cglib/proxy/CallbackGenerator$Context;)V
17: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
18: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
19: aload 2
aload 1
aload 6
invokeinterface net.sf.cglib.proxy.CallbackGenerator$Context.beginMethod:(Lnet/sf/cglib/core/ClassEmitter;Lnet/sf/cglib/core/MethodInfo;)Lnet/sf/cglib/core/CodeEmitter;
astore 11
20: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.make_label:()Lorg/objectweb/asm/Label;
astore 12
start local 12 21: aload 2
aload 11
aload 2
aload 6
invokeinterface net.sf.cglib.proxy.CallbackGenerator$Context.getIndex:(Lnet/sf/cglib/core/MethodInfo;)I
invokeinterface net.sf.cglib.proxy.CallbackGenerator$Context.emitCallback:(Lnet/sf/cglib/core/CodeEmitter;I)V
22: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
23: aload 11
aload 12
invokevirtual net.sf.cglib.core.CodeEmitter.ifnull:(Lorg/objectweb/asm/Label;)V
24: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
25: aload 11
aload 9
invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
26: aload 7
invokevirtual net.sf.cglib.core.Signature.getArgumentTypes:()[Lorg/objectweb/asm/Type;
arraylength
ifne 29
27: aload 11
ldc "CGLIB$emptyArgs"
invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
28: goto 30
29: StackMap locals: net.sf.cglib.proxy.MethodInterceptorGenerator net.sf.cglib.core.ClassEmitter net.sf.cglib.proxy.CallbackGenerator$Context java.util.List java.util.Map java.util.Iterator net.sf.cglib.core.MethodInfo net.sf.cglib.core.Signature net.sf.cglib.core.Signature java.lang.String java.lang.String net.sf.cglib.core.CodeEmitter org.objectweb.asm.Label
StackMap stack:
aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.create_arg_array:()V
30: StackMap locals:
StackMap stack:
aload 11
aload 10
invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
31: aload 11
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_INTERCEPTOR:Lorg/objectweb/asm/Type;
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.INTERCEPT:Lnet/sf/cglib/core/Signature;
invokevirtual net.sf.cglib.core.CodeEmitter.invoke_interface:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
32: aload 11
aload 7
invokevirtual net.sf.cglib.core.Signature.getReturnType:()Lorg/objectweb/asm/Type;
invokevirtual net.sf.cglib.core.CodeEmitter.unbox_or_zero:(Lorg/objectweb/asm/Type;)V
33: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
34: aload 11
aload 12
invokevirtual net.sf.cglib.core.CodeEmitter.mark:(Lorg/objectweb/asm/Label;)V
35: aload 11
aload 6
aload 2
invokestatic net.sf.cglib.proxy.MethodInterceptorGenerator.superHelper:(Lnet/sf/cglib/core/CodeEmitter;Lnet/sf/cglib/core/MethodInfo;Lnet/sf/cglib/proxy/CallbackGenerator$Context;)V
36: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
37: aload 11
invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 38: StackMap locals: net.sf.cglib.proxy.MethodInterceptorGenerator net.sf.cglib.core.ClassEmitter net.sf.cglib.proxy.CallbackGenerator$Context java.util.List java.util.Map java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 5 39: aload 0
aload 1
aload 4
invokevirtual net.sf.cglib.proxy.MethodInterceptorGenerator.generateFindProxy:(Lnet/sf/cglib/core/ClassEmitter;Ljava/util/Map;)V
40: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
0 41 1 ce Lnet/sf/cglib/core/ClassEmitter;
0 41 2 context Lnet/sf/cglib/proxy/CallbackGenerator$Context;
0 41 3 methods Ljava/util/List;
1 41 4 sigMap Ljava/util/Map;
2 39 5 it Ljava/util/Iterator;
4 38 6 method Lnet/sf/cglib/core/MethodInfo;
5 38 7 sig Lnet/sf/cglib/core/Signature;
6 38 8 impl Lnet/sf/cglib/core/Signature;
7 38 9 methodField Ljava/lang/String;
8 38 10 methodProxyField Ljava/lang/String;
16 38 11 e Lnet/sf/cglib/core/CodeEmitter;
21 38 12 nullInterceptor Lorg/objectweb/asm/Label;
MethodParameters:
Name Flags
ce
context
methods
private static void superHelper(net.sf.cglib.core.CodeEmitter, net.sf.cglib.core.MethodInfo, net.sf.cglib.proxy.CallbackGenerator$Context);
descriptor: (Lnet/sf/cglib/core/CodeEmitter;Lnet/sf/cglib/core/MethodInfo;Lnet/sf/cglib/proxy/CallbackGenerator$Context;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual net.sf.cglib.core.MethodInfo.getModifiers:()I
invokestatic net.sf.cglib.core.TypeUtils.isAbstract:(I)Z
ifeq 3
1: aload 0
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.ABSTRACT_METHOD_ERROR:Lorg/objectweb/asm/Type;
new java.lang.StringBuilder
dup
aload 1
invokevirtual net.sf.cglib.core.MethodInfo.toString:()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 abstract"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.throw_exception:(Lorg/objectweb/asm/Type;Ljava/lang/String;)V
2: goto 5
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
4: aload 2
aload 0
aload 1
invokeinterface net.sf.cglib.proxy.CallbackGenerator$Context.emitLoadArgsAndInvoke:(Lnet/sf/cglib/core/CodeEmitter;Lnet/sf/cglib/core/MethodInfo;)V
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 e Lnet/sf/cglib/core/CodeEmitter;
0 6 1 method Lnet/sf/cglib/core/MethodInfo;
0 6 2 context Lnet/sf/cglib/proxy/CallbackGenerator$Context;
MethodParameters:
Name Flags
e
method
context
public void generateStatic(net.sf.cglib.core.CodeEmitter, net.sf.cglib.proxy.CallbackGenerator$Context, java.util.List);
descriptor: (Lnet/sf/cglib/core/CodeEmitter;Lnet/sf/cglib/proxy/CallbackGenerator$Context;Ljava/util/List;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
iconst_0
invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
1: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.newarray:()V
2: aload 1
ldc "CGLIB$emptyArgs"
invokevirtual net.sf.cglib.core.CodeEmitter.putfield:(Ljava/lang/String;)V
3: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.make_local:()Lnet/sf/cglib/core/Local;
astore 4
start local 4 4: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.make_local:()Lnet/sf/cglib/core/Local;
astore 5
start local 5 5: aload 1
invokestatic net.sf.cglib.core.EmitUtils.load_class_this:(Lnet/sf/cglib/core/CodeEmitter;)V
6: aload 1
aload 4
invokevirtual net.sf.cglib.core.CodeEmitter.store_local:(Lnet/sf/cglib/core/Local;)V
7: aload 3
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_TO_CLASS:Lnet/sf/cglib/core/Transformer;
invokestatic net.sf.cglib.core.CollectionUtils.bucket:(Ljava/util/Collection;Lnet/sf/cglib/core/Transformer;)Ljava/util/Map;
astore 6
start local 6 8: aload 6
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 7
start local 7 9: goto 52
10: StackMap locals: net.sf.cglib.proxy.MethodInterceptorGenerator net.sf.cglib.core.CodeEmitter net.sf.cglib.proxy.CallbackGenerator$Context java.util.List net.sf.cglib.core.Local net.sf.cglib.core.Local java.util.Map java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast net.sf.cglib.core.ClassInfo
astore 8
start local 8 11: aload 6
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 9
start local 9 12: aload 1
iconst_2
aload 9
invokeinterface java.util.List.size:()I
imul
invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
13: aload 1
getstatic net.sf.cglib.core.Constants.TYPE_STRING:Lorg/objectweb/asm/Type;
invokevirtual net.sf.cglib.core.CodeEmitter.newarray:(Lorg/objectweb/asm/Type;)V
14: iconst_0
istore 10
start local 10 15: goto 27
16: StackMap locals: net.sf.cglib.core.ClassInfo java.util.List int
StackMap stack:
aload 9
iload 10
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast net.sf.cglib.core.MethodInfo
astore 11
start local 11 17: aload 11
invokevirtual net.sf.cglib.core.MethodInfo.getSignature:()Lnet/sf/cglib/core/Signature;
astore 12
start local 12 18: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
19: aload 1
iconst_2
iload 10
imul
invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
20: aload 1
aload 12
invokevirtual net.sf.cglib.core.Signature.getName:()Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.push:(Ljava/lang/String;)V
21: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.aastore:()V
22: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
23: aload 1
iconst_2
iload 10
imul
iconst_1
iadd
invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
24: aload 1
aload 12
invokevirtual net.sf.cglib.core.Signature.getDescriptor:()Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.push:(Ljava/lang/String;)V
25: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.aastore:()V
end local 12 end local 11 26: iinc 10 1
StackMap locals:
StackMap stack:
27: iload 10
aload 9
invokeinterface java.util.List.size:()I
if_icmplt 16
end local 10 28: aload 1
aload 8
invokevirtual net.sf.cglib.core.ClassInfo.getType:()Lorg/objectweb/asm/Type;
invokestatic net.sf.cglib.core.EmitUtils.load_class:(Lnet/sf/cglib/core/CodeEmitter;Lorg/objectweb/asm/Type;)V
29: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
30: aload 1
aload 5
invokevirtual net.sf.cglib.core.CodeEmitter.store_local:(Lnet/sf/cglib/core/Local;)V
31: aload 1
getstatic net.sf.cglib.core.Constants.TYPE_CLASS:Lorg/objectweb/asm/Type;
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.GET_DECLARED_METHODS:Lnet/sf/cglib/core/Signature;
invokevirtual net.sf.cglib.core.CodeEmitter.invoke_virtual:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
32: aload 1
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.REFLECT_UTILS:Lorg/objectweb/asm/Type;
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.FIND_METHODS:Lnet/sf/cglib/core/Signature;
invokevirtual net.sf.cglib.core.CodeEmitter.invoke_static:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
33: iconst_0
istore 10
start local 10 34: goto 50
35: StackMap locals:
StackMap stack:
aload 9
iload 10
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast net.sf.cglib.core.MethodInfo
astore 11
start local 11 36: aload 11
invokevirtual net.sf.cglib.core.MethodInfo.getSignature:()Lnet/sf/cglib/core/Signature;
astore 12
start local 12 37: aload 2
aload 11
invokeinterface net.sf.cglib.proxy.CallbackGenerator$Context.getImplSignature:(Lnet/sf/cglib/core/MethodInfo;)Lnet/sf/cglib/core/Signature;
astore 13
start local 13 38: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
39: aload 1
iload 10
invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
40: aload 1
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD:Lorg/objectweb/asm/Type;
invokevirtual net.sf.cglib.core.CodeEmitter.array_load:(Lorg/objectweb/asm/Type;)V
41: aload 1
aload 0
aload 13
invokevirtual net.sf.cglib.proxy.MethodInterceptorGenerator.getMethodField:(Lnet/sf/cglib/core/Signature;)Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.putfield:(Ljava/lang/String;)V
42: aload 1
aload 5
invokevirtual net.sf.cglib.core.CodeEmitter.load_local:(Lnet/sf/cglib/core/Local;)V
43: aload 1
aload 4
invokevirtual net.sf.cglib.core.CodeEmitter.load_local:(Lnet/sf/cglib/core/Local;)V
44: aload 1
aload 12
invokevirtual net.sf.cglib.core.Signature.getDescriptor:()Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.push:(Ljava/lang/String;)V
45: aload 1
aload 12
invokevirtual net.sf.cglib.core.Signature.getName:()Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.push:(Ljava/lang/String;)V
46: aload 1
aload 13
invokevirtual net.sf.cglib.core.Signature.getName:()Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.push:(Ljava/lang/String;)V
47: aload 1
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.METHOD_PROXY:Lorg/objectweb/asm/Type;
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.MAKE_PROXY:Lnet/sf/cglib/core/Signature;
invokevirtual net.sf.cglib.core.CodeEmitter.invoke_static:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
48: aload 1
aload 0
aload 13
invokevirtual net.sf.cglib.proxy.MethodInterceptorGenerator.getMethodProxyField:(Lnet/sf/cglib/core/Signature;)Ljava/lang/String;
invokevirtual net.sf.cglib.core.CodeEmitter.putfield:(Ljava/lang/String;)V
end local 13 end local 12 end local 11 49: iinc 10 1
StackMap locals:
StackMap stack:
50: iload 10
aload 9
invokeinterface java.util.List.size:()I
if_icmplt 35
end local 10 51: aload 1
invokevirtual net.sf.cglib.core.CodeEmitter.pop:()V
end local 9 end local 8 52: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
end local 7 53: return
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 54 0 this Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
0 54 1 e Lnet/sf/cglib/core/CodeEmitter;
0 54 2 context Lnet/sf/cglib/proxy/CallbackGenerator$Context;
0 54 3 methods Ljava/util/List;
4 54 4 thisclass Lnet/sf/cglib/core/Local;
5 54 5 declaringclass Lnet/sf/cglib/core/Local;
8 54 6 methodsByClass Ljava/util/Map;
9 53 7 i Ljava/util/Iterator;
11 52 8 classInfo Lnet/sf/cglib/core/ClassInfo;
12 52 9 classMethods Ljava/util/List;
15 28 10 index I
17 26 11 method Lnet/sf/cglib/core/MethodInfo;
18 26 12 sig Lnet/sf/cglib/core/Signature;
34 51 10 index I
36 49 11 method Lnet/sf/cglib/core/MethodInfo;
37 49 12 sig Lnet/sf/cglib/core/Signature;
38 49 13 impl Lnet/sf/cglib/core/Signature;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
e
context
methods
public void generateFindProxy(net.sf.cglib.core.ClassEmitter, java.util.Map);
descriptor: (Lnet/sf/cglib/core/ClassEmitter;Ljava/util/Map;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
bipush 9
1: getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.FIND_PROXY:Lnet/sf/cglib/core/Signature;
2: aconst_null
3: invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
astore 3
start local 3 4: aload 3
iconst_0
invokevirtual net.sf.cglib.core.CodeEmitter.load_arg:(I)V
5: aload 3
getstatic net.sf.cglib.core.Constants.TYPE_OBJECT:Lorg/objectweb/asm/Type;
getstatic net.sf.cglib.proxy.MethodInterceptorGenerator.TO_STRING:Lnet/sf/cglib/core/Signature;
invokevirtual net.sf.cglib.core.CodeEmitter.invoke_virtual:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
6: new net.sf.cglib.proxy.MethodInterceptorGenerator$2
dup
aload 0
aload 3
aload 2
invokespecial net.sf.cglib.proxy.MethodInterceptorGenerator$2.<init>:(Lnet/sf/cglib/proxy/MethodInterceptorGenerator;Lnet/sf/cglib/core/CodeEmitter;Ljava/util/Map;)V
astore 4
start local 4 7: aload 3
8: aload 2
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
iconst_0
anewarray java.lang.String
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.lang.String[]
9: iconst_1
10: aload 4
11: invokestatic net.sf.cglib.core.EmitUtils.string_switch:(Lnet/sf/cglib/core/CodeEmitter;[Ljava/lang/String;ILnet/sf/cglib/core/ObjectSwitchCallback;)V
12: aload 3
invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
13: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lnet/sf/cglib/proxy/MethodInterceptorGenerator;
0 14 1 ce Lnet/sf/cglib/core/ClassEmitter;
0 14 2 sigMap Ljava/util/Map;
4 14 3 e Lnet/sf/cglib/core/CodeEmitter;
7 14 4 callback Lnet/sf/cglib/core/ObjectSwitchCallback;
MethodParameters:
Name Flags
ce
sigMap final
}
SourceFile: "MethodInterceptorGenerator.java"
NestMembers:
net.sf.cglib.proxy.MethodInterceptorGenerator$1 net.sf.cglib.proxy.MethodInterceptorGenerator$2
InnerClasses:
public abstract Context = net.sf.cglib.proxy.CallbackGenerator$Context of net.sf.cglib.proxy.CallbackGenerator
net.sf.cglib.proxy.MethodInterceptorGenerator$1
net.sf.cglib.proxy.MethodInterceptorGenerator$2