class org.springframework.cglib.proxy.MixinEmitter extends org.springframework.cglib.core.ClassEmitter
{
private static final java.lang.String FIELD_NAME;
private static final org.springframework.cglib.core.Signature CSTRUCT_OBJECT_ARRAY;
private static final org.springframework.asm.Type MIXIN;
private static final org.springframework.cglib.core.Signature NEW_INSTANCE;
public void <init>(org.springframework.asm.ClassVisitor, java.lang.String, java.lang.Class[], int[])
{
org.springframework.cglib.core.CodeEmitter v, v;
org.springframework.cglib.core.MethodInfo v;
org.springframework.asm.ClassVisitor v;
org.springframework.asm.Type[] v;
java.lang.reflect.Method[] v;
java.util.HashSet v;
short v;
int[] v;
int v, v, v, v, v, v, v;
org.springframework.cglib.core.ClassInfo v;
org.springframework.cglib.core.Signature v, v;
java.lang.String v;
java.lang.reflect.Method v, v;
boolean v;
org.springframework.cglib.proxy.MixinEmitter v;
java.lang.Class[] v, v;
java.lang.Class v;
java.lang.Object v;
org.springframework.asm.Type v, v, v;
v := @this: org.springframework.cglib.proxy.MixinEmitter;
v := @parameter: org.springframework.asm.ClassVisitor;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Class[];
v := @parameter: int[];
specialinvoke v.<org.springframework.cglib.core.ClassEmitter: void <init>(org.springframework.asm.ClassVisitor)>(v);
v = <org.springframework.cglib.proxy.MixinEmitter: org.springframework.asm.Type MIXIN>;
v = virtualinvoke v.<org.springframework.cglib.proxy.MixinEmitter: java.lang.Class[] getInterfaces(java.lang.Class[])>(v);
v = staticinvoke <org.springframework.cglib.core.TypeUtils: org.springframework.asm.Type[] getTypes(java.lang.Class[])>(v);
virtualinvoke v.<org.springframework.cglib.proxy.MixinEmitter: void begin_class(int,int,java.lang.String,org.springframework.asm.Type,org.springframework.asm.Type[],java.lang.String)>(46, 1, v, v, v, "<generated>");
staticinvoke <org.springframework.cglib.core.EmitUtils: void null_constructor(org.springframework.cglib.core.ClassEmitter)>(v);
v = <org.springframework.cglib.proxy.MixinEmitter: org.springframework.cglib.core.Signature NEW_INSTANCE>;
staticinvoke <org.springframework.cglib.core.EmitUtils: void factory_method(org.springframework.cglib.core.ClassEmitter,org.springframework.cglib.core.Signature)>(v, v);
v = <org.springframework.cglib.core.Constants: org.springframework.asm.Type TYPE_OBJECT_ARRAY>;
virtualinvoke v.<org.springframework.cglib.proxy.MixinEmitter: void declare_field(int,java.lang.String,org.springframework.asm.Type,java.lang.Object)>(2, "CGLIB$DELEGATES", v, null);
v = <org.springframework.cglib.proxy.MixinEmitter: org.springframework.cglib.core.Signature CSTRUCT_OBJECT_ARRAY>;
v = virtualinvoke v.<org.springframework.cglib.proxy.MixinEmitter: org.springframework.cglib.core.CodeEmitter begin_method(int,org.springframework.cglib.core.Signature,org.springframework.asm.Type[])>(1, v, null);
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void super_invoke_constructor()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void load_arg(int)>(0);
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void putfield(java.lang.String)>("CGLIB$DELEGATES");
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void end_method()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.springframework.cglib.proxy.MixinEmitter: java.lang.reflect.Method[] getMethods(java.lang.Class)>(v);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = staticinvoke <org.springframework.cglib.core.MethodWrapper: java.lang.Object create(java.lang.reflect.Method)>(v);
v = interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
if v == 0 goto label;
v = v[v];
v = staticinvoke <org.springframework.cglib.core.ReflectUtils: org.springframework.cglib.core.MethodInfo getMethodInfo(java.lang.reflect.Member)>(v);
v = 1;
v = virtualinvoke v.<org.springframework.cglib.core.MethodInfo: int getModifiers()>();
v = v & 128;
if v != 128 goto label;
v = 129;
label:
v = staticinvoke <org.springframework.cglib.core.EmitUtils: org.springframework.cglib.core.CodeEmitter begin_method(org.springframework.cglib.core.ClassEmitter,org.springframework.cglib.core.MethodInfo,int)>(v, v, v);
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void getfield(java.lang.String)>("CGLIB$DELEGATES");
if v == null goto label;
v = v[v];
goto label;
label:
v = v;
label:
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void aaload(int)>(v);
v = virtualinvoke v.<org.springframework.cglib.core.MethodInfo: org.springframework.cglib.core.ClassInfo getClassInfo()>();
v = virtualinvoke v.<org.springframework.cglib.core.ClassInfo: org.springframework.asm.Type getType()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void checkcast(org.springframework.asm.Type)>(v);
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void load_args()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void invoke(org.springframework.cglib.core.MethodInfo)>(v);
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<org.springframework.cglib.core.CodeEmitter: void end_method()>();
label:
v = v + 1;
goto label;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<org.springframework.cglib.proxy.MixinEmitter: void end_class()>();
return;
}
protected java.lang.Class[] getInterfaces(java.lang.Class[])
{
java.lang.Class[] v;
org.springframework.cglib.proxy.MixinEmitter v;
v := @this: org.springframework.cglib.proxy.MixinEmitter;
v := @parameter: java.lang.Class[];
return v;
}
protected java.lang.reflect.Method[] getMethods(java.lang.Class)
{
java.lang.Class v;
org.springframework.cglib.proxy.MixinEmitter v;
java.lang.reflect.Method[] v;
v := @this: org.springframework.cglib.proxy.MixinEmitter;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getMethods()>();
return v;
}
static void <clinit>()
{
org.springframework.cglib.core.Signature v, v;
org.springframework.asm.Type[] v;
org.springframework.asm.Type v, v, v;
v = staticinvoke <org.springframework.cglib.core.TypeUtils: org.springframework.cglib.core.Signature parseConstructor(java.lang.String)>("Object[]");
<org.springframework.cglib.proxy.MixinEmitter: org.springframework.cglib.core.Signature CSTRUCT_OBJECT_ARRAY> = v;
v = staticinvoke <org.springframework.cglib.core.TypeUtils: org.springframework.asm.Type parseType(java.lang.String)>("org.springframework.cglib.proxy.Mixin");
<org.springframework.cglib.proxy.MixinEmitter: org.springframework.asm.Type MIXIN> = v;
v = new org.springframework.cglib.core.Signature;
v = <org.springframework.cglib.proxy.MixinEmitter: org.springframework.asm.Type MIXIN>;
v = newarray (org.springframework.asm.Type)[1];
v = <org.springframework.cglib.core.Constants: org.springframework.asm.Type TYPE_OBJECT_ARRAY>;
v[0] = v;
specialinvoke v.<org.springframework.cglib.core.Signature: void <init>(java.lang.String,org.springframework.asm.Type,org.springframework.asm.Type[])>("newInstance", v, v);
<org.springframework.cglib.proxy.MixinEmitter: org.springframework.cglib.core.Signature NEW_INSTANCE> = v;
return;
}
}