diff options
| author | Lang Hames <lhames@gmail.com> | 2015-03-30 18:37:01 +0000 |
|---|---|---|
| committer | Lang Hames <lhames@gmail.com> | 2015-03-30 18:37:01 +0000 |
| commit | 3c9e20de2e38fff16447f1b4b1bf1ae9c707c708 (patch) | |
| tree | 461b06eb3d480bfa59784dd48f47ae24deea3ad3 /llvm/tools/lli/OrcLazyJIT.h | |
| parent | 1facf7a13db0e6989ddec31ab336d7f89e057c43 (diff) | |
| download | bcm5719-llvm-3c9e20de2e38fff16447f1b4b1bf1ae9c707c708.tar.gz bcm5719-llvm-3c9e20de2e38fff16447f1b4b1bf1ae9c707c708.zip | |
[Orc] Separate callback manager selection from callback manager construction for
OrcLazyJIT in lli.
Separating these concerns enables more natural error handling.
llvm-svn: 233579
Diffstat (limited to 'llvm/tools/lli/OrcLazyJIT.h')
| -rw-r--r-- | llvm/tools/lli/OrcLazyJIT.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/llvm/tools/lli/OrcLazyJIT.h b/llvm/tools/lli/OrcLazyJIT.h index fc1d0827cbc..89dfa6ba927 100644 --- a/llvm/tools/lli/OrcLazyJIT.h +++ b/llvm/tools/lli/OrcLazyJIT.h @@ -36,17 +36,24 @@ public: CompileCallbackMgr> CODLayerT; typedef CODLayerT::ModuleSetHandleT ModuleHandleT; - OrcLazyJIT(std::unique_ptr<TargetMachine> TM, LLVMContext &Context) - : Error(false), TM(std::move(TM)), + typedef std::function< + std::unique_ptr<CompileCallbackMgr>(CompileLayerT&, + RuntimeDyld::MemoryManager&, + LLVMContext&)> + CallbackManagerBuilder; + + static CallbackManagerBuilder createCallbackManagerBuilder(Triple T); + + OrcLazyJIT(std::unique_ptr<TargetMachine> TM, LLVMContext &Context, + CallbackManagerBuilder &BuildCallbackMgr) + : TM(std::move(TM)), Mang(this->TM->getDataLayout()), ObjectLayer(), CompileLayer(ObjectLayer, orc::SimpleCompiler(*this->TM)), LazyEmitLayer(CompileLayer), - CCMgr(createCallbackMgr(Triple(this->TM->getTargetTriple()), Context)), + CCMgr(BuildCallbackMgr(CompileLayer, CCMgrMemMgr, Context)), CODLayer(LazyEmitLayer, *CCMgr) { } - bool Ok() const { return !Error; } - ModuleHandleT addModule(std::unique_ptr<Module> M) { // Attach a data-layout if one isn't already present. if (M->getDataLayout().isDefault()) @@ -67,9 +74,6 @@ public: private: - std::unique_ptr<CompileCallbackMgr> - createCallbackMgr(Triple T, LLVMContext &Context); - std::string mangle(const std::string &Name) { std::string MangledName; { @@ -79,7 +83,6 @@ private: return MangledName; } - bool Error; std::unique_ptr<TargetMachine> TM; Mangler Mang; SectionMemoryManager CCMgrMemMgr; |

