public class org.springframework.objenesis.instantiator.sun.MagicInstantiator extends java.lang.Object implements org.springframework.objenesis.instantiator.ObjectInstantiator
{
private static final java.lang.String MAGIC_ACCESSOR;
private static final int INDEX_CLASS_THIS;
private static final int INDEX_CLASS_SUPERCLASS;
private static final int INDEX_UTF8_CONSTRUCTOR_NAME;
private static final int INDEX_UTF8_CONSTRUCTOR_DESC;
private static final int INDEX_UTF8_CODE_ATTRIBUTE;
private static final int INDEX_UTF8_INSTANTIATOR_CLASS;
private static final int INDEX_UTF8_SUPERCLASS;
private static final int INDEX_CLASS_INTERFACE;
private static final int INDEX_UTF8_INTERFACE;
private static final int INDEX_UTF8_NEWINSTANCE_NAME;
private static final int INDEX_UTF8_NEWINSTANCE_DESC;
private static final int INDEX_METHODREF_OBJECT_CONSTRUCTOR;
private static final int INDEX_CLASS_OBJECT;
private static final int INDEX_UTF8_OBJECT;
private static final int INDEX_NAMEANDTYPE_DEFAULT_CONSTRUCTOR;
private static final int INDEX_CLASS_TYPE;
private static final int INDEX_UTF8_TYPE;
private static int CONSTANT_POOL_COUNT;
private static final byte[] CONSTRUCTOR_CODE;
private static final int CONSTRUCTOR_CODE_ATTRIBUTE_LENGTH;
private static final byte[] NEWINSTANCE_CODE;
private static final int NEWINSTANCE_CODE_ATTRIBUTE_LENGTH;
private static final java.lang.String CONSTRUCTOR_NAME;
private static final java.lang.String CONSTRUCTOR_DESC;
private org.springframework.objenesis.instantiator.ObjectInstantiator instantiator;
public void <init>(java.lang.Class)
{
java.lang.Class v;
org.springframework.objenesis.instantiator.ObjectInstantiator v;
org.springframework.objenesis.instantiator.sun.MagicInstantiator v;
v := @this: org.springframework.objenesis.instantiator.sun.MagicInstantiator;
v := @parameter: java.lang.Class;
specialinvoke v.<java.lang.Object: void <init>()>();
v = specialinvoke v.<org.springframework.objenesis.instantiator.sun.MagicInstantiator: org.springframework.objenesis.instantiator.ObjectInstantiator newInstantiatorOf(java.lang.Class)>(v);
v.<org.springframework.objenesis.instantiator.sun.MagicInstantiator: org.springframework.objenesis.instantiator.ObjectInstantiator instantiator> = v;
return;
}
public org.springframework.objenesis.instantiator.ObjectInstantiator getInstantiator()
{
org.springframework.objenesis.instantiator.ObjectInstantiator v;
org.springframework.objenesis.instantiator.sun.MagicInstantiator v;
v := @this: org.springframework.objenesis.instantiator.sun.MagicInstantiator;
v = v.<org.springframework.objenesis.instantiator.sun.MagicInstantiator: org.springframework.objenesis.instantiator.ObjectInstantiator instantiator>;
return v;
}
private org.springframework.objenesis.instantiator.ObjectInstantiator newInstantiatorOf(java.lang.Class)
{
byte[] v;
org.springframework.objenesis.ObjenesisException v, v, v;
java.lang.InstantiationException v;
java.lang.String v, v, v;
java.lang.IllegalAccessException v;
java.lang.Exception v;
org.springframework.objenesis.instantiator.sun.MagicInstantiator v;
java.lang.Class v, v, v, v, v;
java.lang.Object v;
java.lang.ClassLoader v, v;
v := @this: org.springframework.objenesis.instantiator.sun.MagicInstantiator;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("\u0001$$$\u0001");
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v = staticinvoke <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.lang.Class getExistingClass(java.lang.ClassLoader,java.lang.String)>(v, v);
if v != null goto label;
v = specialinvoke v.<org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] writeExtendingClass(java.lang.Class,java.lang.String)>(v, v);
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
v = staticinvoke <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.lang.Class defineClass(java.lang.String,byte[],java.lang.ClassLoader)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = new org.springframework.objenesis.ObjenesisException;
specialinvoke v.<org.springframework.objenesis.ObjenesisException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.Object newInstance()>();
label:
return v;
label:
v := @caughtexception;
v = new org.springframework.objenesis.ObjenesisException;
specialinvoke v.<org.springframework.objenesis.ObjenesisException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new org.springframework.objenesis.ObjenesisException;
specialinvoke v.<org.springframework.objenesis.ObjenesisException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.lang.Exception from label to label with label;
catch java.lang.InstantiationException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
}
private byte[] writeExtendingClass(java.lang.Class, java.lang.String)
{
java.lang.Throwable v;
byte[] v, v, v, v, v, v, v;
org.springframework.objenesis.ObjenesisException v;
java.io.ByteArrayOutputStream v;
java.io.DataOutputStream v, v;
int v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v;
java.io.IOException v;
org.springframework.objenesis.instantiator.sun.MagicInstantiator v;
java.lang.Class v, v;
v := @this: org.springframework.objenesis.instantiator.sun.MagicInstantiator;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = staticinvoke <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.lang.String classNameToInternalClassName(java.lang.String)>(v);
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>(int)>(1000);
label:
v = new java.io.DataOutputStream;
specialinvoke v.<java.io.DataOutputStream: void <init>(java.io.OutputStream)>(v);
v = <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: byte[] MAGIC>;
virtualinvoke v.<java.io.DataOutputStream: void write(byte[])>(v);
v = <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: byte[] VERSION>;
virtualinvoke v.<java.io.DataOutputStream: void write(byte[])>(v);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: int CONSTANT_POOL_COUNT>;
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(7);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(7);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(7);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(8);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>("<init>");
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>("()V");
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>("Code");
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
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[])>("L\u;");
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: java.lang.String MAGIC_ACCESSOR>;
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(7);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(10);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
v = class "Lorg/springframework/objenesis/instantiator/ObjectInstantiator;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>("newInstance");
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>("()Ljava/lang/Object;");
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(10);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(14);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(16);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(7);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(15);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>("java/lang/Object");
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(12);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(3);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(4);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(7);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(18);
virtualinvoke v.<java.io.DataOutputStream: void writeByte(int)>(1);
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = staticinvoke <org.springframework.objenesis.instantiator.util.ClassDefinitionUtils: java.lang.String classNameToInternalClassName(java.lang.String)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeUTF(java.lang.String)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(49);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(2);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(9);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(2);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(3);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(4);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(5);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: int CONSTRUCTOR_CODE_ATTRIBUTE_LENGTH>;
virtualinvoke v.<java.io.DataOutputStream: void writeInt(int)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] CONSTRUCTOR_CODE>;
v = lengthof v;
virtualinvoke v.<java.io.DataOutputStream: void writeInt(int)>(v);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] CONSTRUCTOR_CODE>;
virtualinvoke v.<java.io.DataOutputStream: void write(byte[])>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(11);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(12);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(5);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: int NEWINSTANCE_CODE_ATTRIBUTE_LENGTH>;
virtualinvoke v.<java.io.DataOutputStream: void writeInt(int)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(2);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(1);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] NEWINSTANCE_CODE>;
v = lengthof v;
virtualinvoke v.<java.io.DataOutputStream: void writeInt(int)>(v);
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] NEWINSTANCE_CODE>;
virtualinvoke v.<java.io.DataOutputStream: void write(byte[])>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
virtualinvoke v.<java.io.DataOutputStream: void writeShort(int)>(0);
label:
goto label;
label:
v := @caughtexception;
v = new org.springframework.objenesis.ObjenesisException;
specialinvoke v.<org.springframework.objenesis.ObjenesisException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
throw v;
label:
v = virtualinvoke v.<java.io.ByteArrayOutputStream: byte[] toByteArray()>();
return v;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object newInstance()
{
java.lang.Object v;
org.springframework.objenesis.instantiator.ObjectInstantiator v;
org.springframework.objenesis.instantiator.sun.MagicInstantiator v;
v := @this: org.springframework.objenesis.instantiator.sun.MagicInstantiator;
v = v.<org.springframework.objenesis.instantiator.sun.MagicInstantiator: org.springframework.objenesis.instantiator.ObjectInstantiator instantiator>;
v = interfaceinvoke v.<org.springframework.objenesis.instantiator.ObjectInstantiator: java.lang.Object newInstance()>();
return v;
}
private static java.lang.String getMagicClass()
{
java.lang.Class v;
java.lang.ClassNotFoundException v;
java.lang.ClassLoader v;
label:
v = class "Lorg/springframework/objenesis/instantiator/sun/MagicInstantiator;";
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>("sun.reflect.MagicAccessorImpl", 0, v);
label:
return "sun/reflect/MagicAccessorImpl";
label:
v := @caughtexception;
return "jdk/internal/reflect/MagicAccessorImpl";
catch java.lang.ClassNotFoundException from label to label with label;
}
static void <clinit>()
{
byte[] v, v, v, v;
int v, v, v, v;
java.lang.String v;
v = staticinvoke <org.springframework.objenesis.instantiator.sun.MagicInstantiator: java.lang.String getMagicClass()>();
<org.springframework.objenesis.instantiator.sun.MagicInstantiator: java.lang.String MAGIC_ACCESSOR> = v;
<org.springframework.objenesis.instantiator.sun.MagicInstantiator: int CONSTANT_POOL_COUNT> = 19;
v = newarray (byte)[5];
v[0] = 42;
v[1] = -73;
v[2] = 0;
v[3] = 13;
v[4] = -79;
<org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] CONSTRUCTOR_CODE> = v;
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] CONSTRUCTOR_CODE>;
v = lengthof v;
v = 12 + v;
<org.springframework.objenesis.instantiator.sun.MagicInstantiator: int CONSTRUCTOR_CODE_ATTRIBUTE_LENGTH> = v;
v = newarray (byte)[8];
v[0] = -69;
v[1] = 0;
v[2] = 17;
v[3] = 89;
v[4] = -73;
v[5] = 0;
v[6] = 13;
v[7] = -80;
<org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] NEWINSTANCE_CODE> = v;
v = <org.springframework.objenesis.instantiator.sun.MagicInstantiator: byte[] NEWINSTANCE_CODE>;
v = lengthof v;
v = 12 + v;
<org.springframework.objenesis.instantiator.sun.MagicInstantiator: int NEWINSTANCE_CODE_ATTRIBUTE_LENGTH> = v;
return;
}
}