diff options
author | Lang Hames <lhames@gmail.com> | 2015-11-03 16:10:18 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2015-11-03 16:10:18 +0000 |
commit | a4a227f7e881de24ab150d6277d59b256b55d99a (patch) | |
tree | 912c05ce58292facd2e6713c95b78045d8fda0bb /llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp | |
parent | 862432c90e25f0901b77aff92cc6e48acd4b212b (diff) | |
download | bcm5719-llvm-a4a227f7e881de24ab150d6277d59b256b55d99a.tar.gz bcm5719-llvm-a4a227f7e881de24ab150d6277d59b256b55d99a.zip |
[Orc] Directly emit machine code for the x86 resolver block and trampolines.
Bypassing LLVM for this has a number of benefits:
1) Laziness support becomes asm-syntax agnostic (previously lazy jitting didn't
work on Windows as the resolver block was in Darwin asm).
2) For cross-process JITs, it allows resolver blocks and trampolines to be
emitted directly in the target process, reducing cross process traffic.
3) It should be marginally faster.
llvm-svn: 251933
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp b/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp index d3effeec97e..d2379cd441d 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp @@ -12,20 +12,18 @@ using namespace llvm; -LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM, - LLVMContextRef Context) { +LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM) { TargetMachine *TM2(unwrap(TM)); - LLVMContext &Ctx = *unwrap(Context); Triple T(TM2->getTargetTriple()); - auto CallbackMgrBuilder = OrcCBindingsStack::createCallbackManagerBuilder(T); + auto CompileCallbackMgr = OrcCBindingsStack::createCompileCallbackMgr(T); auto IndirectStubsMgrBuilder = OrcCBindingsStack::createIndirectStubsMgrBuilder(T); OrcCBindingsStack *JITStack = - new OrcCBindingsStack(*TM2, Ctx, CallbackMgrBuilder, - IndirectStubsMgrBuilder); + new OrcCBindingsStack(*TM2, std::move(CompileCallbackMgr), + IndirectStubsMgrBuilder); return wrap(JITStack); } |