使用LLVM JIT编译带Lua封装的C函数?

我已经将一些C函数编译成了LLVM字节码。现在我想让这些函数可以被Lua脚本引擎访问,然后将Lua脚本编译成本地机器码。

我找到了 llvm-lua 项目,该项目使用llvm编译lua脚本。我现在想知道是否可能对从lua脚本调用的C函数执行即时编译和优化。

例如,我有这两个C函数:

void func1() {
  for(int i = 1; i < 5; ++i)
    printf("hello from func1");
}
void func2() {
  for(int i = 1; i < 5; ++i)
    printf("hello from func2");
}

我将它们暴露给Lua脚本引擎,然后运行如下Lua脚本:

func1()
func2()

然后我希望llvm-lua编译器可以进行优化,并将其编译成相应于以下内容的程序

for(int i = 1; i < 5; ++i) {
  printf("hello from func1");
  printf("hello from func2");
}

而不是

for(int i = 1; i < 5; ++i)
  printf("hello from func1");
for(int i = 1; i < 5; ++i)
  printf("hello from func2");

有没有可能实现这一点?

顺祝商祺,

Manuel

原文链接 https://stackoverflow.com/questions/6161300

点赞