GRAALVM:如何实现编译器优化



我想开发一个基于程序结构中程序中某些优化的工具。例如,假设我想在循环中识别是否else,我的工具应将其重写为两个循环。我希望该工具能够从多种语言中重写程序,例如Java,C ,Python,JavaScript等。

我正在探索是否可以将graalvm用于此目的,以充当我可以对各种语言实现相同优化的常见平台。

graalvm是否具有共同的中间表示(类似于LLVM IR(?我查看了文档,但我不确定从哪里开始。有指针吗?

注意:我不是在寻找语言之间的互操作性。您可以假设我要重写的程序是用一种单一语言编写的;对于不同程序,该语言可能不同。

graalvm具有两个与此相关的组件:

  • 编译器,将Java字节码编译到本机代码
  • 松露,这是在Graalvm上实现其他编程语言的框架。

用松露框架实现的语言将部分评估到Java字节码,然后由Graal编译器编译。本文/谈话提供了更多详细信息,包括Graal编译器使用的IR:https://chrisseaton.com/truffleruby/jokerconf17/。根据您的具体用例,您可能需要将其钩成松露,松露部分评估器或Graal编译器。

最新更新