快速业务通道

用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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号