2

使用native-image来改善 Truffle 解释器的启动时间似乎很常见。

我的理解是,使用 native-image 进行 AOT 编译将导致编译为在专用 SubstrateVM 中运行的本机代码的方法。

此外,Truffle 框架依赖于动态收集的分析信息来确定要部分评估哪些节点树。PE 通过获取相关节点的 JVM 字节码并在 Graal JIT 编译器的帮助下对其进行分析来工作。

这就是我感到困惑的地方。如果我们通过 native-image 传递一个 Truffle 解释器,每个节点的方法的代码将是本地代码。那么PE如何进行呢?事实上,Graal 甚至可以在 SubstrateVM 中使用吗?

4

1 回答 1

4

除了解释器的本机代码之外,SVM 还在图像中存储了解释器的表示(一组符合解释器的方法)用于部分评估。这种表示的格式不是 JVM 字节码,而是已经解析成 Graal IR 形式的图。PE 在这些图上运行,生成更小、优化的图,然后将这些图提供给 Graal 编译器,所以是的,SVM 也在本机映像中提供了 Graal 编译器。为什么是 Graal 图而不是字节码?过去使用字节码,但直接存储图形会节省(字节码到 Graal IR)解析步骤。

于 2019-10-13T20:13:42.860 回答