summaryrefslogtreecommitdiffstats
path: root/llvm/tools/lli/OrcLazyJIT.h
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2015-11-03 16:10:18 +0000
committerLang Hames <lhames@gmail.com>2015-11-03 16:10:18 +0000
commita4a227f7e881de24ab150d6277d59b256b55d99a (patch)
tree912c05ce58292facd2e6713c95b78045d8fda0bb /llvm/tools/lli/OrcLazyJIT.h
parent862432c90e25f0901b77aff92cc6e48acd4b212b (diff)
downloadbcm5719-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/tools/lli/OrcLazyJIT.h')
-rw-r--r--llvm/tools/lli/OrcLazyJIT.h23
1 files changed, 8 insertions, 15 deletions
diff --git a/llvm/tools/lli/OrcLazyJIT.h b/llvm/tools/lli/OrcLazyJIT.h
index 389380e8dd4..ec86a72efaa 100644
--- a/llvm/tools/lli/OrcLazyJIT.h
+++ b/llvm/tools/lli/OrcLazyJIT.h
@@ -23,7 +23,6 @@
#include "llvm/ExecutionEngine/Orc/IRTransformLayer.h"
#include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h"
#include "llvm/ExecutionEngine/RTDyldMemoryManager.h"
-#include "llvm/IR/LLVMContext.h"
namespace llvm {
@@ -41,21 +40,16 @@ public:
IndirectStubsManagerBuilder;
typedef CODLayerT::ModuleSetHandleT ModuleHandleT;
- typedef std::function<
- std::unique_ptr<CompileCallbackMgr>(IRDumpLayerT&,
- RuntimeDyld::MemoryManager&,
- LLVMContext&)>
- CallbackManagerBuilder;
-
- OrcLazyJIT(std::unique_ptr<TargetMachine> TM, LLVMContext &Context,
- CallbackManagerBuilder &BuildCallbackMgr,
+ OrcLazyJIT(std::unique_ptr<TargetMachine> TM,
+ std::unique_ptr<CompileCallbackMgr> CCMgr,
IndirectStubsManagerBuilder IndirectStubsMgrBuilder,
bool InlineStubs)
- : TM(std::move(TM)), DL(this->TM->createDataLayout()), ObjectLayer(),
+ : TM(std::move(TM)), DL(this->TM->createDataLayout()),
+ CCMgr(std::move(CCMgr)),
+ ObjectLayer(),
CompileLayer(ObjectLayer, orc::SimpleCompiler(*this->TM)),
IRDumpLayer(CompileLayer, createDebugDumper()),
- CCMgr(BuildCallbackMgr(IRDumpLayer, CCMgrMemMgr, Context)),
- CODLayer(IRDumpLayer, extractSingleFunction, *CCMgr,
+ CODLayer(IRDumpLayer, extractSingleFunction, *this->CCMgr,
std::move(IndirectStubsMgrBuilder), InlineStubs),
CXXRuntimeOverrides(
[this](const std::string &S) { return mangle(S); }) {}
@@ -68,8 +62,7 @@ public:
DtorRunner.runViaLayer(CODLayer);
}
- static CallbackManagerBuilder createCallbackMgrBuilder(Triple T);
-
+ static std::unique_ptr<CompileCallbackMgr> createCompileCallbackMgr(Triple T);
static IndirectStubsManagerBuilder createIndirectStubsMgrBuilder(Triple T);
ModuleHandleT addModule(std::unique_ptr<Module> M) {
@@ -155,10 +148,10 @@ private:
DataLayout DL;
SectionMemoryManager CCMgrMemMgr;
+ std::unique_ptr<CompileCallbackMgr> CCMgr;
ObjLayerT ObjectLayer;
CompileLayerT CompileLayer;
IRDumpLayerT IRDumpLayer;
- std::unique_ptr<CompileCallbackMgr> CCMgr;
CODLayerT CODLayer;
orc::LocalCXXRuntimeOverrides CXXRuntimeOverrides;
OpenPOWER on IntegriCloud