From d6448b21bf5339daaf7c0022970c0ffa9fe98a4c Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 13 Aug 2014 18:49:01 +0000 Subject: [PATCH] Simplify ownership with std::unique_ptr. NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215566 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ExecutionEngine/ObjectCache.h | 9 ++++----- tools/lli/lli.cpp | 5 +++-- unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/include/llvm/ExecutionEngine/ObjectCache.h b/include/llvm/ExecutionEngine/ObjectCache.h index d1849dfc3bf..78049a2a7d4 100644 --- a/include/llvm/ExecutionEngine/ObjectCache.h +++ b/include/llvm/ExecutionEngine/ObjectCache.h @@ -29,11 +29,10 @@ public: /// notifyObjectCompiled - Provides a pointer to compiled code for Module M. virtual void notifyObjectCompiled(const Module *M, const MemoryBuffer *Obj) = 0; - /// getObjectCopy - Returns a pointer to a newly allocated MemoryBuffer that - /// contains the object which corresponds with Module M, or 0 if an object is - /// not available. The caller owns both the MemoryBuffer returned by this - /// and the memory it references. - virtual MemoryBuffer* getObject(const Module* M) = 0; + /// Returns a pointer to a newly allocated MemoryBuffer that contains the + /// object which corresponds with Module M, or 0 if an object is not + /// available. + virtual std::unique_ptr getObject(const Module* M) = 0; }; } diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp index fda55e4b575..13c32a75593 100644 --- a/tools/lli/lli.cpp +++ b/tools/lli/lli.cpp @@ -279,7 +279,7 @@ public: outfile.close(); } - MemoryBuffer* getObject(const Module* M) override { + std::unique_ptr getObject(const Module* M) override { const std::string ModuleID = M->getModuleIdentifier(); std::string CacheName; if (!getCacheFilename(ModuleID, CacheName)) @@ -294,7 +294,8 @@ public: // because the file has probably just been mmapped. Instead we make // a copy. The filed-based buffer will be released when it goes // out of scope. - return MemoryBuffer::getMemBufferCopy(IRObjectBuffer.get()->getBuffer()); + return std::unique_ptr( + MemoryBuffer::getMemBufferCopy(IRObjectBuffer.get()->getBuffer())); } private: diff --git a/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp b/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp index fbbab42dbb0..5732908cb7c 100644 --- a/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp +++ b/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp @@ -44,14 +44,15 @@ public: ObjMap[ModuleID] = copyBuffer(Obj); } - virtual MemoryBuffer* getObject(const Module* M) { + virtual std::unique_ptr getObject(const Module* M) { const MemoryBuffer* BufferFound = getObjectInternal(M); ModulesLookedUp.insert(M->getModuleIdentifier()); if (!BufferFound) return nullptr; // Our test cache wants to maintain ownership of its object buffers // so we make a copy here for the execution engine. - return MemoryBuffer::getMemBufferCopy(BufferFound->getBuffer()); + return std::unique_ptr( + MemoryBuffer::getMemBufferCopy(BufferFound->getBuffer())); } // Test-harness-specific functions