0

我正在开发基于 llvm 的东西,并且我想在运行代码时执行 JIT,在代码 jited 中,我在未 jited 的代码中使用了一些函数(生成 jit 代码的程序代码)。但我发现它很昂贵,运行代码需要花费大量时间。有没有办法将原始代码中的函数编译为内部表示,并将其粘贴到 jited 代码中,比如内联函数。例如:原始代码:

void f(){
//....
}

------------抖动代码

jitted_function(){
  f();
}

我想要的是:--------------------jitted 代码

inline void f(){
//...
}

jitted_function(){
  f();
}

最难的是如果我直接粘贴c++代码,那么我要解析f使用的函数和类,还要粘贴,我不想这样做。

4

1 回答 1

2

这只是代码:-)

您希望代码同时出现在主机程序和 JITed 程序中 - 因此将其放置在两者都可以访问的地方并调整您的构建以使其包含在两个地方。这是一个问题吗?

至于您问题的第一部分,我觉得从 JITed 代码调用主机代码“非常慢”这听起来很奇怪。只要宿主代码也是用优化构建的,它应该不会明显变慢,这要感谢从 JITed 代码本身调用函数。也许如果它是一个你想要内联的小函数,可能会有区别。在这种情况下,只需将其包含在两个地方即可。

于 2013-07-08T16:03:12.797 回答