GraalVM上运行的JVM字节码是否可以通过自定义`TruffleInstrument`来检测?

问题描述 投票:0回答:1

我想写一个可以检测Java程序的Truffle仪器(或至少JVM字节码程序)在GraalVM上运行时。

我一直在研究执行细粒度的不同方法Java程序的工具以支持运行时验证项目。对我来说,操作Truffle AST节点听起来比我熟悉的更多传统Java工具技术(例如,字节码重写,JVMTI)。

不幸的是,我开始担心无法制作松露仪器甚至“查看” JVM字节码。根据我对GraalVM的实验发射器(例如polyglotjava),使用Truffle API(例如org.graalvm.polyglot.Context),并浏览一些Graal编译器源代码,看来:

  • 松露工具只能“看到”可以由松露解释的代码语言(例如org.graalvm.polyglot.Contextjs)。
  • GraalVM发行版不通过Truffle语言支持JVM字节码。(相反,它通过传统的HotSpot解释器支持JVM字节码,Graal JVMCI编译器,与Truffle无关。)

我创建了一个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字节码。所以请告诉我我错了。

java jvm instrumentation graalvm dynamic-analysis
1个回答
1
投票

松露工具只能“看到”可以用松露语言解释的代码(例如js或llvm)。

这是完全正确的,并且JVM字节码当前不是Truffle语言,即,您目前无法将Truffle Instrumentation用于Java。

但是,Oracle实验室正在进行将Java字节码解释器实现为Truffle语言(代号espresso)的工作,该解释器将很快提供。

© www.soinside.com 2019 - 2024. All rights reserved.