public final class org.apache.ibatis.javassist.convert.TransformNew extends org.apache.ibatis.javassist.convert.Transformer
{
private int nested;
private java.lang.String classname;
private java.lang.String trapClass;
private java.lang.String trapMethod;
public void <init>(org.apache.ibatis.javassist.convert.Transformer, java.lang.String, java.lang.String, java.lang.String)
{
org.apache.ibatis.javassist.convert.TransformNew v;
java.lang.String v, v, v;
org.apache.ibatis.javassist.convert.Transformer v;
v := @this: org.apache.ibatis.javassist.convert.TransformNew;
v := @parameter: org.apache.ibatis.javassist.convert.Transformer;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
specialinvoke v.<org.apache.ibatis.javassist.convert.Transformer: void <init>(org.apache.ibatis.javassist.convert.Transformer)>(v);
v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String classname> = v;
v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String trapClass> = v;
v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String trapMethod> = v;
return;
}
public void initialize(org.apache.ibatis.javassist.bytecode.ConstPool, org.apache.ibatis.javassist.bytecode.CodeAttribute)
{
org.apache.ibatis.javassist.convert.TransformNew v;
org.apache.ibatis.javassist.bytecode.CodeAttribute v;
org.apache.ibatis.javassist.bytecode.ConstPool v;
v := @this: org.apache.ibatis.javassist.convert.TransformNew;
v := @parameter: org.apache.ibatis.javassist.bytecode.ConstPool;
v := @parameter: org.apache.ibatis.javassist.bytecode.CodeAttribute;
v.<org.apache.ibatis.javassist.convert.TransformNew: int nested> = 0;
return;
}
public int transform(org.apache.ibatis.javassist.CtClass, int, org.apache.ibatis.javassist.bytecode.CodeIterator, org.apache.ibatis.javassist.bytecode.ConstPool) throws org.apache.ibatis.javassist.CannotCompileException
{
org.apache.ibatis.javassist.bytecode.AttributeInfo v, v;
boolean v;
org.apache.ibatis.javassist.CtClass v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v;
org.apache.ibatis.javassist.bytecode.ConstPool v;
org.apache.ibatis.javassist.convert.TransformNew v;
org.apache.ibatis.javassist.bytecode.CodeIterator v;
org.apache.ibatis.javassist.CannotCompileException v;
org.apache.ibatis.javassist.bytecode.CodeAttribute v, v;
v := @this: org.apache.ibatis.javassist.convert.TransformNew;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: int;
v := @parameter: org.apache.ibatis.javassist.bytecode.CodeIterator;
v := @parameter: org.apache.ibatis.javassist.bytecode.ConstPool;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: int byteAt(int)>(v);
if v != 187 goto label;
v = v + 1;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: int u16bitAt(int)>(v);
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: java.lang.String getClassInfo(int)>(v);
v = v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String classname>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v + 3;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: int byteAt(int)>(v);
if v == 89 goto label;
v = new org.apache.ibatis.javassist.CannotCompileException;
specialinvoke v.<org.apache.ibatis.javassist.CannotCompileException: void <init>(java.lang.String)>("NEW followed by no DUP was found");
throw v;
label:
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: void writeByte(int,int)>(0, v);
v = v + 1;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: void writeByte(int,int)>(0, v);
v = v + 2;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: void writeByte(int,int)>(0, v);
v = v + 3;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: void writeByte(int,int)>(0, v);
v = v.<org.apache.ibatis.javassist.convert.TransformNew: int nested>;
v = v + 1;
v.<org.apache.ibatis.javassist.convert.TransformNew: int nested> = v;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: org.apache.ibatis.javassist.bytecode.CodeAttribute get()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeAttribute: org.apache.ibatis.javassist.bytecode.AttributeInfo getAttribute(java.lang.String)>("StackMapTable");
if v == null goto label;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.StackMapTable: void removeNew(int)>(v);
label:
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: org.apache.ibatis.javassist.bytecode.CodeAttribute get()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeAttribute: org.apache.ibatis.javassist.bytecode.AttributeInfo getAttribute(java.lang.String)>("StackMap");
if v == null goto label;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.StackMap: void removeNew(int)>(v);
goto label;
label:
if v != 183 goto label;
v = v + 1;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: int u16bitAt(int)>(v);
v = v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String classname>;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: int isConstructor(java.lang.String,int)>(v, v);
if v == 0 goto label;
v = v.<org.apache.ibatis.javassist.convert.TransformNew: int nested>;
if v <= 0 goto label;
v = specialinvoke v.<org.apache.ibatis.javassist.convert.TransformNew: int computeMethodref(int,org.apache.ibatis.javassist.bytecode.ConstPool)>(v, v);
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: void writeByte(int,int)>(184, v);
v = v + 1;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.CodeIterator: void write16bit(int,int)>(v, v);
v = v.<org.apache.ibatis.javassist.convert.TransformNew: int nested>;
v = v - 1;
v.<org.apache.ibatis.javassist.convert.TransformNew: int nested> = v;
label:
return v;
}
private int computeMethodref(int, org.apache.ibatis.javassist.bytecode.ConstPool)
{
org.apache.ibatis.javassist.convert.TransformNew v;
int v, v, v, v, v, v;
java.lang.String v, v, v, v, v;
org.apache.ibatis.javassist.bytecode.ConstPool v;
v := @this: org.apache.ibatis.javassist.convert.TransformNew;
v := @parameter: int;
v := @parameter: org.apache.ibatis.javassist.bytecode.ConstPool;
v = v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String trapClass>;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: int addClassInfo(java.lang.String)>(v);
v = v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String trapMethod>;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: int addUtf8Info(java.lang.String)>(v);
v = v.<org.apache.ibatis.javassist.convert.TransformNew: java.lang.String classname>;
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: java.lang.String getUtf8Info(int)>(v);
v = staticinvoke <org.apache.ibatis.javassist.bytecode.Descriptor: java.lang.String changeReturnType(java.lang.String,java.lang.String)>(v, v);
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: int addUtf8Info(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: int addNameAndTypeInfo(int,int)>(v, v);
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ConstPool: int addMethodrefInfo(int,int)>(v, v);
return v;
}
}