Simplify ownership with std::unique_ptr. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215566 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2014-08-13 18:49:01 +00:00
parent bd949eea85
commit d6448b21bf
3 changed files with 10 additions and 9 deletions

View File

@ -29,11 +29,10 @@ public:
/// notifyObjectCompiled - Provides a pointer to compiled code for Module M. /// notifyObjectCompiled - Provides a pointer to compiled code for Module M.
virtual void notifyObjectCompiled(const Module *M, const MemoryBuffer *Obj) = 0; virtual void notifyObjectCompiled(const Module *M, const MemoryBuffer *Obj) = 0;
/// getObjectCopy - Returns a pointer to a newly allocated MemoryBuffer that /// Returns a pointer to a newly allocated MemoryBuffer that contains the
/// contains the object which corresponds with Module M, or 0 if an object is /// object which corresponds with Module M, or 0 if an object is not
/// not available. The caller owns both the MemoryBuffer returned by this /// available.
/// and the memory it references. virtual std::unique_ptr<MemoryBuffer> getObject(const Module* M) = 0;
virtual MemoryBuffer* getObject(const Module* M) = 0;
}; };
} }

View File

@ -279,7 +279,7 @@ public:
outfile.close(); outfile.close();
} }
MemoryBuffer* getObject(const Module* M) override { std::unique_ptr<MemoryBuffer> getObject(const Module* M) override {
const std::string ModuleID = M->getModuleIdentifier(); const std::string ModuleID = M->getModuleIdentifier();
std::string CacheName; std::string CacheName;
if (!getCacheFilename(ModuleID, CacheName)) if (!getCacheFilename(ModuleID, CacheName))
@ -294,7 +294,8 @@ public:
// because the file has probably just been mmapped. Instead we make // because the file has probably just been mmapped. Instead we make
// a copy. The filed-based buffer will be released when it goes // a copy. The filed-based buffer will be released when it goes
// out of scope. // out of scope.
return MemoryBuffer::getMemBufferCopy(IRObjectBuffer.get()->getBuffer()); return std::unique_ptr<MemoryBuffer>(
MemoryBuffer::getMemBufferCopy(IRObjectBuffer.get()->getBuffer()));
} }
private: private:

View File

@ -44,14 +44,15 @@ public:
ObjMap[ModuleID] = copyBuffer(Obj); ObjMap[ModuleID] = copyBuffer(Obj);
} }
virtual MemoryBuffer* getObject(const Module* M) { virtual std::unique_ptr<MemoryBuffer> getObject(const Module* M) {
const MemoryBuffer* BufferFound = getObjectInternal(M); const MemoryBuffer* BufferFound = getObjectInternal(M);
ModulesLookedUp.insert(M->getModuleIdentifier()); ModulesLookedUp.insert(M->getModuleIdentifier());
if (!BufferFound) if (!BufferFound)
return nullptr; return nullptr;
// Our test cache wants to maintain ownership of its object buffers // Our test cache wants to maintain ownership of its object buffers
// so we make a copy here for the execution engine. // so we make a copy here for the execution engine.
return MemoryBuffer::getMemBufferCopy(BufferFound->getBuffer()); return std::unique_ptr<MemoryBuffer>(
MemoryBuffer::getMemBufferCopy(BufferFound->getBuffer()));
} }
// Test-harness-specific functions // Test-harness-specific functions