GraalVM 上的 JVM 字节码 运行 可以由自定义的“TruffleInstrument”进行检测吗?
Can JVM bytecode running on the GraalVM be instrumented by a custom `TruffleInstrument`?
我想编写一个可以检测 Java 程序的 Truffle 工具
(或至少是 JVM 字节码程序)当它们在 GraalVM 上 运行 时。
我一直在研究执行细粒度的不同方法
Java 程序的检测以支持 运行 时间验证项目。
对我来说,操纵 Truffle AST 节点听起来比
我熟悉的更传统的 Java 仪器技术
(例如字节码重写,JVMTI)。
不幸的是,我开始担心无法制作松露
instrument even "see" JVM 字节码。来自我对 GraalVM 的实验
发射器(例如 polyglot
和 java
),使用 Truffle API 进行实验(例如
org.graalvm.polyglot.Context
),
并浏览了一些 Graal 编译器源代码,似乎是:
- Truffle 工具只能 "see" Truffle 可以解释的代码
语言(例如
js
或 llvm
)。
- GraalVM 发行版不支持通过 Truffle 语言的 JVM 字节码。
(相反,它通过传统的 HotSpot 解释器支持 JVM 字节码和
Graal JVMCI 编译器,与 Truffle 无关。)
我创建了一个 GitHub 存储库,dwtj/ex_graalvm_with_custom_truffle
它展示了一些让我相信这一点的实验。在
特别是,脚本 10 和 11 似乎都表明 Java 从
Java脚本被GraalVM's simpletool
忽略了。
现在,也许这不是一般 Truffle 乐器的问题。也许这个
只是这个特定松露乐器的一个限制。有什么办法
可以增强像 simpletool
这样的 Truffle 工具以支持 JVM
使用标准 Truffle API?
的字节码检测
我真的很想使用 GraalVM 的 Truffle API 来检测 JVM 字节码。所以
请告诉我我错了。
Truffle instruments can only "see" code which can be interpreted by a Truffle language (e.g. js or llvm).
这是完全正确的,JVM 字节码目前不是 Truffle 语言,即您目前不能为 java 使用 Truffle Instrumentation。
但是,Oracle 实验室正在进行 Java 字节码解释器作为 Truffle 语言(代号 espresso)的实施工作,应该很快就会可用。
我想编写一个可以检测 Java 程序的 Truffle 工具 (或至少是 JVM 字节码程序)当它们在 GraalVM 上 运行 时。
我一直在研究执行细粒度的不同方法 Java 程序的检测以支持 运行 时间验证项目。 对我来说,操纵 Truffle AST 节点听起来比 我熟悉的更传统的 Java 仪器技术 (例如字节码重写,JVMTI)。
不幸的是,我开始担心无法制作松露
instrument even "see" JVM 字节码。来自我对 GraalVM 的实验
发射器(例如 polyglot
和 java
),使用 Truffle API 进行实验(例如
org.graalvm.polyglot.Context
),
并浏览了一些 Graal 编译器源代码,似乎是:
- Truffle 工具只能 "see" Truffle 可以解释的代码
语言(例如
js
或llvm
)。 - GraalVM 发行版不支持通过 Truffle 语言的 JVM 字节码。 (相反,它通过传统的 HotSpot 解释器支持 JVM 字节码和 Graal JVMCI 编译器,与 Truffle 无关。)
我创建了一个 GitHub 存储库,dwtj/ex_graalvm_with_custom_truffle
它展示了一些让我相信这一点的实验。在
特别是,脚本 10 和 11 似乎都表明 Java 从
Java脚本被GraalVM's simpletool
忽略了。
现在,也许这不是一般 Truffle 乐器的问题。也许这个
只是这个特定松露乐器的一个限制。有什么办法
可以增强像 simpletool
这样的 Truffle 工具以支持 JVM
使用标准 Truffle API?
我真的很想使用 GraalVM 的 Truffle API 来检测 JVM 字节码。所以 请告诉我我错了。
Truffle instruments can only "see" code which can be interpreted by a Truffle language (e.g. js or llvm).
这是完全正确的,JVM 字节码目前不是 Truffle 语言,即您目前不能为 java 使用 Truffle Instrumentation。
但是,Oracle 实验室正在进行 Java 字节码解释器作为 Truffle 语言(代号 espresso)的实施工作,应该很快就会可用。