GraalVM:如何实现编译器优化?

时间:2019-05-15 10:57:55

标签: compiler-optimization graalvm

我想开发一种工具,该工具可以根据程序结构在程序中执行某些优化。例如,假设我要在一个循环中标识if-else,并且我的工具将其重写为两个循环。 我希望该工具能够使用多种语言(例如Java,C ++,Python,Javascript等)重写程序。

我正在探索GraalVM是否可以用于此目的,以作为通用平台,在该平台上我可以对各种语言实施相同的优化。

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 编译器,它将Java字节码编译为本地代码
  • 松露,这是一个用于在GraalVM之上实现其他编程语言的框架。

使用Truffle框架实现的语言将部分评估为Java字节码,然后由Graal编译器进行编译。本文/演讲提供了更多详细信息,包括Graal编译器使用的IR:https://chrisseaton.com/truffleruby/jokerconf17/。根据您的具体用例,您可能需要使用Truffle,Truffle部分评估程序或Graal编译器。