结合多个Java字节码方法的序列(combine multiple java method byte

2019-10-20 02:52发布

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

A bytecode sequences: 

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

在运行时,B1和B2可以靠近相关,我们希望B1字节码和B2字节代码用“invokevirtul B1”和“B2 invokevirtual”,字节码之间结合,连成一片的方法。

我不知道是否有可能实现,如果能够提供一些线索,我将不胜感激。 谢谢。

Answer 1:

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



Answer 2:

见从我的论文“使用ASM框架来实现通用的字节码转换模式” ASM字节码manipylation框架的代码示例[1]。

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



文章来源: combine multiple java method bytecode sequence