我想写一个可以检测Java程序的Truffle仪器(或至少JVM字节码程序)在GraalVM上运行时。
我一直在研究执行细粒度的不同方法Java程序的工具以支持运行时验证项目。对我来说,操作Truffle AST节点听起来比我熟悉的更多传统Java工具技术(例如,字节码重写,JVMTI)。
不幸的是,我开始担心无法制作松露仪器甚至“查看” JVM字节码。根据我对GraalVM的实验发射器(例如polyglot
和java
),使用Truffle API(例如org.graalvm.polyglot.Context
),并浏览一些Graal编译器源代码,看来:
org.graalvm.polyglot.Context
或js
)。我创建了一个GitHub存储库,llvm
这证明了一些使我相信这一点的实验。在特别是,脚本10和11似乎都表明Java从dwtj/ex_graalvm_with_custom_truffle
只会忽略JavaScript。
现在,也许松露乐器通常不是问题。也许这个仅仅是这种松露乐器的一个限制。有办法吗可以增强dwtj/ex_graalvm_with_custom_truffle
之类的Truffle工具以支持JVM使用标准Truffle API的字节码检测?
我真的很想使用GraalVM的Truffle API来检测JVM字节码。所以请告诉我我错了。
松露工具只能“看到”可以用松露语言解释的代码(例如js或llvm)。
这是完全正确的,并且JVM字节码当前不是Truffle语言,即,您目前无法将Truffle Instrumentation用于Java。
但是,Oracle实验室正在进行将Java字节码解释器实现为Truffle语言(代号espresso)的工作,该解释器将很快提供。