public class net.sf.cglib.proxy.Enhancer extends net.sf.cglib.core.AbstractClassGenerator
{
private static final net.sf.cglib.proxy.CallbackFilter ALL_ZERO;
private static final net.sf.cglib.core.AbstractClassGenerator$Source SOURCE;
private static final net.sf.cglib.proxy.Enhancer$EnhancerKey KEY_FACTORY;
private static final java.lang.String BOUND_FIELD;
private static final java.lang.String FACTORY_DATA_FIELD;
private static final java.lang.String THREAD_CALLBACKS_FIELD;
private static final java.lang.String STATIC_CALLBACKS_FIELD;
private static final java.lang.String SET_THREAD_CALLBACKS_NAME;
private static final java.lang.String SET_STATIC_CALLBACKS_NAME;
private static final java.lang.String CONSTRUCTED_FIELD;
private static final java.lang.String CALLBACK_FILTER_FIELD;
private static final net.sf.cglib.asm.$Type OBJECT_TYPE;
private static final net.sf.cglib.asm.$Type FACTORY;
private static final net.sf.cglib.asm.$Type ILLEGAL_STATE_EXCEPTION;
private static final net.sf.cglib.asm.$Type ILLEGAL_ARGUMENT_EXCEPTION;
private static final net.sf.cglib.asm.$Type THREAD_LOCAL;
private static final net.sf.cglib.asm.$Type CALLBACK;
private static final net.sf.cglib.asm.$Type CALLBACK_ARRAY;
private static final net.sf.cglib.core.Signature CSTRUCT_NULL;
private static final net.sf.cglib.core.Signature SET_THREAD_CALLBACKS;
private static final net.sf.cglib.core.Signature SET_STATIC_CALLBACKS;
private static final net.sf.cglib.core.Signature NEW_INSTANCE;
private static final net.sf.cglib.core.Signature MULTIARG_NEW_INSTANCE;
private static final net.sf.cglib.core.Signature SINGLE_NEW_INSTANCE;
private static final net.sf.cglib.core.Signature SET_CALLBACK;
private static final net.sf.cglib.core.Signature GET_CALLBACK;
private static final net.sf.cglib.core.Signature SET_CALLBACKS;
private static final net.sf.cglib.core.Signature GET_CALLBACKS;
private static final net.sf.cglib.core.Signature THREAD_LOCAL_GET;
private static final net.sf.cglib.core.Signature THREAD_LOCAL_SET;
private static final net.sf.cglib.core.Signature BIND_CALLBACKS;
private net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData;
private java.lang.Object currentKey;
private java.lang.Class[] interfaces;
private net.sf.cglib.proxy.CallbackFilter filter;
private net.sf.cglib.proxy.Callback[] callbacks;
private net.sf.cglib.asm.$Type[] callbackTypes;
private boolean validateCallbackTypes;
private boolean classOnly;
private java.lang.Class superclass;
private java.lang.Class[] argumentTypes;
private java.lang.Object[] arguments;
private boolean useFactory;
private java.lang.Long serialVersionUID;
private boolean interceptDuringConstruction;
public void <init>()
{
net.sf.cglib.core.AbstractClassGenerator$Source v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.AbstractClassGenerator$Source SOURCE>;
specialinvoke v.<net.sf.cglib.core.AbstractClassGenerator: void <init>(net.sf.cglib.core.AbstractClassGenerator$Source)>(v);
v.<net.sf.cglib.proxy.Enhancer: boolean useFactory> = 1;
v.<net.sf.cglib.proxy.Enhancer: boolean interceptDuringConstruction> = 1;
return;
}
public void setSuperclass(java.lang.Class)
{
java.lang.Class[] v;
java.lang.Class v;
net.sf.cglib.proxy.Enhancer v;
boolean v, v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class;
if v == null goto label;
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v == 0 goto label;
v = newarray (java.lang.Class)[1];
v[0] = v;
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setInterfaces(java.lang.Class[])>(v);
goto label;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(class "Ljava/lang/Object;");
if v == 0 goto label;
v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass> = null;
goto label;
label:
v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass> = v;
label:
return;
}
public void setInterfaces(java.lang.Class[])
{
java.lang.Class[] v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class[];
v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces> = v;
return;
}
public void setCallbackFilter(net.sf.cglib.proxy.CallbackFilter)
{
net.sf.cglib.proxy.CallbackFilter v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.proxy.CallbackFilter;
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter> = v;
return;
}
public void setCallback(net.sf.cglib.proxy.Callback)
{
net.sf.cglib.proxy.Callback v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.proxy.Callback[] v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.proxy.Callback;
v = newarray (net.sf.cglib.proxy.Callback)[1];
v[0] = v;
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setCallbacks(net.sf.cglib.proxy.Callback[])>(v);
return;
}
public void setCallbacks(net.sf.cglib.proxy.Callback[])
{
net.sf.cglib.proxy.Callback[] v;
int v;
java.lang.IllegalArgumentException v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.proxy.Callback[];
if v == null goto label;
v = lengthof v;
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Array cannot be empty");
throw v;
label:
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks> = v;
return;
}
public void setUseFactory(boolean)
{
net.sf.cglib.proxy.Enhancer v;
boolean v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: boolean;
v.<net.sf.cglib.proxy.Enhancer: boolean useFactory> = v;
return;
}
public void setInterceptDuringConstruction(boolean)
{
net.sf.cglib.proxy.Enhancer v;
boolean v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: boolean;
v.<net.sf.cglib.proxy.Enhancer: boolean interceptDuringConstruction> = v;
return;
}
public void setCallbackType(java.lang.Class)
{
java.lang.Class[] v;
java.lang.Class v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class;
v = newarray (java.lang.Class)[1];
v[0] = v;
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setCallbackTypes(java.lang.Class[])>(v);
return;
}
public void setCallbackTypes(java.lang.Class[])
{
net.sf.cglib.asm.$Type[] v;
int v;
java.lang.Class[] v;
java.lang.IllegalArgumentException v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class[];
if v == null goto label;
v = lengthof v;
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Array cannot be empty");
throw v;
label:
v = staticinvoke <net.sf.cglib.proxy.CallbackInfo: net.sf.cglib.asm.$Type[] determineTypes(java.lang.Class[])>(v);
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes> = v;
return;
}
public java.lang.Object create()
{
java.lang.Object v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v.<net.sf.cglib.proxy.Enhancer: boolean classOnly> = 0;
v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] argumentTypes> = null;
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object createHelper()>();
return v;
}
public java.lang.Object create(java.lang.Class[], java.lang.Object[])
{
java.lang.Object[] v;
int v, v;
java.lang.Class[] v;
java.lang.Object v;
java.lang.IllegalArgumentException v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class[];
v := @parameter: java.lang.Object[];
v.<net.sf.cglib.proxy.Enhancer: boolean classOnly> = 0;
if v == null goto label;
if v == null goto label;
v = lengthof v;
v = lengthof v;
if v == v goto label;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Arguments must be non-null and of equal length");
throw v;
label:
v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] argumentTypes> = v;
v.<net.sf.cglib.proxy.Enhancer: java.lang.Object[] arguments> = v;
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object createHelper()>();
return v;
}
public java.lang.Class createClass()
{
java.lang.Object v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v.<net.sf.cglib.proxy.Enhancer: boolean classOnly> = 1;
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object createHelper()>();
return v;
}
public void setSerialVersionUID(java.lang.Long)
{
net.sf.cglib.proxy.Enhancer v;
java.lang.Long v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Long;
v.<net.sf.cglib.proxy.Enhancer: java.lang.Long serialVersionUID> = v;
return;
}
private void preValidate()
{
java.lang.IllegalStateException v;
net.sf.cglib.proxy.CallbackFilter v, v;
net.sf.cglib.asm.$Type[] v, v, v;
net.sf.cglib.proxy.Callback[] v;
int v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
if v != null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
v = staticinvoke <net.sf.cglib.proxy.CallbackInfo: net.sf.cglib.asm.$Type[] determineTypes(net.sf.cglib.proxy.Callback[],boolean)>(v, 0);
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes> = v;
v.<net.sf.cglib.proxy.Enhancer: boolean validateCallbackTypes> = 1;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter>;
if v != null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v <= 1 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Multiple callback types possible but no filter specified");
throw v;
label:
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter ALL_ZERO>;
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter> = v;
label:
return;
}
private void validate()
{
java.lang.IllegalStateException v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v;
net.sf.cglib.proxy.Callback[] v, v, v, v, v, v;
net.sf.cglib.asm.$Type[] v, v, v, v, v, v, v;
int v, v, v, v, v, v;
java.lang.String v, v;
net.sf.cglib.proxy.Enhancer v;
java.lang.Class[] v, v, v, v, v;
net.sf.cglib.asm.$Type v, v, v, v;
java.lang.Class v, v, v;
v := @this: net.sf.cglib.proxy.Enhancer;
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v ^ v;
if v == 0 goto label;
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("createClass does not accept callbacks");
throw v;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Callbacks are required");
throw v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
if v == 0 goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Callback types are required");
throw v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: boolean validateCallbackTypes>;
if v == 0 goto label;
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes> = null;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
v = lengthof v;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v == v goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Lengths of callback and callback types array must be the same");
throw v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
v = staticinvoke <net.sf.cglib.proxy.CallbackInfo: net.sf.cglib.asm.$Type[] determineTypes(net.sf.cglib.proxy.Callback[])>(v);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = v[v];
v = virtualinvoke v.<net.sf.cglib.asm.$Type: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v[v];
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = v[v];
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Callback \u is not assignable to \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v + 1;
goto label;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
v = staticinvoke <net.sf.cglib.proxy.CallbackInfo: net.sf.cglib.asm.$Type[] determineTypes(net.sf.cglib.proxy.Callback[])>(v);
v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes> = v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
if v == null goto label;
v = 0;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = lengthof v;
if v >= v goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = v[v];
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Interfaces cannot be null");
throw v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = v[v];
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = v[v];
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u is not an interface");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v + 1;
goto label;
label:
return;
}
private java.lang.Object createHelper()
{
net.sf.cglib.proxy.Enhancer$EnhancerKey v;
net.sf.cglib.asm.$Type[] v;
java.lang.String[] v;
java.lang.Long v;
net.sf.cglib.core.WeakCacheKey v;
java.lang.String v;
net.sf.cglib.proxy.Enhancer v;
boolean v, v;
net.sf.cglib.proxy.CallbackFilter v, v, v;
java.lang.Class[] v;
java.lang.Class v, v;
java.lang.Object v, v;
v := @this: net.sf.cglib.proxy.Enhancer;
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void preValidate()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerKey KEY_FACTORY>;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
goto label;
label:
v = null;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = staticinvoke <net.sf.cglib.core.ReflectUtils: java.lang.String[] getNames(java.lang.Class[])>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter>;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter ALL_ZERO>;
if v != v goto label;
v = null;
goto label;
label:
v = new net.sf.cglib.core.WeakCacheKey;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter>;
specialinvoke v.<net.sf.cglib.core.WeakCacheKey: void <init>(java.lang.Object)>(v);
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = v.<net.sf.cglib.proxy.Enhancer: boolean useFactory>;
v = v.<net.sf.cglib.proxy.Enhancer: boolean interceptDuringConstruction>;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Long serialVersionUID>;
v = interfaceinvoke v.<net.sf.cglib.proxy.Enhancer$EnhancerKey: java.lang.Object newInstance(java.lang.String,java.lang.String[],net.sf.cglib.core.WeakCacheKey,net.sf.cglib.asm.$Type[],boolean,boolean,java.lang.Long)>(v, v, v, v, v, v, v);
v.<net.sf.cglib.proxy.Enhancer: java.lang.Object currentKey> = v;
v = specialinvoke v.<net.sf.cglib.core.AbstractClassGenerator: java.lang.Object create(java.lang.Object)>(v);
return v;
}
protected java.lang.Class generate(net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData)
{
java.lang.Class[] v, v, v;
net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData v;
int v;
java.lang.Class v, v, v, v;
java.lang.String v, v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData;
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void validate()>();
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setNamePrefix(java.lang.String)>(v);
goto label;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = staticinvoke <net.sf.cglib.core.ReflectUtils: int findPackageProtected(java.lang.Class[])>(v);
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setNamePrefix(java.lang.String)>(v);
label:
v = specialinvoke v.<net.sf.cglib.core.AbstractClassGenerator: java.lang.Class generate(net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData)>(v);
return v;
}
protected java.lang.ClassLoader getDefaultClassLoader()
{
java.lang.Class[] v, v;
java.lang.Class v, v, v;
java.lang.ClassLoader v, v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
return v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = v[0];
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
return v;
label:
return null;
}
protected java.security.ProtectionDomain getProtectionDomain()
{
java.lang.Class[] v, v;
java.security.ProtectionDomain v, v;
java.lang.Class v, v, v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
v = staticinvoke <net.sf.cglib.core.ReflectUtils: java.security.ProtectionDomain getProtectionDomain(java.lang.Class)>(v);
return v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = v[0];
v = staticinvoke <net.sf.cglib.core.ReflectUtils: java.security.ProtectionDomain getProtectionDomain(java.lang.Class)>(v);
return v;
label:
return null;
}
private net.sf.cglib.core.Signature rename(net.sf.cglib.core.Signature, int)
{
net.sf.cglib.core.Signature v, v;
int v;
java.lang.String v, v, v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.Signature;
v := @parameter: int;
v = new net.sf.cglib.core.Signature;
v = virtualinvoke v.<net.sf.cglib.core.Signature: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("CGLIB$\u0001$\u0001");
v = virtualinvoke v.<net.sf.cglib.core.Signature: java.lang.String getDescriptor()>();
specialinvoke v.<net.sf.cglib.core.Signature: void <init>(java.lang.String,java.lang.String)>(v, v);
return v;
}
public static void getMethods(java.lang.Class, java.lang.Class[], java.util.List)
{
java.lang.Class[] v;
java.lang.Class v;
java.util.List v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class[];
v := @parameter: java.util.List;
staticinvoke <net.sf.cglib.proxy.Enhancer: void getMethods(java.lang.Class,java.lang.Class[],java.util.List,java.util.List,java.util.Set)>(v, v, v, null, null);
return;
}
private static void getMethods(java.lang.Class, java.lang.Class[], java.util.List, java.util.List, java.util.Set)
{
int v, v;
java.lang.Class[] v;
java.util.Set v, v;
net.sf.cglib.core.VisibilityPredicate v;
java.util.List v, v, v, v;
net.sf.cglib.core.RejectModifierPredicate v, v;
net.sf.cglib.core.DuplicatesPredicate v;
java.lang.Class v, v, v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class[];
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v := @parameter: java.util.Set;
staticinvoke <net.sf.cglib.core.ReflectUtils: java.util.List addAllMethods(java.lang.Class,java.util.List)>(v, v);
if v == null goto label;
v = v;
goto label;
label:
v = v;
label:
v = v;
if v == null goto label;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
if v == class "Lnet/sf/cglib/proxy/Factory;" goto label;
v = v[v];
staticinvoke <net.sf.cglib.core.ReflectUtils: java.util.List addAllMethods(java.lang.Class,java.util.List)>(v, v);
label:
v = v + 1;
goto label;
label:
if v == null goto label;
if v == null goto label;
v = staticinvoke <net.sf.cglib.core.MethodWrapper: java.util.Set createSet(java.util.Collection)>(v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
label:
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
label:
v = new net.sf.cglib.core.RejectModifierPredicate;
specialinvoke v.<net.sf.cglib.core.RejectModifierPredicate: void <init>(int)>(8);
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.VisibilityPredicate;
specialinvoke v.<net.sf.cglib.core.VisibilityPredicate: void <init>(java.lang.Class,boolean)>(v, 1);
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>(java.util.List)>(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.RejectModifierPredicate;
specialinvoke v.<net.sf.cglib.core.RejectModifierPredicate: void <init>(int)>(16);
staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.Collection filter(java.util.Collection,net.sf.cglib.core.Predicate)>(v, v);
return;
}
public void generateClass(net.sf.cglib.asm.$ClassVisitor) throws java.lang.Exception
{
int[] v;
java.lang.Long v, v;
boolean v, v, v, v;
java.util.List v, v, v;
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type[] v, v, v, v, v;
net.sf.cglib.proxy.Enhancer$2 v;
java.util.ArrayList v, v, v;
java.lang.reflect.Constructor[] v;
java.util.HashSet v;
int v, v, v;
net.sf.cglib.proxy.Enhancer$EnhancerFactoryData v, v, v;
java.lang.String v, v, v, v, v;
net.sf.cglib.core.MethodInfoTransformer v;
net.sf.cglib.proxy.Enhancer v;
java.lang.Class[] v, v, v;
java.lang.IllegalArgumentException v;
net.sf.cglib.asm.$Type v, v, v, v, v, v, v, v, v, v, v;
java.lang.Class v, v;
net.sf.cglib.asm.$ClassVisitor v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.asm.$ClassVisitor;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
if v != null goto label;
v = class "Ljava/lang/Object;";
goto label;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class superclass>;
label:
v = virtualinvoke v.<java.lang.Class: int getModifiers()>();
v = staticinvoke <net.sf.cglib.core.TypeUtils: boolean isFinal(int)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Cannot subclass final class \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
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);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void filterConstructors(java.lang.Class,java.util.List)>(v, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
staticinvoke <net.sf.cglib.proxy.Enhancer: void getMethods(java.lang.Class,java.lang.Class[],java.util.List,java.util.List,java.util.Set)>(v, v, v, v, v);
v = new net.sf.cglib.proxy.Enhancer$2;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$2: void <init>(net.sf.cglib.proxy.Enhancer,java.util.Set)>(v, v);
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.core.ClassEmitter;
specialinvoke v.<net.sf.cglib.core.ClassEmitter: void <init>(net.sf.cglib.asm.$ClassVisitor)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
if v != null goto label;
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.String getClassName()>();
v = staticinvoke <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type getType(java.lang.Class)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: boolean useFactory>;
if v == 0 goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type[] getTypes(java.lang.Class[])>(v);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type FACTORY>;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type[] add(net.sf.cglib.asm.$Type[],net.sf.cglib.asm.$Type)>(v, v);
goto label;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] interfaces>;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type[] getTypes(java.lang.Class[])>(v);
label:
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: 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, v, "<generated>");
goto label;
label:
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.String getClassName()>();
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type FACTORY>;
v[0] = v;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void begin_class(int,int,java.lang.String,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type[],java.lang.String)>(52, 1, v, null, v, "<generated>");
label:
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 = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type BOOLEAN_TYPE>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(2, "CGLIB$BOUND", v, null);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type OBJECT_TYPE>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(9, "CGLIB$FACTORY_DATA", v, null);
v = v.<net.sf.cglib.proxy.Enhancer: boolean interceptDuringConstruction>;
if v != 0 goto label;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type BOOLEAN_TYPE>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(2, "CGLIB$CONSTRUCTED", v, null);
label:
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type THREAD_LOCAL>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(26, "CGLIB$THREAD_CALLBACKS", v, null);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(26, "CGLIB$STATIC_CALLBACKS", v, null);
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Long serialVersionUID>;
if v == null goto label;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type LONG_TYPE>;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Long serialVersionUID>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(26, "serialVersionUID", v, v);
label:
v = 0;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v >= v goto label;
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.String getCallbackField(int)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = v[v];
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(2, v, v, null);
v = v + 1;
goto label;
label:
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type OBJECT_TYPE>;
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void declare_field(int,java.lang.String,net.sf.cglib.asm.$Type,java.lang.Object)>(10, "CGLIB$CALLBACK_FILTER", v, null);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
if v != null goto label;
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitMethods(net.sf.cglib.core.ClassEmitter,java.util.List,java.util.List)>(v, v, v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitConstructors(net.sf.cglib.core.ClassEmitter,java.util.List)>(v, v);
goto label;
label:
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitDefaultConstructor(net.sf.cglib.core.ClassEmitter)>(v);
label:
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitSetThreadCallbacks(net.sf.cglib.core.ClassEmitter)>(v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitSetStaticCallbacks(net.sf.cglib.core.ClassEmitter)>(v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitBindCallbacks(net.sf.cglib.core.ClassEmitter)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: boolean useFactory>;
if v != 0 goto label;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
if v == null goto label;
label:
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: int[] getCallbackKeys()>();
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitNewInstanceCallbacks(net.sf.cglib.core.ClassEmitter)>(v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitNewInstanceCallback(net.sf.cglib.core.ClassEmitter)>(v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitNewInstanceMultiarg(net.sf.cglib.core.ClassEmitter,java.util.List)>(v, v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitGetCallback(net.sf.cglib.core.ClassEmitter,int[])>(v, v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitSetCallback(net.sf.cglib.core.ClassEmitter,int[])>(v, v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitGetCallbacks(net.sf.cglib.core.ClassEmitter)>(v);
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitSetCallbacks(net.sf.cglib.core.ClassEmitter)>(v);
label:
virtualinvoke v.<net.sf.cglib.core.ClassEmitter: void end_class()>();
return;
}
protected void filterConstructors(java.lang.Class, java.util.List)
{
java.util.List v;
int v;
java.lang.Class v;
java.lang.String v;
java.lang.IllegalArgumentException v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.VisibilityPredicate v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class;
v := @parameter: java.util.List;
v = new net.sf.cglib.core.VisibilityPredicate;
specialinvoke v.<net.sf.cglib.core.VisibilityPredicate: void <init>(java.lang.Class,boolean)>(v, 1);
staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.Collection filter(java.util.Collection,net.sf.cglib.core.Predicate)>(v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("No visible constructors in \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
protected java.lang.Object firstInstance(java.lang.Class) throws java.lang.Exception
{
java.lang.Class v;
java.lang.Object v;
net.sf.cglib.proxy.Enhancer v;
boolean v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class;
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
if v == 0 goto label;
return v;
label:
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object createUsingReflection(java.lang.Class)>(v);
return v;
}
protected java.lang.Object nextInstance(java.lang.Object)
{
java.lang.Object[] v;
java.lang.Class[] v;
net.sf.cglib.proxy.Callback[] v;
java.lang.Class v;
java.lang.Object v, v;
net.sf.cglib.proxy.Enhancer v;
boolean v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Object;
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
if v == 0 goto label;
v = v.<net.sf.cglib.proxy.Enhancer$EnhancerFactoryData: java.lang.Class generatedClass>;
return v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] argumentTypes>;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Object[] arguments>;
if v != null goto label;
v = <net.sf.cglib.core.Constants: java.lang.Class[] EMPTY_CLASS_ARRAY>;
v = null;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer$EnhancerFactoryData: java.lang.Object newInstance(java.lang.Class[],java.lang.Object[],net.sf.cglib.proxy.Callback[])>(v, v, v);
return v;
}
protected java.lang.Object wrapCachedClass(java.lang.Class)
{
java.lang.IllegalAccessException v;
net.sf.cglib.proxy.CallbackFilter v;
java.lang.Class[] v;
java.lang.reflect.Field v, v;
java.lang.NoSuchFieldException v;
java.lang.Class v;
net.sf.cglib.core.CodeGenerationException v, v;
net.sf.cglib.proxy.Enhancer$EnhancerFactoryData v;
java.lang.ref.WeakReference v;
net.sf.cglib.proxy.Enhancer v;
boolean v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] argumentTypes>;
if v != null goto label;
v = <net.sf.cglib.core.Constants: java.lang.Class[] EMPTY_CLASS_ARRAY>;
label:
v = new net.sf.cglib.proxy.Enhancer$EnhancerFactoryData;
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$EnhancerFactoryData: void <init>(java.lang.Class,java.lang.Class[],boolean)>(v, v, v);
label:
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getField(java.lang.String)>("CGLIB$FACTORY_DATA");
virtualinvoke v.<java.lang.reflect.Field: void set(java.lang.Object,java.lang.Object)>(null, v);
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("CGLIB$CALLBACK_FILTER");
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(1);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter>;
virtualinvoke v.<java.lang.reflect.Field: void set(java.lang.Object,java.lang.Object)>(null, v);
label:
goto label;
label:
v := @caughtexception;
v = new net.sf.cglib.core.CodeGenerationException;
specialinvoke v.<net.sf.cglib.core.CodeGenerationException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new net.sf.cglib.core.CodeGenerationException;
specialinvoke v.<net.sf.cglib.core.CodeGenerationException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = new java.lang.ref.WeakReference;
specialinvoke v.<java.lang.ref.WeakReference: void <init>(java.lang.Object)>(v);
return v;
catch java.lang.NoSuchFieldException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
}
protected java.lang.Object unwrapCachedValue(java.lang.Object)
{
java.lang.Object v, v, v, v;
net.sf.cglib.proxy.Enhancer v;
boolean v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Object;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Object currentKey>;
v = v instanceof net.sf.cglib.proxy.Enhancer$EnhancerKey;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.ref.WeakReference: java.lang.Object get()>();
return v;
label:
v = specialinvoke v.<net.sf.cglib.core.AbstractClassGenerator: java.lang.Object unwrapCachedValue(java.lang.Object)>(v);
return v;
}
public static void registerCallbacks(java.lang.Class, net.sf.cglib.proxy.Callback[])
{
java.lang.Class v;
net.sf.cglib.proxy.Callback[] v;
v := @parameter: java.lang.Class;
v := @parameter: net.sf.cglib.proxy.Callback[];
staticinvoke <net.sf.cglib.proxy.Enhancer: void setThreadCallbacks(java.lang.Class,net.sf.cglib.proxy.Callback[])>(v, v);
return;
}
public static void registerStaticCallbacks(java.lang.Class, net.sf.cglib.proxy.Callback[])
{
java.lang.Class v;
net.sf.cglib.proxy.Callback[] v;
v := @parameter: java.lang.Class;
v := @parameter: net.sf.cglib.proxy.Callback[];
staticinvoke <net.sf.cglib.proxy.Enhancer: void setCallbacksHelper(java.lang.Class,net.sf.cglib.proxy.Callback[],java.lang.String)>(v, v, "CGLIB$SET_STATIC_CALLBACKS");
return;
}
public static boolean isEnhanced(java.lang.Class)
{
java.lang.Class v;
java.lang.NoSuchMethodException v;
v := @parameter: java.lang.Class;
label:
staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.reflect.Method getCallbacksSetter(java.lang.Class,java.lang.String)>(v, "CGLIB$SET_THREAD_CALLBACKS");
label:
return 1;
label:
v := @caughtexception;
return 0;
catch java.lang.NoSuchMethodException from label to label with label;
}
private static void setThreadCallbacks(java.lang.Class, net.sf.cglib.proxy.Callback[])
{
java.lang.Class v;
net.sf.cglib.proxy.Callback[] v;
v := @parameter: java.lang.Class;
v := @parameter: net.sf.cglib.proxy.Callback[];
staticinvoke <net.sf.cglib.proxy.Enhancer: void setCallbacksHelper(java.lang.Class,net.sf.cglib.proxy.Callback[],java.lang.String)>(v, v, "CGLIB$SET_THREAD_CALLBACKS");
return;
}
private static void setCallbacksHelper(java.lang.Class, net.sf.cglib.proxy.Callback[], java.lang.String)
{
java.lang.IllegalAccessException v;
java.lang.Object[] v;
java.lang.NoSuchMethodException v;
java.lang.IllegalArgumentException v;
java.lang.reflect.InvocationTargetException v;
net.sf.cglib.proxy.Callback[] v;
java.lang.Class v;
net.sf.cglib.core.CodeGenerationException v, v;
java.lang.String v, v;
java.lang.reflect.Method v;
v := @parameter: java.lang.Class;
v := @parameter: net.sf.cglib.proxy.Callback[];
v := @parameter: java.lang.String;
label:
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.reflect.Method getCallbacksSetter(java.lang.Class,java.lang.String)>(v, v);
v = newarray (java.lang.Object)[1];
v[0] = v;
virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(null, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u is not an enhanced class");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v := @caughtexception;
v = new net.sf.cglib.core.CodeGenerationException;
specialinvoke v.<net.sf.cglib.core.CodeGenerationException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new net.sf.cglib.core.CodeGenerationException;
specialinvoke v.<net.sf.cglib.core.CodeGenerationException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.NoSuchMethodException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
catch java.lang.reflect.InvocationTargetException from label to label with label;
}
private static java.lang.reflect.Method getCallbacksSetter(java.lang.Class, java.lang.String) throws java.lang.NoSuchMethodException
{
java.lang.Class[] v;
java.lang.Class v;
java.lang.String v;
java.lang.reflect.Method v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = newarray (java.lang.Class)[1];
v[0] = class "[Lnet/sf/cglib/proxy/Callback;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getDeclaredMethod(java.lang.String,java.lang.Class[])>(v, v);
return v;
}
private java.lang.Object createUsingReflection(java.lang.Class)
{
java.lang.Throwable v;
java.lang.Object[] v;
java.lang.Class[] v, v;
net.sf.cglib.proxy.Callback[] v;
java.lang.Class v;
java.lang.Object v, v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: java.lang.Class;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Callback[] callbacks>;
staticinvoke <net.sf.cglib.proxy.Enhancer: void setThreadCallbacks(java.lang.Class,net.sf.cglib.proxy.Callback[])>(v, v);
label:
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] argumentTypes>;
if v == null goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Class[] argumentTypes>;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Object[] arguments>;
v = staticinvoke <net.sf.cglib.core.ReflectUtils: java.lang.Object newInstance(java.lang.Class,java.lang.Class[],java.lang.Object[])>(v, v, v);
label:
staticinvoke <net.sf.cglib.proxy.Enhancer: void setThreadCallbacks(java.lang.Class,net.sf.cglib.proxy.Callback[])>(v, null);
return v;
label:
v = staticinvoke <net.sf.cglib.core.ReflectUtils: java.lang.Object newInstance(java.lang.Class)>(v);
label:
staticinvoke <net.sf.cglib.proxy.Enhancer: void setThreadCallbacks(java.lang.Class,net.sf.cglib.proxy.Callback[])>(v, null);
return v;
label:
v := @caughtexception;
staticinvoke <net.sf.cglib.proxy.Enhancer: void setThreadCallbacks(java.lang.Class,net.sf.cglib.proxy.Callback[])>(v, null);
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public static java.lang.Object create(java.lang.Class, net.sf.cglib.proxy.Callback)
{
net.sf.cglib.proxy.Callback v;
java.lang.Class v;
java.lang.Object v;
net.sf.cglib.proxy.Enhancer v;
v := @parameter: java.lang.Class;
v := @parameter: net.sf.cglib.proxy.Callback;
v = new net.sf.cglib.proxy.Enhancer;
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void <init>()>();
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setSuperclass(java.lang.Class)>(v);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setCallback(net.sf.cglib.proxy.Callback)>(v);
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object create()>();
return v;
}
public static java.lang.Object create(java.lang.Class, java.lang.Class[], net.sf.cglib.proxy.Callback)
{
net.sf.cglib.proxy.Callback v;
java.lang.Class[] v;
java.lang.Class v;
java.lang.Object v;
net.sf.cglib.proxy.Enhancer v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class[];
v := @parameter: net.sf.cglib.proxy.Callback;
v = new net.sf.cglib.proxy.Enhancer;
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void <init>()>();
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setSuperclass(java.lang.Class)>(v);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setInterfaces(java.lang.Class[])>(v);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setCallback(net.sf.cglib.proxy.Callback)>(v);
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object create()>();
return v;
}
public static java.lang.Object create(java.lang.Class, java.lang.Class[], net.sf.cglib.proxy.CallbackFilter, net.sf.cglib.proxy.Callback[])
{
net.sf.cglib.proxy.CallbackFilter v;
net.sf.cglib.proxy.Callback[] v;
java.lang.Class[] v;
java.lang.Class v;
java.lang.Object v;
net.sf.cglib.proxy.Enhancer v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class[];
v := @parameter: net.sf.cglib.proxy.CallbackFilter;
v := @parameter: net.sf.cglib.proxy.Callback[];
v = new net.sf.cglib.proxy.Enhancer;
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void <init>()>();
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setSuperclass(java.lang.Class)>(v);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setInterfaces(java.lang.Class[])>(v);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setCallbackFilter(net.sf.cglib.proxy.CallbackFilter)>(v);
virtualinvoke v.<net.sf.cglib.proxy.Enhancer: void setCallbacks(net.sf.cglib.proxy.Callback[])>(v);
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.Object create()>();
return v;
}
private void emitDefaultConstructor(net.sf.cglib.core.ClassEmitter)
{
java.lang.IllegalStateException v;
net.sf.cglib.core.ClassEmitter v;
java.lang.NoSuchMethodException v;
java.lang.Class[] v;
java.lang.reflect.Constructor v;
net.sf.cglib.core.Signature v;
java.lang.Class v;
java.lang.Object v;
net.sf.cglib.core.MethodInfoTransformer v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
label:
v = class "Ljava/lang/Object;";
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getDeclaredConstructor(java.lang.Class[])>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Object should have default constructor ", v);
throw v;
label:
v = staticinvoke <net.sf.cglib.core.MethodInfoTransformer: net.sf.cglib.core.MethodInfoTransformer getInstance()>();
v = virtualinvoke v.<net.sf.cglib.core.MethodInfoTransformer: java.lang.Object transform(java.lang.Object)>(v);
v = staticinvoke <net.sf.cglib.core.EmitUtils: net.sf.cglib.core.CodeEmitter begin_method(net.sf.cglib.core.ClassEmitter,net.sf.cglib.core.MethodInfo,int)>(v, v, 1);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
v = virtualinvoke v.<net.sf.cglib.core.MethodInfo: net.sf.cglib.core.Signature getSignature()>();
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()>();
return;
catch java.lang.NoSuchMethodException from label to label with label;
}
private void emitConstructors(net.sf.cglib.core.ClassEmitter, java.util.List)
{
java.lang.Object[] v;
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.core.Signature v, v, v;
net.sf.cglib.proxy.Enhancer$EnhancerFactoryData v, v;
java.lang.String v, v, v;
net.sf.cglib.proxy.Enhancer v;
boolean v, v, v, v, v, v, v;
java.util.Iterator v;
java.lang.IllegalArgumentException v;
java.util.List v;
java.lang.Object v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v := @parameter: java.util.List;
v = 0;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
if v == null goto label;
v = "()V";
v = virtualinvoke v.<net.sf.cglib.core.MethodInfo: net.sf.cglib.core.Signature getSignature()>();
v = virtualinvoke v.<net.sf.cglib.core.Signature: java.lang.String getDescriptor()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = staticinvoke <net.sf.cglib.core.EmitUtils: net.sf.cglib.core.CodeEmitter begin_method(net.sf.cglib.core.ClassEmitter,net.sf.cglib.core.MethodInfo,int)>(v, v, 1);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_args()>();
v = virtualinvoke v.<net.sf.cglib.core.MethodInfo: net.sf.cglib.core.Signature getSignature()>();
if v != 0 goto label;
v = virtualinvoke v.<net.sf.cglib.core.Signature: java.lang.String getDescriptor()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("()V");
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = v;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void super_invoke_constructor(net.sf.cglib.core.Signature)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
if v != null goto label;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature BIND_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static_this(net.sf.cglib.core.Signature)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: boolean interceptDuringConstruction>;
if v != 0 goto label;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(1);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void putfield(java.lang.String)>("CGLIB$CONSTRUCTED");
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
goto label;
label:
v = v.<net.sf.cglib.proxy.Enhancer: boolean classOnly>;
if v != 0 goto label;
if v != 0 goto label;
v = v.<net.sf.cglib.proxy.Enhancer: java.lang.Object[] arguments>;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Superclass has no null constructors but no arguments were given");
throw v;
label:
return;
}
private int[] getCallbackKeys()
{
int[] v;
net.sf.cglib.asm.$Type[] v, v;
int v, v, v;
net.sf.cglib.proxy.Enhancer v;
v := @this: net.sf.cglib.proxy.Enhancer;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
v = newarray (int)[v];
v = 0;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v >= v goto label;
v[v] = v;
v = v + 1;
goto label;
label:
return v;
}
private void emitGetCallback(net.sf.cglib.core.ClassEmitter, int[])
{
net.sf.cglib.core.ClassEmitter v;
int[] v;
net.sf.cglib.core.Signature v, v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
net.sf.cglib.proxy.Enhancer$3 v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v := @parameter: int[];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature GET_CALLBACK>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: 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()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature BIND_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static_this(net.sf.cglib.core.Signature)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
v = new net.sf.cglib.proxy.Enhancer$3;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$3: void <init>(net.sf.cglib.proxy.Enhancer,net.sf.cglib.core.CodeEmitter)>(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.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitSetCallback(net.sf.cglib.core.ClassEmitter, int[])
{
net.sf.cglib.core.ClassEmitter v;
int[] v;
net.sf.cglib.core.Signature v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.proxy.Enhancer$4 v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v := @parameter: int[];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_CALLBACK>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: 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_arg(int)>(0);
v = new net.sf.cglib.proxy.Enhancer$4;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$4: void <init>(net.sf.cglib.proxy.Enhancer,net.sf.cglib.core.CodeEmitter)>(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.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitSetCallbacks(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type[] v, v;
net.sf.cglib.asm.$Type v;
net.sf.cglib.core.Signature v;
int v, v;
java.lang.String v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_CALLBACKS>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: 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_arg(int)>(0);
v = 0;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v >= v goto label;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup2()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void aaload(int)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = v[v];
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void checkcast(net.sf.cglib.asm.$Type)>(v);
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.String getCallbackField(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void putfield(java.lang.String)>(v);
v = v + 1;
goto label;
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitGetCallbacks(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type[] v, v;
net.sf.cglib.asm.$Type v;
net.sf.cglib.core.Signature v, v;
int v, v, v;
java.lang.String v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature GET_CALLBACKS>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: 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()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature BIND_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static_this(net.sf.cglib.core.Signature)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(v);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void 'newarray'(net.sf.cglib.asm.$Type)>(v);
v = 0;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v >= v goto label;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.String getCallbackField(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void aastore()>();
v = v + 1;
goto label;
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitNewInstanceCallbacks(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.asm.$Type v;
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.core.Signature v, v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature NEW_INSTANCE>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type getThisType(net.sf.cglib.core.CodeEmitter)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS>;
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.proxy.Enhancer: void emitCommonNewInstance(net.sf.cglib.core.CodeEmitter)>(v);
return;
}
private net.sf.cglib.asm.$Type getThisType(net.sf.cglib.core.CodeEmitter)
{
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type v, v;
java.lang.Class v;
net.sf.cglib.proxy.Enhancer$EnhancerFactoryData v, v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.CodeEmitter;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
if v != null goto label;
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.core.ClassEmitter getClassEmitter()>();
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.asm.$Type getClassType()>();
return v;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerFactoryData currentData>;
v = v.<net.sf.cglib.proxy.Enhancer$EnhancerFactoryData: java.lang.Class generatedClass>;
v = staticinvoke <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type getType(java.lang.Class)>(v);
return v;
}
private void emitCommonNewInstance(net.sf.cglib.core.CodeEmitter)
{
net.sf.cglib.asm.$Type v;
net.sf.cglib.core.Signature v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.CodeEmitter;
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type getThisType(net.sf.cglib.core.CodeEmitter)>(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 invoke_constructor(net.sf.cglib.asm.$Type)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void aconst_null()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitNewInstanceCallback(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type[] v;
net.sf.cglib.asm.$Type v, v, v;
net.sf.cglib.core.Signature v, v;
int v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SINGLE_NEW_INSTANCE>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
lookupswitch(v)
{
case 0: goto label;
case 1: goto label;
default: goto label;
};
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(1);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void 'newarray'(net.sf.cglib.asm.$Type)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(0);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void aastore()>();
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type getThisType(net.sf.cglib.core.CodeEmitter)>(v);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
goto label;
label:
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type ILLEGAL_STATE_EXCEPTION>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void throw_exception(net.sf.cglib.asm.$Type,java.lang.String)>(v, "More than one callback object required");
label:
specialinvoke v.<net.sf.cglib.proxy.Enhancer: void emitCommonNewInstance(net.sf.cglib.core.CodeEmitter)>(v);
return;
}
private void emitNewInstanceMultiarg(net.sf.cglib.core.ClassEmitter, java.util.List)
{
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.proxy.Enhancer$5 v;
net.sf.cglib.asm.$Type v;
java.util.List v;
net.sf.cglib.core.Signature v, v, v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v := @parameter: java.util.List;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature MULTIARG_NEW_INSTANCE>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(1, v, null);
v = specialinvoke v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type getThisType(net.sf.cglib.core.CodeEmitter)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(2);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(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);
v = new net.sf.cglib.proxy.Enhancer$5;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$5: void <init>(net.sf.cglib.proxy.Enhancer,net.sf.cglib.core.CodeEmitter,net.sf.cglib.asm.$Type)>(v, 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 aconst_null()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitMethods(net.sf.cglib.core.ClassEmitter, java.util.List, java.util.List)
{
java.lang.Integer v, v;
net.sf.cglib.core.Signature v, v;
java.util.Map v, v;
java.lang.reflect.Method v;
boolean v, v, v;
net.sf.cglib.proxy.CallbackFilter v;
java.lang.Exception v;
java.util.List v, v;
java.lang.ClassLoader v;
net.sf.cglib.proxy.BridgeMethodResolver v;
net.sf.cglib.core.CodeEmitter v;
java.lang.Object[] v;
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type[] v, v, v;
net.sf.cglib.proxy.Enhancer$6 v;
java.util.HashMap v, v, v, v;
java.util.ArrayList v;
java.util.HashSet v, v;
int v, v, v, v, v, v, v;
net.sf.cglib.core.CodeGenerationException v;
java.lang.String v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.proxy.CallbackGenerator v, v, v;
java.util.Iterator v, v, v;
java.lang.RuntimeException v;
java.lang.IllegalArgumentException v;
net.sf.cglib.asm.$Type v, v;
java.lang.Class v, v;
java.lang.Object v, v, v, v, v;
net.sf.cglib.proxy.CallbackGenerator[] v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = staticinvoke <net.sf.cglib.proxy.CallbackInfo: net.sf.cglib.proxy.CallbackGenerator[] getGenerators(net.sf.cglib.asm.$Type[])>(v);
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = staticinvoke <net.sf.cglib.core.CollectionUtils: java.util.Map getIndexMap(java.util.List)>(v);
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
if v == null goto label;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
goto label;
label:
v = null;
label:
v = v;
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v == null goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
goto label;
label:
v = null;
label:
v = v;
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter filter>;
v = interfaceinvoke v.<net.sf.cglib.proxy.CallbackFilter: int accept(java.lang.reflect.Method)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v < v goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Callback filter returned an index that is too large: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new java.lang.Integer;
if v == null goto label;
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
goto label;
label:
v = virtualinvoke v.<net.sf.cglib.core.MethodInfo: int getModifiers()>();
label:
specialinvoke v.<java.lang.Integer: void <init>(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = new java.lang.Integer;
specialinvoke v.<java.lang.Integer: void <init>(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v[v];
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = v[v];
v = new java.util.ArrayList;
v = interfaceinvoke v.<java.util.List: int size()>();
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
v = v;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <net.sf.cglib.core.TypeUtils: boolean isBridge(int)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getDeclaringClass()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getDeclaringClass()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = virtualinvoke v.<net.sf.cglib.core.MethodInfo: net.sf.cglib.core.Signature getSignature()>();
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new net.sf.cglib.proxy.BridgeMethodResolver;
v = virtualinvoke v.<net.sf.cglib.proxy.Enhancer: java.lang.ClassLoader getClassLoader()>();
specialinvoke v.<net.sf.cglib.proxy.BridgeMethodResolver: void <init>(java.util.Map,java.lang.ClassLoader)>(v, v);
v = virtualinvoke v.<net.sf.cglib.proxy.BridgeMethodResolver: java.util.Map resolveAll()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter getStaticHook()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type THREAD_LOCAL>;
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()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type THREAD_LOCAL>;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature CSTRUCT_NULL>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_constructor(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void putfield(java.lang.String)>("CGLIB$THREAD_CALLBACKS");
v = newarray (java.lang.Object)[1];
v = new net.sf.cglib.proxy.Enhancer$6;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$6: void <init>(net.sf.cglib.proxy.Enhancer,java.util.Map,java.util.Map,java.util.Map,java.util.Map)>(v, v, v, v, v);
v = 0;
label:
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
if v >= v goto label;
v = v[v];
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
label:
interfaceinvoke v.<net.sf.cglib.proxy.CallbackGenerator: void generate(net.sf.cglib.core.ClassEmitter,net.sf.cglib.proxy.CallbackGenerator$Context,java.util.List)>(v, v, v);
interfaceinvoke v.<net.sf.cglib.proxy.CallbackGenerator: void generateStatic(net.sf.cglib.core.CodeEmitter,net.sf.cglib.proxy.CallbackGenerator$Context,java.util.List)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new net.sf.cglib.core.CodeGenerationException;
specialinvoke v.<net.sf.cglib.core.CodeGenerationException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Exception from label to label with label;
}
private void emitSetThreadCallbacks(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.asm.$Type v;
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.core.Signature v, v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(9, v, null);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>("CGLIB$THREAD_CALLBACKS");
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type THREAD_LOCAL>;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature THREAD_LOCAL_SET>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_virtual(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitSetStaticCallbacks(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.core.Signature v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_STATIC_CALLBACKS>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(9, v, null);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void putfield(java.lang.String)>("CGLIB$STATIC_CALLBACKS");
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private void emitCurrentCallback(net.sf.cglib.core.CodeEmitter, int)
{
net.sf.cglib.asm.$Label v;
net.sf.cglib.core.Signature v;
int v;
java.lang.String v, v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.CodeEmitter;
v := @parameter: int;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.String getCallbackField(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.asm.$Label make_label()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void ifnonnull(net.sf.cglib.asm.$Label)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void pop()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature BIND_CALLBACKS>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_static_this(net.sf.cglib.core.Signature)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_this()>();
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.String getCallbackField(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void mark(net.sf.cglib.asm.$Label)>(v);
return;
}
private void emitBindCallbacks(net.sf.cglib.core.ClassEmitter)
{
net.sf.cglib.asm.$Label v, v;
net.sf.cglib.core.ClassEmitter v;
net.sf.cglib.asm.$Type[] v, v;
net.sf.cglib.core.Signature v, v;
int v, v;
java.lang.String v;
net.sf.cglib.proxy.Enhancer v;
net.sf.cglib.core.Local v;
net.sf.cglib.asm.$Type v, v, v;
net.sf.cglib.core.CodeEmitter v;
v := @this: net.sf.cglib.proxy.Enhancer;
v := @parameter: net.sf.cglib.core.ClassEmitter;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature BIND_CALLBACKS>;
v = virtualinvoke v.<net.sf.cglib.core.ClassEmitter: net.sf.cglib.core.CodeEmitter begin_method(int,net.sf.cglib.core.Signature,net.sf.cglib.asm.$Type[])>(26, v, null);
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.core.Local make_local()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_arg(int)>(0);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void checkcast_this()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void store_local(net.sf.cglib.core.Local)>(v);
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.asm.$Label make_label()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_local(net.sf.cglib.core.Local)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>("CGLIB$BOUND");
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void if_jump(int,net.sf.cglib.asm.$Label)>(154, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_local(net.sf.cglib.core.Local)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void push(int)>(1);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void putfield(java.lang.String)>("CGLIB$BOUND");
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>("CGLIB$THREAD_CALLBACKS");
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type THREAD_LOCAL>;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature THREAD_LOCAL_GET>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void invoke_virtual(net.sf.cglib.asm.$Type,net.sf.cglib.core.Signature)>(v, v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
v = virtualinvoke v.<net.sf.cglib.core.CodeEmitter: net.sf.cglib.asm.$Label make_label()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void ifnonnull(net.sf.cglib.asm.$Label)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void pop()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void getfield(java.lang.String)>("CGLIB$STATIC_CALLBACKS");
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void ifnonnull(net.sf.cglib.asm.$Label)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void pop()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void goTo(net.sf.cglib.asm.$Label)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void mark(net.sf.cglib.asm.$Label)>(v);
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void checkcast(net.sf.cglib.asm.$Type)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void load_local(net.sf.cglib.core.Local)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void swap()>();
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = lengthof v;
v = v - 1;
label:
if v < 0 goto label;
if v == 0 goto label;
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void dup2()>();
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void aaload(int)>(v);
v = v.<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type[] callbackTypes>;
v = v[v];
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void checkcast(net.sf.cglib.asm.$Type)>(v);
v = staticinvoke <net.sf.cglib.proxy.Enhancer: java.lang.String getCallbackField(int)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void putfield(java.lang.String)>(v);
v = v - 1;
goto label;
label:
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void mark(net.sf.cglib.asm.$Label)>(v);
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void return_value()>();
virtualinvoke v.<net.sf.cglib.core.CodeEmitter: void end_method()>();
return;
}
private static java.lang.String getCallbackField(int)
{
int v;
java.lang.String v;
v := @parameter: int;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("CGLIB$CALLBACK_\u0001");
return v;
}
static void <clinit>()
{
net.sf.cglib.core.Signature v, v, v, v, v, v, v, v, v, v, v, v, v;
net.sf.cglib.core.HashCodeCustomizer v;
net.sf.cglib.asm.$Type[] v, v, v, v, v, v, v, v, v;
net.sf.cglib.core.KeyFactory v;
net.sf.cglib.proxy.Enhancer$1 v;
java.lang.String v;
net.sf.cglib.asm.$Type v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
net.sf.cglib.core.AbstractClassGenerator$Source v;
java.lang.Class v;
v = new net.sf.cglib.proxy.Enhancer$1;
specialinvoke v.<net.sf.cglib.proxy.Enhancer$1: void <init>()>();
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.CallbackFilter ALL_ZERO> = v;
v = new net.sf.cglib.core.AbstractClassGenerator$Source;
v = class "Lnet/sf/cglib/proxy/Enhancer;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
specialinvoke v.<net.sf.cglib.core.AbstractClassGenerator$Source: void <init>(java.lang.String)>(v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.AbstractClassGenerator$Source SOURCE> = v;
v = <net.sf.cglib.core.KeyFactory: net.sf.cglib.core.HashCodeCustomizer HASH_ASM_TYPE>;
v = staticinvoke <net.sf.cglib.core.KeyFactory: net.sf.cglib.core.KeyFactory create(java.lang.Class,net.sf.cglib.core.KeyFactoryCustomizer,java.util.List)>(class "Lnet/sf/cglib/proxy/Enhancer$EnhancerKey;", v, null);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.proxy.Enhancer$EnhancerKey KEY_FACTORY> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("Object");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type OBJECT_TYPE> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("net.sf.cglib.proxy.Factory");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type FACTORY> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("IllegalStateException");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type ILLEGAL_STATE_EXCEPTION> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("IllegalArgumentException");
<net.sf.cglib.proxy.Enhancer: 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)>("ThreadLocal");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type THREAD_LOCAL> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.asm.$Type parseType(java.lang.String)>("net.sf.cglib.proxy.Callback");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK> = v;
v = staticinvoke <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type getType(java.lang.Class)>(class "[Lnet/sf/cglib/proxy/Callback;");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseConstructor(java.lang.String)>("");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature CSTRUCT_NULL> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type VOID_TYPE>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
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[])>("CGLIB$SET_THREAD_CALLBACKS", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_THREAD_CALLBACKS> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type VOID_TYPE>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
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[])>("CGLIB$SET_STATIC_CALLBACKS", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_STATIC_CALLBACKS> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_OBJECT>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
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[])>("newInstance", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature NEW_INSTANCE> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_OBJECT>;
v = newarray (net.sf.cglib.asm.$Type)[3];
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_CLASS_ARRAY>;
v[0] = v;
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_OBJECT_ARRAY>;
v[1] = v;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
v[2] = v;
specialinvoke v.<net.sf.cglib.core.Signature: void <init>(java.lang.String,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type[])>("newInstance", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature MULTIARG_NEW_INSTANCE> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.core.Constants: net.sf.cglib.asm.$Type TYPE_OBJECT>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK>;
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[])>("newInstance", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SINGLE_NEW_INSTANCE> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type VOID_TYPE>;
v = newarray (net.sf.cglib.asm.$Type)[2];
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type INT_TYPE>;
v[0] = v;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK>;
v[1] = v;
specialinvoke v.<net.sf.cglib.core.Signature: void <init>(java.lang.String,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type[])>("setCallback", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_CALLBACK> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type INT_TYPE>;
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[])>("getCallback", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature GET_CALLBACK> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.asm.$Type: net.sf.cglib.asm.$Type VOID_TYPE>;
v = newarray (net.sf.cglib.asm.$Type)[1];
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
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[])>("setCallbacks", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature SET_CALLBACKS> = v;
v = new net.sf.cglib.core.Signature;
v = <net.sf.cglib.proxy.Enhancer: net.sf.cglib.asm.$Type CALLBACK_ARRAY>;
v = newarray (net.sf.cglib.asm.$Type)[0];
specialinvoke v.<net.sf.cglib.core.Signature: void <init>(java.lang.String,net.sf.cglib.asm.$Type,net.sf.cglib.asm.$Type[])>("getCallbacks", v, v);
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature GET_CALLBACKS> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("Object get()");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature THREAD_LOCAL_GET> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("void set(Object)");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature THREAD_LOCAL_SET> = v;
v = staticinvoke <net.sf.cglib.core.TypeUtils: net.sf.cglib.core.Signature parseSignature(java.lang.String)>("void CGLIB$BIND_CALLBACKS(Object)");
<net.sf.cglib.proxy.Enhancer: net.sf.cglib.core.Signature BIND_CALLBACKS> = v;
return;
}
}