我想知道是否有可能将多个java方法字节码序列组合成一个方法。假设我们有一个方法A,它调用另外两个方法B1和B2。
A bytecode sequences:
.....
invokevirtual B1
iload ..
....
invokevirtual B2
.... 在运行时,B1和B2可能是密切相关的,我们希望将B1字节码和B2字节码,以及“InvokeVirtualB1”和“InvokeVirtualB2”之间的字节码结合到一个方法中。
我不知道是否可能实施,如果能提供一些线索,我将不胜感激。谢谢。
发布于 2014-05-10 17:34:43
是的,这是可能的,只要有一些小的限制。主要限制是单个方法的字节码被限制在65535字节以内,但在实践中不太可能遇到这种限制。在单个方法中,异常处理程序、局部变量槽和操作数堆栈的数量也是有限的,尽管更不可能达到这些值。
发布于 2014-05-10 18:07:19
参见我的论文“使用ASM框架实现常见字节码转换模式”1中的ASM字节码流形化框架代码示例。
1
https://stackoverflow.com/questions/23584014
复制相似问题