diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/ExecutionEngine/ExecutionEngine.h | 9 | ||||
| -rw-r--r-- | llvm/lib/ExecutionEngine/ExecutionEngine.cpp | 8 | ||||
| -rw-r--r-- | llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/ExecutionEngine/MCJIT/MCJIT.h | 8 |
4 files changed, 16 insertions, 21 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h b/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h index 09b6cd2c60d..ffedb84da9a 100644 --- a/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h +++ b/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h @@ -139,11 +139,10 @@ protected: /// getMemoryforGV - Allocate memory for a global variable. virtual char *getMemoryForGV(const GlobalVariable *GV); - static ExecutionEngine *(*MCJITCtor)( - std::unique_ptr<Module> M, - std::string *ErrorStr, - RTDyldMemoryManager *MCJMM, - TargetMachine *TM); + static ExecutionEngine *(*MCJITCtor)(std::unique_ptr<Module> M, + std::string *ErrorStr, + RTDyldMemoryManager *MCJMM, + std::unique_ptr<TargetMachine> TM); static ExecutionEngine *(*InterpCtor)(std::unique_ptr<Module> M, std::string *ErrorStr); diff --git a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp index 315dee4944c..df5a4307d85 100644 --- a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp @@ -49,10 +49,8 @@ void ObjectBuffer::anchor() {} void ObjectBufferStream::anchor() {} ExecutionEngine *(*ExecutionEngine::MCJITCtor)( - std::unique_ptr<Module >M, - std::string *ErrorStr, - RTDyldMemoryManager *MCJMM, - TargetMachine *TM) = nullptr; + std::unique_ptr<Module> M, std::string *ErrorStr, + RTDyldMemoryManager *MCJMM, std::unique_ptr<TargetMachine> TM) = nullptr; ExecutionEngine *(*ExecutionEngine::InterpCtor)(std::unique_ptr<Module> M, std::string *ErrorStr) =nullptr; @@ -453,7 +451,7 @@ ExecutionEngine *EngineBuilder::create(TargetMachine *TM) { ExecutionEngine *EE = nullptr; if (ExecutionEngine::MCJITCtor) EE = ExecutionEngine::MCJITCtor(std::move(M), ErrorStr, - MCJMM ? MCJMM : JMM, TheTM.release()); + MCJMM ? MCJMM : JMM, std::move(TheTM)); if (EE) { EE->setVerifyModules(VerifyModules); return EE; diff --git a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp index b114d487daa..2724f8c61ef 100644 --- a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp +++ b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp @@ -46,20 +46,20 @@ extern "C" void LLVMLinkInMCJIT() { ExecutionEngine *MCJIT::createJIT(std::unique_ptr<Module> M, std::string *ErrorStr, RTDyldMemoryManager *MemMgr, - TargetMachine *TM) { + std::unique_ptr<TargetMachine> TM) { // Try to register the program as a source of symbols to resolve against. // // FIXME: Don't do this here. sys::DynamicLibrary::LoadLibraryPermanently(nullptr, nullptr); - return new MCJIT(std::move(M), TM, + return new MCJIT(std::move(M), std::move(TM), MemMgr ? MemMgr : new SectionMemoryManager()); } -MCJIT::MCJIT(std::unique_ptr<Module> M, TargetMachine *tm, +MCJIT::MCJIT(std::unique_ptr<Module> M, std::unique_ptr<TargetMachine> tm, RTDyldMemoryManager *MM) - : ExecutionEngine(std::move(M)), TM(tm), Ctx(nullptr), MemMgr(this, MM), - Dyld(&MemMgr), ObjCache(nullptr) { + : ExecutionEngine(std::move(M)), TM(std::move(tm)), Ctx(nullptr), + MemMgr(this, MM), Dyld(&MemMgr), ObjCache(nullptr) { // FIXME: We are managing our modules, so we do not want the base class // ExecutionEngine to manage them as well. To avoid double destruction // of the first (and only) module added in ExecutionEngine constructor @@ -93,8 +93,6 @@ MCJIT::~MCJIT() { LoadedObjects.clear(); Archives.clear(); - - delete TM; } void MCJIT::addModule(std::unique_ptr<Module> M) { diff --git a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h index be32716433a..1c0d22e0ece 100644 --- a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h +++ b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h @@ -101,7 +101,7 @@ private: // called. class MCJIT : public ExecutionEngine { - MCJIT(std::unique_ptr<Module> M, TargetMachine *tm, + MCJIT(std::unique_ptr<Module> M, std::unique_ptr<TargetMachine> tm, RTDyldMemoryManager *MemMgr); typedef llvm::SmallPtrSet<Module *, 4> ModulePtrSet; @@ -208,7 +208,7 @@ class MCJIT : public ExecutionEngine { } }; - TargetMachine *TM; + std::unique_ptr<TargetMachine> TM; MCContext *Ctx; LinkingMemoryManager MemMgr; RuntimeDyld Dyld; @@ -311,7 +311,7 @@ public: uint64_t getGlobalValueAddress(const std::string &Name) override; uint64_t getFunctionAddress(const std::string &Name) override; - TargetMachine *getTargetMachine() override { return TM; } + TargetMachine *getTargetMachine() override { return TM.get(); } /// @} /// @name (Private) Registration Interfaces @@ -324,7 +324,7 @@ public: static ExecutionEngine *createJIT(std::unique_ptr<Module> M, std::string *ErrorStr, RTDyldMemoryManager *MemMgr, - TargetMachine *TM); + std::unique_ptr<TargetMachine> TM); // @} |

