diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-08-26 21:04:04 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-08-26 21:04:04 +0000 |
commit | af07403c3e22c0a89a98d0ab97359d7f561c1f1c (patch) | |
tree | 9c9d438179dd1d472f3ddf5c2cdda55018fa82e8 /lib/ExecutionEngine/MCJIT | |
parent | 3c92309f0d95b7e247de682446ac47774f29af29 (diff) |
Give ExecutionEngine of top level buffers.
Long term the idea if for the engine to not own the buffers, but for now
this is consistent with the rest of the API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216484 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/MCJIT')
-rw-r--r-- | lib/ExecutionEngine/MCJIT/MCJIT.cpp | 8 | ||||
-rw-r--r-- | lib/ExecutionEngine/MCJIT/MCJIT.h | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/lib/ExecutionEngine/MCJIT/MCJIT.cpp b/lib/ExecutionEngine/MCJIT/MCJIT.cpp index 9583fb2add6..e7cc12d71eb 100644 --- a/lib/ExecutionEngine/MCJIT/MCJIT.cpp +++ b/lib/ExecutionEngine/MCJIT/MCJIT.cpp @@ -107,8 +107,6 @@ bool MCJIT::removeModule(Module *M) { return OwnedModules.removeModule(M); } - - void MCJIT::addObjectFile(std::unique_ptr<object::ObjectFile> Obj) { ObjectImage *LoadedObject = Dyld.loadObject(std::move(Obj)); if (!LoadedObject || Dyld.hasError()) @@ -119,11 +117,15 @@ void MCJIT::addObjectFile(std::unique_ptr<object::ObjectFile> Obj) { NotifyObjectEmitted(*LoadedObject); } +void MCJIT::addObjectFile(object::OwningBinary<object::ObjectFile> Obj) { + addObjectFile(std::move(Obj.getBinary())); + Buffers.push_back(std::move(Obj.getBuffer())); +} + void MCJIT::addArchive(object::OwningBinary<object::Archive> A) { Archives.push_back(std::move(A)); } - void MCJIT::setObjectCache(ObjectCache* NewCache) { MutexGuard locked(lock); ObjCache = NewCache; diff --git a/lib/ExecutionEngine/MCJIT/MCJIT.h b/lib/ExecutionEngine/MCJIT/MCJIT.h index 4bf6d2939e7..e90138473d5 100644 --- a/lib/ExecutionEngine/MCJIT/MCJIT.h +++ b/lib/ExecutionEngine/MCJIT/MCJIT.h @@ -217,6 +217,7 @@ class MCJIT : public ExecutionEngine { OwningModuleContainer OwnedModules; SmallVector<object::OwningBinary<object::Archive>, 2> Archives; + SmallVector<std::unique_ptr<MemoryBuffer>, 2> Buffers; typedef SmallVector<ObjectImage *, 2> LoadedObjectList; LoadedObjectList LoadedObjects; @@ -240,6 +241,7 @@ public: /// @{ void addModule(std::unique_ptr<Module> M) override; void addObjectFile(std::unique_ptr<object::ObjectFile> O) override; + void addObjectFile(object::OwningBinary<object::ObjectFile> O) override; void addArchive(object::OwningBinary<object::Archive> O) override; bool removeModule(Module *M) override; |