class net.sf.cglib.reflect.FastClassEmitter extends net.sf.cglib.core.ClassEmitter
{
private static final net.sf.cglib.core.Signature CSTRUCT_CLASS;
private static final net.sf.cglib.core.Signature METHOD_GET_INDEX;
private static final net.sf.cglib.core.Signature SIGNATURE_GET_INDEX;
private static final net.sf.cglib.core.Signature TO_STRING;
private static final net.sf.cglib.core.Signature CONSTRUCTOR_GET_INDEX;
private static final net.sf.cglib.core.Signature INVOKE;
private static final net.sf.cglib.core.Signature NEW_INSTANCE;
private static final net.sf.cglib.core.Signature GET_MAX_INDEX;
private static final net.sf.cglib.core.Signature GET_SIGNATURE_WITHOUT_RETURN_TYPE;
private static final net.sf.cglib.asm.$Type FAST_CLASS;
private static final net.sf.cglib.asm.$Type ILLEGAL_ARGUMENT_EXCEPTION;
private static final net.sf.cglib.asm.$Type INVOCATION_TARGET_EXCEPTION;
private static final net.sf.cglib.asm.$Type[] INVOCATION_TARGET_EXCEPTION_ARRAY;
private static final int TOO_MANY_METHODS;
public void <init>(net.sf.cglib.asm.$ClassVisitor, java.lang.String, java.lang.Class)
{
net.sf.cglib.asm.$Type[] v, v;
net.sf.cglib.reflect.FastClassEmitter$GetIndexCallback v;
java.util.ArrayList v, v;
java.lang.reflect.Constructor[] v;
net.sf.cglib.core.Signature v, v, v, v, v, v;
int v, v;
java.lang.String v;
net.sf.cglib.core.MethodInfoTransformer v;
net.sf.cglib.core.VisibilityPredicate v;
net.sf.cglib.asm.$Type v, v;
java.util.List v, v, v;
net.sf.cglib.core.DuplicatesPredicate v;
java.lang.Class v;
net.sf.cglib.reflect.FastClassEmitter v;
net.sf.cglib.asm.$ClassVisitor v;
net.sf.cglib.core.CodeEmitter v, v, v, v, v;
v := @this: net.sf.cglib.reflect.FastClassEmitter;
v := @parameter: net.sf.cglib.asm.$ClassVisitor;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class;
specialinvoke v.<net.sf.cglib.core.ClassEmitter: void <init>(net.sf.cglib.asm.$ClassVisitor)>(v);
v = staticinvoke <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type getType(java.lang.Class)>(v);
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type FAST_CLASS>;
virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: void begin_class(int,int,java.lang.String,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type[],java.lang.String)>(52, 1, v, v, null, "<generated>");
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature CSTRUCT_CLASS>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_args()>();
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature CSTRUCT_CLASS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void super_invoke_constructor(net.sf.cglib.core.Signature)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
v = new net.sf.cglib.core.VisibilityPredicate;
specialinvoke v.<net.sf.cglib.core.VisibilityPredicate: void <init>(java.lang.Class,boolean)>(v, 0);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = staticinvoke <net.sf.cglib.core.ReflectUtils: java.util.List addAllMethods(java.lang.Class,java.util.List)>(v, v);
staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.Collection filter(java.util.Collection,net.sf.cglib.core.Predicate)>(v, v);
v = new net.sf.cglib.core.DuplicatesPredicate;
specialinvoke v.<net.sf.cglib.core.DuplicatesPredicate: void <init>()>();
staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.Collection filter(java.util.Collection,net.sf.cglib.core.Predicate)>(v, v);
v = new java.util.ArrayList;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor[] getDeclaredConstructors()>();
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.Collection filter(java.util.Collection,net.sf.cglib.core.Predicate)>(v, v);
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter: void emitIndexBySignature(java.util.List)>(v);
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter: void emitIndexByClassArray(java.util.List)>(v);
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature CONSTRUCTOR_GET_INDEX>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_args()>();
v = staticinvoke <net.sf.cglib.core.MethodInfoTransformer: net.sf.cglib.core.MethodInfoTransformer getInstance()>();
v = staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.List transform(java.util.Collection,net.sf.cglib.core.Transformer)>(v, v);
v = new net.sf.cglib.reflect.FastClassEmitter$GetIndexCallback;
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter$GetIndexCallback: void <init>(net.sf.cglib.core.CodeEmitter,java.util.List)>(v, v);
staticinvoke <net.sf.cglib.core.EmitUtils: void constructor_switch(net.sf.cglib.core.CodeEmitter,java.util.List,net.sf.cglib.core.ObjectSwitchCallback)>(v, v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature INVOKE>;
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type[] INVOCATION_TARGET_EXCEPTION_ARRAY>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(1);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void checkcast(net.sf.cglib.asm.$Type)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
staticinvoke <net.sf.cglib.reflect.FastClassEmitter: void invokeSwitchHelper(net.sf.cglib.core.CodeEmitter,java.util.List,int,net.sf.cglib.asm.$Type)>(v, v, 2, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature NEW_INSTANCE>;
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type[] INVOCATION_TARGET_EXCEPTION_ARRAY>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void new_instance(net.sf.cglib.asm.$Type)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
staticinvoke <net.sf.cglib.reflect.FastClassEmitter: void invokeSwitchHelper(net.sf.cglib.core.CodeEmitter,java.util.List,int,net.sf.cglib.asm.$Type)>(v, v, 1, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature GET_MAX_INDEX>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
v = interfaceinvoke v.<java.util.List: int size()>();
v = v - 1;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: void end_class()>();
return;
}
private void emitIndexBySignature(java.util.List)
{
net.sf.cglib.reflect.FastClassEmitter$1 v;
net.sf.cglib.asm.$Type v;
java.util.List v, v;
net.sf.cglib.core.Signature v, v;
net.sf.cglib.reflect.FastClassEmitter v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.reflect.FastClassEmitter;
v := @parameter: java.util.List;
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature SIGNATURE_GET_INDEX>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
v = new net.sf.cglib.reflect.FastClassEmitter$1;
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter$1: void <init>(net.sf.cglib.reflect.FastClassEmitter)>(v);
v = staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.List transform(java.util.Collection,net.sf.cglib.core.Transformer)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_OBJECT>;
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature TO_STRING>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_virtual(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter: void signatureSwitchHelper(net.sf.cglib.core.CodeEmitter,java.util.List)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitIndexByClassArray(java.util.List)
{
net.sf.cglib.reflect.FastClassEmitter$2 v;
net.sf.cglib.reflect.FastClassEmitter$GetIndexCallback v;
net.sf.cglib.asm.$Type v;
java.util.List v, v, v;
net.sf.cglib.core.Signature v, v;
int v;
net.sf.cglib.core.MethodInfoTransformer v;
net.sf.cglib.reflect.FastClassEmitter v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.reflect.FastClassEmitter;
v := @parameter: java.util.List;
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature METHOD_GET_INDEX>;
v = virtualinvoke v.<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 100 goto label;
v = new net.sf.cglib.reflect.FastClassEmitter$2;
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter$2: void <init>(net.sf.cglib.reflect.FastClassEmitter)>(v);
v = staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.List transform(java.util.Collection,net.sf.cglib.core.Transformer)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_args()>();
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type FAST_CLASS>;
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature GET_SIGNATURE_WITHOUT_RETURN_TYPE>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter: void signatureSwitchHelper(net.sf.cglib.core.CodeEmitter,java.util.List)>(v, v);
goto label;
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_args()>();
v = staticinvoke <net.sf.cglib.core.MethodInfoTransformer: net.sf.cglib.core.MethodInfoTransformer getInstance()>();
v = staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.List transform(java.util.Collection,net.sf.cglib.core.Transformer)>(v, v);
v = new net.sf.cglib.reflect.FastClassEmitter$GetIndexCallback;
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter$GetIndexCallback: void <init>(net.sf.cglib.core.CodeEmitter,java.util.List)>(v, v);
staticinvoke <net.sf.cglib.core.EmitUtils: void method_switch(net.sf.cglib.core.CodeEmitter,java.util.List,net.sf.cglib.core.ObjectSwitchCallback)>(v, v, v);
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void signatureSwitchHelper(net.sf.cglib.core.CodeEmitter, java.util.List)
{
java.util.List v;
java.lang.Object[] v;
net.sf.cglib.reflect.FastClassEmitter$3 v;
int v;
java.lang.String[] v;
net.sf.cglib.reflect.FastClassEmitter v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.reflect.FastClassEmitter;
v := @parameter: net.sf.cglib.core.CodeEmitter;
v := @parameter: java.util.List;
v = new net.sf.cglib.reflect.FastClassEmitter$3;
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter$3: void <init>(net.sf.cglib.reflect.FastClassEmitter,net.sf.cglib.core.CodeEmitter,java.util.List)>(v, v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
v = newarray (java.lang.String)[v];
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
staticinvoke <net.sf.cglib.core.EmitUtils: void string_switch(net.sf.cglib.core.CodeEmitter,java.lang.String[],int,net.sf.cglib.core.ObjectSwitchCallback)>(v, v, 1, v);
return;
}
private static void invokeSwitchHelper(net.sf.cglib.core.CodeEmitter, java.util.List, int, net.sf.cglib.asm.$Type)
{
net.sf.cglib.asm.$Label v;
net.sf.cglib.reflect.FastClassEmitter$4 v;
net.sf.cglib.asm.$Type v, v, v;
java.util.List v, v;
int[] v;
net.sf.cglib.core.Block v;
int v, v;
net.sf.cglib.core.MethodInfoTransformer v;
net.sf.cglib.core.CodeEmitter v;
v := @parameter: net.sf.cglib.core.CodeEmitter;
v := @parameter: java.util.List;
v := @parameter: int;
v := @parameter: net.sf.cglib.asm.$Type;
v = staticinvoke <net.sf.cglib.core.MethodInfoTransformer: net.sf.cglib.core.MethodInfoTransformer getInstance()>();
v = staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.List transform(java.util.Collection,net.sf.cglib.core.Transformer)>(v, v);
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.asm.$Label make_label()>();
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.core.Block begin_block()>();
v = interfaceinvoke v.<java.util.List: int size()>();
v = staticinvoke <net.sf.cglib.reflect.FastClassEmitter: int[] getIntRange(int)>(v);
v = new net.sf.cglib.reflect.FastClassEmitter$4;
specialinvoke v.<net.sf.cglib.reflect.FastClassEmitter$4: void <init>(java.util.List,net.sf.cglib.core.CodeEmitter,int,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Label)>(v, v, v, v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void process_switch(int[],net.sf.cglib.core.ProcessSwitchCallback)>(v, v);
virtualinvoke v.<net.sf.cglib.core.Block: void end()>();
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type INVOCATION_TARGET_EXCEPTION>;
staticinvoke <net.sf.cglib.core.EmitUtils: void wrap_throwable(net.sf.cglib.core.Block,net.sf.cglib.asm.$Type)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void mark(net.sf.cglib.asm.$Label)>(v);
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type ILLEGAL_ARGUMENT_EXCEPTION>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void throw_exception(net.sf.cglib.asm.$Type,java.lang.String)>(v, "Cannot find matching method/constructor");
return;
}
private static int[] getIntRange(int)
{
int v, v;
int[] v;
v := @parameter: int;
v = newarray (int)[v];
v = 0;
label:
if v >= v goto label;
v[v] = v;
v = v + 1;
goto label;
label:
return v;
}
static void <clinit>()
{
net.sf.cglib.asm.$Type[] v, v;
net.sf.cglib.core.Signature v, v, v, v, v, v, v, v, v;
net.sf.cglib.asm.$Type v, v, v, v, v, v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseConstructor(java.lang.String)>("Class");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature CSTRUCT_CLASS> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("int getIndex(String, Class[])");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature METHOD_GET_INDEX> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type INT_TYPE>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_SIGNATURE>;
v[0] = v;
specialinvoke v.<net.sf.cglib.core.Signature: void <init>(java.lang.String,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type[])>("getIndex", v, v);
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature SIGNATURE_GET_INDEX> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("String toString()");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature TO_STRING> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("int getIndex(Class[])");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature CONSTRUCTOR_GET_INDEX> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("Object invoke(int, Object, Object[])");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature INVOKE> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("Object newInstance(int, Object[])");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature NEW_INSTANCE> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("int getMaxIndex()");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature GET_MAX_INDEX> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("String getSignatureWithoutReturnType(String, Class[])");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.core.Signature GET_SIGNATURE_WITHOUT_RETURN_TYPE> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("net.sf.cglib.reflect.FastClass");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type FAST_CLASS> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("IllegalArgumentException");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type ILLEGAL_ARGUMENT_EXCEPTION> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("java.lang.reflect.InvocationTargetException");
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type INVOCATION_TARGET_EXCEPTION> = v;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type INVOCATION_TARGET_EXCEPTION>;
v[0] = v;
<net.sf.cglib.reflect.FastClassEmitter: net.sf.cglib.asm.$Type[] INVOCATION_TARGET_EXCEPTION_ARRAY> = v;
return;
}
}