summaryrefslogtreecommitdiffstats
path: root/llvm/tools/lli/OrcLazyJIT.h
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2015-03-30 18:37:01 +0000
committerLang Hames <lhames@gmail.com>2015-03-30 18:37:01 +0000
commit3c9e20de2e38fff16447f1b4b1bf1ae9c707c708 (patch)
tree461b06eb3d480bfa59784dd48f47ae24deea3ad3 /llvm/tools/lli/OrcLazyJIT.h
parent1facf7a13db0e6989ddec31ab336d7f89e057c43 (diff)
downloadbcm5719-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.h21
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;
OpenPOWER on IntegriCloud