组合多个java方法字节码序列

时间:2014-05-10 17:08:54

标签: bytecode java-bytecode-asm bytecode-manipulation

我想知道是否可以将多个java方法字节码序列组合到一个方法中。假设我们有一个方法A,它调用另外两个方法B1和B2。

A bytecode sequences: 

.....
invokevirtual B1 
iload ..
....
invokevirtual B2 
.... 

在运行时,B1和B2可能是紧密相关的,我们希望将B1字节码和B2字节码以及“invokevirtul B1”和“invokevirtual B2”之间的字节码组合成一种方法。

我不确定是否可以实施,如果可以提供一些线索,我将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

是的,有一些小的限制是可能的。主要限制是单个方法的字节码限制为65535字节,但在实践中你不太可能遇到这种限制。单个方法中的异常处理程序,局部变量槽和操作数堆栈大小的数量也是有限的,尽管这些更不可能达到。

答案 1 :(得分:1)

参见我的论文“使用ASM框架实现常见的字节码转换模式”[1]中的ASM字节码操作框架代码示例。

[1] http://asm.ow2.org/current/asm-transformations.pdf

相关问题