public final class org.springframework.objenesis.instantiator.util.ClassDefinitionUtils extends java.lang.Object
{
public static final byte OPS_aload_0;
public static final byte OPS_invokespecial;
public static final byte OPS_return;
public static final byte OPS_new;
public static final byte OPS_dup;
public static final byte OPS_areturn;
public static final int CONSTANT_Utf;
public static final int CONSTANT_Integer;
public static final int CONSTANT_Float;
public static final int CONSTANT_Long;
public static final int CONSTANT_Double;
public static final int CONSTANT_Class;
public static final int CONSTANT_String;
public static final int CONSTANT_Fieldref;
public static final int CONSTANT_Methodref;
public static final int CONSTANT_InterfaceMethodref;
public static final int CONSTANT_NameAndType;
public static final int CONSTANT_MethodHandle;
public static final int CONSTANT_MethodType;
public static final int CONSTANT_InvokeDynamic;
public static final int ACC_PUBLIC;
public static final int ACC_FINAL;
public static final int ACC_SUPER;
public static final int ACC_INTERFACE;
public static final int ACC_ABSTRACT;
public static final int ACC_SYNTHETIC;
public static final int ACC_ANNOTATION;
public static final int ACC_ENUM;
public static final byte[] MAGIC;
public static final byte[] VERSION;
private static final java.security.ProtectionDomain PROTECTION_DOMAIN;
private void <init>()
{
org.springframework.objenesis.instantiator.util.ClassDefinitionUtils v;
v := @this: org.springframework.objenesis.instantiator.util.ClassDefinitionUtils;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.lang.Class defineClass(java.lang.String, byte[], java.lang.ClassLoader) throws java.lang.Exception
{
sun.misc.Unsafe v;
byte[] v;
java.security.ProtectionDomain v;
int v;
java.lang.Class v;
java.lang.ClassLoader v;
java.lang.String v;
v := @parameter: java.lang.String;
v := @parameter: byte[];
v := @parameter: java.lang.ClassLoader;
v = staticinvoke <org.springframework.objenesis.instantiator.util.UnsafeUtils: sun.misc.Unsafe getUnsafe()>();
v = lengthof v;
v = <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.security.ProtectionDomain PROTECTION_DOMAIN>;
v = virtualinvoke v.<sun.misc.Unsafe: java.lang.Class defineClass(java.lang.String,byte[],int,int,java.lang.ClassLoader,java.security.ProtectionDomain)>(v, v, 0, v, v, v);
staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 1, v);
return v;
}
public static byte[] readClass(java.lang.String) throws java.io.IOException
{
java.lang.Throwable v;
byte[] v, v;
java.lang.IllegalArgumentException v;
int v;
java.lang.Class v;
java.lang.ClassLoader v;
java.lang.String v, v;
java.io.InputStream v;
v := @parameter: java.lang.String;
v = staticinvoke <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.lang.String classNameToResource(java.lang.String)>(v);
v = newarray (byte)[2500];
v = class "Lorg/springframework/objenesis/instantiator/util/ClassDefinitionUtils;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v = virtualinvoke v.<java.lang.ClassLoader: java.io.InputStream getResourceAsStream(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.io.InputStream: int read(byte[])>(v);
label:
virtualinvoke v.<java.io.InputStream: void close()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<java.io.InputStream: void close()>();
throw v;
label:
if v < 2500 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("The class is longer that 2500 bytes which is currently unsupported");
throw v;
label:
v = newarray (byte)[v];
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
return v;
catch java.lang.Throwable from label to label with label;
}
public static void writeClass(java.lang.String, byte[]) throws java.io.IOException
{
java.lang.Throwable v;
byte[] v;
java.io.FileOutputStream v;
java.lang.String v;
java.io.BufferedOutputStream v;
v := @parameter: java.lang.String;
v := @parameter: byte[];
v = new java.io.BufferedOutputStream;
v = new java.io.FileOutputStream;
specialinvoke v.<java.io.FileOutputStream: void <init>(java.lang.String)>(v);
specialinvoke v.<java.io.BufferedOutputStream: void <init>(java.io.OutputStream)>(v);
label:
virtualinvoke v.<java.io.BufferedOutputStream: void write(byte[])>(v);
label:
virtualinvoke v.<java.io.BufferedOutputStream: void close()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<java.io.BufferedOutputStream: void close()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public static java.lang.String classNameToInternalClassName(java.lang.String)
{
java.lang.String v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
return v;
}
public static java.lang.String classNameToResource(java.lang.String)
{
java.lang.String v, v, v;
v := @parameter: java.lang.String;
v = staticinvoke <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.lang.String classNameToInternalClassName(java.lang.String)>(v);
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[])>("\u.class");
return v;
}
public static java.lang.Class getExistingClass(java.lang.ClassLoader, java.lang.String)
{
java.lang.Class v;
java.lang.ClassNotFoundException v;
java.lang.ClassLoader v;
java.lang.String v;
v := @parameter: java.lang.ClassLoader;
v := @parameter: java.lang.String;
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>(v, 1, v);
label:
return v;
label:
v := @caughtexception;
return null;
catch java.lang.ClassNotFoundException from label to label with label;
}
static void <clinit>()
{
byte[] v, v;
org.springframework.objenesis.instantiator.util.ClassDefinitionUtils$1 v;
java.lang.Object v;
v = newarray (byte)[4];
v[0] = -54;
v[1] = -2;
v[2] = -70;
v[3] = -66;
<org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: byte[] MAGIC> = v;
v = newarray (byte)[4];
v[0] = 0;
v[1] = 0;
v[2] = 0;
v[3] = 49;
<org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: byte[] VERSION> = v;
v = new org.springframework.objenesis.instantiator.util.ClassDefinitionUtils$1;
specialinvoke v.<org.springframework.objenesis.instantiator.util.ClassDefinitionUtils$1: void <init>()>();
v = staticinvoke <java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>(v);
<org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.security.ProtectionDomain PROTECTION_DOMAIN> = v;
return;
}
}