如何在Byte Buddy中为“转到”字节代码添加建议?

时间:2016-09-22 04:42:32

标签: java bytecode byte-buddy

我正在构建一个需要在Java 8 Nashorn中运行第三方代码的系统,我想监视/控制CPU和内存使用。我有一个Byte Buddy代理,它添加了关于Javascript方法进入和退出的建议但是因为循环被编译成字节代码,我还需要增加任何倒退的goto字节码。它似乎并不是它目前支持的琐事,但我可以想象它有能力做到这一点。我应该使用它还是编写低级ASM代码来自己做?

1 个答案:

答案 0 :(得分:2)

我是Byte Buddy的开发人员,我不打算支持像方法字节代码操作这样的事情,原因如下:

为了操作方法中的字节代码,Byte Buddy公开了它的底层ASM API(对我而言)感觉就像是处理这种详细编辑的最佳方式。除了方法参数之外,Advice组件做出一些假设,例如空操作数堆栈和局部变量的可覆盖帧。所有这些使得在一个方法中而不是在它之前和之后移植Advice组件是非常重要的。

我考虑添加一些其他组件来在某个时刻用调度程序调用替换任何方法内的方法调用(类似于Javassists有限的方法替换)但不是在不久的将来。