用BCEL设计字节码 - 直接在原方法上加指令 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-20
?議this哈喘?祥頁了崔0刈贋議坪否?。 for(int i = 0;i<types.length;i++){ slot += types[i].getSize();//long,double議size葎2 } /**//* * 登僅圻栖議圭隈喘欺阻陳乂蕉何延楚,資誼蕉何延楚嶄厮将喘欺議恷寄沫哈 * 繍仟恢伏議蕉何延楚紗欺恷寄沫哈朔,云栖彈姥徭失亟議 * BCEL嶄厮将宸劔議圭隈阻 */ LocalVariableGen lvg = wrapgen.addLocalVariable("starttime", Type.LONG, null, null); //枠峨秘匯訳嬉咫囂鞘音聞喘蕉何延楚 InstructionList printlnList = ifact.createPrintln("start test start test start test start test"); InvokeInstruction invokestatic = ifact.createInvoke("java.lang.System", "currentTimeMillis", Type.LONG, Type.NO_ARGS, Constants.INVOKESTATIC); InstructionHandle firstHandle = printlnList.append(invokestatic); //宸倖氏音氏繍蕉何延楚葎2議仇圭議蕉何延楚公顕固,隼朔緩蕉何延楚匆短嗤協吶兆忖??slot宸倖index奕担栖鳩協 //slot?壓哘乎葎2,岻念旗鷹翠慧議頁result佚連頁aload, //亟欺仟恢伏議蕉何延楚議沫哈侃 printlnList.append(InstructionFactory.createStore(Type.LONG, lvg.getIndex())); //紗秘欺岻念議inlist嶄 ilist.insert(printlnList); // //壓囂鞘恷朔壓嬉咫潤崩囂鞘,音嬬酒汽峨秘壓恷朔中,紗秘圭隈嗤卦指峙,夸勣峨秘壓return 岻念 //壓return議扮昨?珊勣枠繍return議哈喘紗秘欺荷恬方媚,奕担資函result壓蕉何延楚嶄index InstructionHandle insertposition =null; if(returnType.getType()!=Type.VOID.getType()){ insertposition = ilist.getEnd().getPrev()? }else{ //卦指峙葎Type.void議三,喇噐短嗤卦指峙?咀緩峪俶勣壓return峺綜念紗祥校阻,吏念函匯倖軸辛 insertposition = ilist.getEnd(); } InstructionList tempList = new InstructionList(); tempList.append(ifact.createFieldAccess("java.lang.System" , "out", new ObjectType("java.io.PrintStream"), Constants.GETSTATIC)); tempList.append(InstructionFactory.DUP); tempList.append(InstructionFactory.DUP); String text = "Call to method "+wrapgen.getName()+" took "; tempList.append(new PUSH(pgen,text)); tempList.append(ifact.createInvoke("java.io.PrintStream", "print", Type.VOID, new Type[]{Type.STRING}, Constants.INVOKEVIRTUAL)); tempList.append(ifact.createInvoke(" |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于用BCEL设计字节码 - 直接在原方法上加指令 - 编程入门网的所有评论