public final class oadd.javassist.convert.TransformNewClass extends oadd.javassist.convert.Transformer
{
private int nested;
private java.lang.String classname;
private java.lang.String newClassName;
private int newClassIndex;
private int newMethodNTIndex;
private int newMethodIndex;
public void <init>(oadd.javassist.convert.Transformer, java.lang.String, java.lang.String)
{
oadd.javassist.convert.Transformer v;
oadd.javassist.convert.TransformNewClass v;
java.lang.String v, v;
v := @this: oadd.javassist.convert.TransformNewClass;
v := @parameter: oadd.javassist.convert.Transformer;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
specialinvoke v.<oadd.javassist.convert.Transformer: void <init>(oadd.javassist.convert.Transformer)>(v);
v.<oadd.javassist.convert.TransformNewClass: java.lang.String classname> = v;
v.<oadd.javassist.convert.TransformNewClass: java.lang.String newClassName> = v;
return;
}
public void initialize(oadd.javassist.bytecode.ConstPool, oadd.javassist.bytecode.CodeAttribute)
{
oadd.javassist.bytecode.ConstPool v;
oadd.javassist.bytecode.CodeAttribute v;
oadd.javassist.convert.TransformNewClass v;
v := @this: oadd.javassist.convert.TransformNewClass;
v := @parameter: oadd.javassist.bytecode.ConstPool;
v := @parameter: oadd.javassist.bytecode.CodeAttribute;
v.<oadd.javassist.convert.TransformNewClass: int nested> = 0;
v.<oadd.javassist.convert.TransformNewClass: int newMethodIndex> = 0;
v.<oadd.javassist.convert.TransformNewClass: int newMethodNTIndex> = 0;
v.<oadd.javassist.convert.TransformNewClass: int newClassIndex> = 0;
return;
}
public int transform(oadd.javassist.CtClass, int, oadd.javassist.bytecode.CodeIterator, oadd.javassist.bytecode.ConstPool) throws oadd.javassist.CannotCompileException
{
oadd.javassist.CtClass v;
oadd.javassist.convert.TransformNewClass v;
boolean v;
oadd.javassist.bytecode.CodeIterator v;
oadd.javassist.CannotCompileException v;
int v, v, v, v, v, 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, v;
oadd.javassist.bytecode.ConstPool v;
v := @this: oadd.javassist.convert.TransformNewClass;
v := @parameter: oadd.javassist.CtClass;
v := @parameter: int;
v := @parameter: oadd.javassist.bytecode.CodeIterator;
v := @parameter: oadd.javassist.bytecode.ConstPool;
v = virtualinvoke v.<oadd.javassist.bytecode.CodeIterator: int byteAt(int)>(v);
if v != 187 goto label;
v = v + 1;
v = virtualinvoke v.<oadd.javassist.bytecode.CodeIterator: int u16bitAt(int)>(v);
v = virtualinvoke v.<oadd.javassist.bytecode.ConstPool: java.lang.String getClassInfo(int)>(v);
v = v.<oadd.javassist.convert.TransformNewClass: 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.<oadd.javassist.bytecode.CodeIterator: int byteAt(int)>(v);
if v == 89 goto label;
v = new oadd.javassist.CannotCompileException;
specialinvoke v.<oadd.javassist.CannotCompileException: void <init>(java.lang.String)>("NEW followed by no DUP was found");
throw v;
label:
v = v.<oadd.javassist.convert.TransformNewClass: int newClassIndex>;
if v != 0 goto label;
v = v.<oadd.javassist.convert.TransformNewClass: java.lang.String newClassName>;
v = virtualinvoke v.<oadd.javassist.bytecode.ConstPool: int addClassInfo(java.lang.String)>(v);
v.<oadd.javassist.convert.TransformNewClass: int newClassIndex> = v;
label:
v = v.<oadd.javassist.convert.TransformNewClass: int newClassIndex>;
v = v + 1;
virtualinvoke v.<oadd.javassist.bytecode.CodeIterator: void write16bit(int,int)>(v, v);
v = v.<oadd.javassist.convert.TransformNewClass: int nested>;
v = v + 1;
v.<oadd.javassist.convert.TransformNewClass: int nested> = v;
goto label;
label:
if v != 183 goto label;
v = v + 1;
v = virtualinvoke v.<oadd.javassist.bytecode.CodeIterator: int u16bitAt(int)>(v);
v = v.<oadd.javassist.convert.TransformNewClass: java.lang.String classname>;
v = virtualinvoke v.<oadd.javassist.bytecode.ConstPool: int isConstructor(java.lang.String,int)>(v, v);
if v == 0 goto label;
v = v.<oadd.javassist.convert.TransformNewClass: int nested>;
if v <= 0 goto label;
v = virtualinvoke v.<oadd.javassist.bytecode.ConstPool: int getMethodrefNameAndType(int)>(v);
v = v.<oadd.javassist.convert.TransformNewClass: int newMethodNTIndex>;
if v == v goto label;
v.<oadd.javassist.convert.TransformNewClass: int newMethodNTIndex> = v;
v = v.<oadd.javassist.convert.TransformNewClass: int newClassIndex>;
v = virtualinvoke v.<oadd.javassist.bytecode.ConstPool: int addMethodrefInfo(int,int)>(v, v);
v.<oadd.javassist.convert.TransformNewClass: int newMethodIndex> = v;
label:
v = v.<oadd.javassist.convert.TransformNewClass: int newMethodIndex>;
v = v + 1;
virtualinvoke v.<oadd.javassist.bytecode.CodeIterator: void write16bit(int,int)>(v, v);
v = v.<oadd.javassist.convert.TransformNewClass: int nested>;
v = v - 1;
v.<oadd.javassist.convert.TransformNewClass: int nested> = v;
label:
return v;
}
}