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/OrcCBindingsStack.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/OrcCBindingsStack.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp index 93c698da104..7326fa7e2f8 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp @@ -17,19 +17,14 @@ using namespace llvm; -OrcCBindingsStack::CallbackManagerBuilder -OrcCBindingsStack::createCallbackManagerBuilder(Triple T) { +std::unique_ptr<OrcCBindingsStack::CompileCallbackMgr> +OrcCBindingsStack::createCompileCallbackMgr(Triple T) { switch (T.getArch()) { default: return nullptr; case Triple::x86_64: { - typedef orc::JITCompileCallbackManager<CompileLayerT, - orc::OrcX86_64> CCMgrT; - return [](CompileLayerT &CompileLayer, RuntimeDyld::MemoryManager &MemMgr, - LLVMContext &Context) { - return llvm::make_unique<CCMgrT>(CompileLayer, MemMgr, Context, 0, - 64); - }; + typedef orc::JITCompileCallbackManager<orc::OrcX86_64> CCMgrT; + return llvm::make_unique<CCMgrT>(0); } } } |