我想开发一种工具,该工具可以根据程序结构在程序中执行某些优化。例如,假设我要在一个循环中标识if-else,并且我的工具将其重写为两个循环。 我希望该工具能够使用多种语言(例如Java,C ++,Python,Javascript等)重写程序。
我正在探索GraalVM是否可以用于此目的,以作为通用平台,在该平台上我可以对各种语言实施相同的优化。
GraalVM是否具有通用的中间表示形式(类似于LLVM IR)?我查看了文档,但不确定从哪里开始。有指针吗?
注意:我不是在寻找语言之间的互操作性。您可以假定我要重写的程序是用一种语言编写的;对于不同的程序,语言可能会有所不同。
答案 0 :(得分:1)
GraalVM具有与此相关的两个组件:
使用Truffle框架实现的语言将部分评估为Java字节码,然后由Graal编译器进行编译。本文/演讲提供了更多详细信息,包括Graal编译器使用的IR:https://chrisseaton.com/truffleruby/jokerconf17/。根据您的具体用例,您可能需要使用Truffle,Truffle部分评估程序或Graal编译器。