我目前正在构建一个C库,其中一部分现在使用LLVM来JIT新功能。也就是说,它不会同时JIT它将需要的所有功能,而是不时发现它需要一个新功能并按需JIT它。
这是我第一次使用LLVM,虽然我的初始测试代码似乎工作正常,但我想到的问题是我是否应该为所有新功能重用相同的LLVMModule
对象,或者为每轮编译生成一个新的LLVMModule
。两者都有优点或缺点吗?是否有差异(如果没有,那么LLVMModule
甚至是什么?)
为了记录,我使用了LLVM 3.8的MCJIT,并在已完成的函数上使用LLVMGetFunctionAddress
来导致JITting发生。