package javassist.bytecode; //import javassist.bytecode.*; import javassist.*; import java.io.*; public class CodeIteratorTest{ // EOA_1 and JSI_11 /* public int test1(){ ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); byte[] code = "dd".getBytes(); //CodeAttribute ca = new CodeAttribute(cp, 5, 3, code, et); Bytecode bc = new Bytecode(cp, 1, 0); bc.addIconst(3); bc.addReturn(CtClass.intType); CodeAttribute ca = bc.toCodeAttribute(); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); //Handler hdl = new Handler(et, 0, ca.iterator(), CtClass.intType, null); //System.out.println(et.catchType(1)); //hdl.replace0(0, bc, 2); //ExprEditor ee = new ExprEditor(); //hdl.runEditor(ee, ca.iterator()); et.remove(0); //System.out.println(cip.etable.size()); return cip.etable.size(); } public int test2(){ ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); byte[] code = "dd".getBytes(); //CodeAttribute ca = new CodeAttribute(cp, 5, 3, code, et); Bytecode bc = new Bytecode(cp, 1, 0); bc.addIconst(3); bc.addReturn(CtClass.intType); CodeAttribute ca = bc.toCodeAttribute(); CodeIterator ci = new CodeIterator(ca); return ci.bytecode.length; } public int test3(){ ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); byte[] code = "dd".getBytes(); //CodeAttribute ca = new CodeAttribute(cp, 5, 3, code, et); Bytecode bc = new Bytecode(cp, 1, 0); bc.addIconst(3); bc.addReturn(CtClass.intType); CodeAttribute ca = bc.toCodeAttribute(); CodeIterator ci = new CodeIterator(ca); ci.begin(); return ci.endPos; } public int test4() throws Exception{ ClassPool pool = ClassPool.getDefault(); pool.insertClassPath("c:\\mujava\\classes"); CtClass cc = pool.get("javassist.bytecode.AttributeInfo"); CtConstructor[] ccs = cc.getDeclaredConstructors(); for(int i = 0; i < ccs.length;i++){ //System.out.println(ccs[i].isConstructor()); CodeAttribute ca = ccs[i].getMethodInfo().getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); while(ci.hasNext()){ int index = ci.next(); int op = ci.byteAt(index); //System.out.println(Mnemonic.OPCODE[op]); // System.out.println("Declared class name: " + ci.codeAttr.getDeclaringClass()); } int temp = ci.skipThisConstructor(); if(temp != -1) return temp; } return -1; } public int test5() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Gap cig = new CodeIterator.Gap(); cig = ci.insertGapAt(0, 4, true); return ci.endPos; } public int test6() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); byte[] code = "".getBytes(); return ci.append(code); } public int test7() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); byte[] code = "".getBytes(); ci.appendGap(1); return ci.endPos; } //IOP_1 public int test8() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump16 cij16 = new CodeIterator.Jump16(2, -2); cij16.shift(1, -5, false); return cij16.offset; } //IOP_2 is equivalent //IOP_3 public int test9() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump32 cij32 = new CodeIterator.Jump32(2, -2); cij32.shift(1, -5, false); return cij32.offset; } public int test10() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; CodeIterator.Table cit = new CodeIterator.Table(2, 1, 0, 6, offsets1); cit.shift(1, -5, false); int result = 0; int[] offsets = cit.offsets; for(int i = 0; i < offsets.length;i++) result = result + offsets[i]; return result; } //IOP_5 is equivalent public int test11() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca = minfo.getCodeAttribute(); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator ci1 = new CodeIterator(ca1); return ci.codeAttr.getCodeLength(); } public int test12() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci1 = new CodeIterator(ca1); ci1.move(5); return ci.currentPos; } public int test13() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci1 = new CodeIterator(ca1); ci1.setMark(5); return ci.getMark(); } public int test14() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Gap cig = new CodeIterator.Gap(); CodeIterator.Gap cig1 = new CodeIterator.Gap(); cig1 = ci.insertGapAt(4, 0, true); return cig.position; } public int test15() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Gap cig = new CodeIterator.Gap(); CodeIterator.Gap cig1 = new CodeIterator.Gap(); cig1 = ci.insertGapAt(4, -6, true); return cig.length; } public int test16() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 1, 2, et, ca); return cip.cursor; } public int test17() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 1, 3, et, ca); return cip.mark0; } public int test18() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 2, 3, et, ca); return cip.mark; }*/ /* NOT USED public int test19() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); ExceptionTable et1 = new ExceptionTable(cp); et1.add(0,1,2,0,0); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 2, 3, et1, ca); return cip.etable.size(); }*/ /* public int test20() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci1 = new CodeIterator(ca1); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 2, 3, et, ca1); return cip.line.tableLength(); } public int test21() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci1 = new CodeIterator(ca1); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 2, 3, et, ca1); return cip.vars.tableLength(); } public int test22() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci1 = new CodeIterator(ca1); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 2, 3, et, ca1); return cip.types.tableLength(); } public int test23() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); MethodInfo minfo1 = cf.getMethod("skipThisConstructor"); CodeAttribute ca1 = minfo1.getCodeAttribute(); CodeIterator ci1 = new CodeIterator(ca1); ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); CodeIterator.Pointers cip = new CodeIterator.Pointers(0, 1, 2, et, ca); CodeIterator.Pointers cip1 = new CodeIterator.Pointers(1, 2, 3, et, ca1); return cip.stack.length(); } public int test24() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.LdcW cil = new CodeIterator.LdcW(2, -2); CodeIterator.LdcW cil1 = new CodeIterator.LdcW(3, -2); return cil.pos; } public int test25() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.LdcW cil = new CodeIterator.LdcW(2, -2); CodeIterator.LdcW cil1 = new CodeIterator.LdcW(3, -2); return cil.orgPos; } public int test26() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.LdcW cil = new CodeIterator.LdcW(2, -2); CodeIterator.LdcW cil1 = new CodeIterator.LdcW(3, -2); return cil.index; } public boolean test27() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.LdcW cil = new CodeIterator.LdcW(2, -1); CodeIterator.LdcW cil1 = new CodeIterator.LdcW(3, -2); return cil.state; }/* /// NOT USED public int test28() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump16 cij16 = new CodeIterator.Jump16(2, -2); CodeIterator.Jump16 cij161 = new CodeIterator.Jump16(3, -2); return cij16.offset; } public int test29() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump16 cij16 = new CodeIterator.Jump16(2, -2); CodeIterator.Jump16 cij161 = new CodeIterator.Jump16(3, -2); return cij16.state; }/*NOT USED public int test30() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump32 cij32 = new CodeIterator.Jump32(2, -2); CodeIterator.Jump32 cij321 = new CodeIterator.Jump32(3, -2); return cij32.offset; }*/ /* public int test31() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; CodeIterator.Table cit = new CodeIterator.Table(2, 1, 0, 6, offsets1); CodeIterator.Table cit1 = new CodeIterator.Table(3, 2, 1, 4, offsets1); return cit.gap; } public int test32() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; int[] offsets2 = {-2, 0}; CodeIterator.Table cit = new CodeIterator.Table(2, 1, 0, 6, offsets1); CodeIterator.Table cit1 = new CodeIterator.Table(3, 2, 1, 4, offsets2); return cit.defaultByte; }/*NOT USED public int test33() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; int[] offsets2 = {-2, 0}; CodeIterator.Table cit = new CodeIterator.Table(2, 1, 0, 6, offsets1); CodeIterator.Table cit1 = new CodeIterator.Table(3, 2, 1, 4, offsets2); return cit.offsets.length; }*/ /* public int test34() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; int[] offsets2 = {-2, 0}; CodeIterator.Table cit = new CodeIterator.Table(2, 1, 8, 6, offsets1); CodeIterator.Table cit1 = new CodeIterator.Table(3, 2, 1, 4, offsets2); return cit.low; } public int test35() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; int[] offsets2 = {-2, 0}; CodeIterator.Table cit = new CodeIterator.Table(2, 1, 0, 6, offsets1); CodeIterator.Table cit1 = new CodeIterator.Table(3, 2, 1, 4, offsets2); return cit.high; } public int test36() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); int[] offsets1 = {-2}; int[] offsets2 = {-2, 0}; int[] matches1 = {-2}; int[] matches2 = {-2, 0}; CodeIterator.Lookup cit = new CodeIterator.Lookup(2, 1, matches1, offsets1); CodeIterator.Lookup cit1 = new CodeIterator.Lookup(3, 2, matches2, offsets2); return cit.matches.length; }*/ //JTI //JTI_11 IS EQUIVALENT //OMR /* public int test37() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); return ci.insertGap(1, 2); }*/ public int test38() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); return ci.insertExGap(1, 2); } /* public int test88() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump16 cij16 = new CodeIterator.Jump16(1, 2); cij16.shift(1, 2, false); return cij16.offset; } public int test89() throws Exception{ BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump16 cij16 = new CodeIterator.Jump16(2, -2); cij16.shift(1, -5, true); return cij16.pos; } public static void main(String[] args) throws Exception{ /*ConstPool cp = new ConstPool("assignment10.Point2"); ExceptionTable et = new ExceptionTable(cp); et.add(0,1,2,0,0); et.add(1,1,2,0,2); //byte[] code = "dd".getBytes(); //CodeAttribute ca = new CodeAttribute(cp, 5, 3, code, et); Bytecode bc = new Bytecode(cp, 1, 0); bc.addIconst(3); bc.addReturn(CtClass.intType); CodeAttribute ca = bc.toCodeAttribute(); CodeIterator ci = new CodeIterator(ca); */ // BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); // ClassFile cf = new ClassFile(new DataInputStream(fin)); // MethodInfo minfo = cf.getMethod("CodeIterator"); /* ClassPool pool = ClassPool.getDefault(); pool.insertClassPath("c:\\mujava\\classes"); CtClass cc = pool.get("javassist.bytecode.AttributeInfo"); CtConstructor[] ccs = cc.getDeclaredConstructors(); for(int i = 0; i < ccs.length;i++){ System.out.println(ccs[i].isConstructor()); CodeAttribute ca = ccs[i].getMethodInfo().getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); while(ci.hasNext()){ int index = ci.next(); int op = ci.byteAt(index); System.out.println(Mnemonic.OPCODE[op]); System.out.println("Declared class name: " + ci.codeAttr.getDeclaringClass()); System.out.println("class name: " + ci.codeAttr.getName()); } System.out.println("skipThisConstructor: "); System.out.println("result: " + ci.skipThisConstructor()); System.out.println("skipSuperConstructor: "); System.out.println("result: " + ci.skipSuperConstructor());}*/ /* BufferedInputStream fin = new BufferedInputStream(new FileInputStream("c:\\mujava\\classes\\javassist\\bytecode\\CodeIterator.class")); ClassFile cf = new ClassFile(new DataInputStream(fin)); MethodInfo minfo = cf.getMethod("insertGapAt"); CodeAttribute ca = minfo.getCodeAttribute(); CodeIterator ci = new CodeIterator(ca); CodeIterator.Jump16 cij16 = new CodeIterator.Jump16(2, -2); cij16.shift(1, -5, true); System.out.println("pos: " + cij16.pos); System.out.println("offset: " + cij16.offset); } */ }