Simplify ownership with std::unique_ptr. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 13 Aug 2014 18:49:01 +0000 (18:49 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 13 Aug 2014 18:49:01 +0000 (18:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215566 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ExecutionEngine/ObjectCache.h
tools/lli/lli.cpp
unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp

index d1849dfc3bf652d38c7f50d7794b95059851df40..78049a2a7d482903e8346b9bbda85c25ad0735db 100644 (file)
@@ -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<MemoryBuffer> getObject(const Module* M) = 0;
 };
 
 }
index fda55e4b575649706d8e5bd610fd7b5292566b0b..13c32a75593919e5ec53b4c833e4d0ae9baa6cce 100644 (file)
@@ -279,7 +279,7 @@ public:
     outfile.close();
   }
 
-  MemoryBuffer* getObject(const Module* M) override {
+  std::unique_ptr<MemoryBuffer> 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>(
+        MemoryBuffer::getMemBufferCopy(IRObjectBuffer.get()->getBuffer()));
   }
 
 private:
index fbbab42dbb02adfb7b6b1ef60fc0a4af20856db1..5732908cb7c6ea460b6646d4a6bcf5f1ae4edf7c 100644 (file)
@@ -44,14 +44,15 @@ public:
     ObjMap[ModuleID] = copyBuffer(Obj);
   }
 
-  virtual MemoryBuffer* getObject(const Module* M) {
+  virtual std::unique_ptr<MemoryBuffer> 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>(
+        MemoryBuffer::getMemBufferCopy(BufferFound->getBuffer()));
   }
 
   // Test-harness-specific functions