[llvm] r243094 - [dsymutil] Refactor BinaryHolder internals. NFC

Frederic Riss friss at apple.com
Thu Jul 23 23:41:00 PDT 2015


Author: friss
Date: Fri Jul 24 01:40:59 2015
New Revision: 243094

URL: http://llvm.org/viewvc/llvm-project?rev=243094&view=rev
Log:
[dsymutil] Refactor BinaryHolder internals. NFC

Call a helper that resets all the internal state of the BinaryHolder
when we change the underlying memory buffer. Makes a followup patch
a tiny bit smaller.

Modified:
    llvm/trunk/tools/dsymutil/BinaryHolder.cpp
    llvm/trunk/tools/dsymutil/BinaryHolder.h

Modified: llvm/trunk/tools/dsymutil/BinaryHolder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/BinaryHolder.cpp?rev=243094&r1=243093&r2=243094&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/BinaryHolder.cpp (original)
+++ llvm/trunk/tools/dsymutil/BinaryHolder.cpp Fri Jul 24 01:40:59 2015
@@ -18,6 +18,14 @@
 namespace llvm {
 namespace dsymutil {
 
+void BinaryHolder::changeBackingMemoryBuffer(
+    std::unique_ptr<MemoryBuffer> &&Buf) {
+  CurrentArchive.reset();
+  CurrentObjectFile.reset();
+
+  CurrentMemoryBuffer = std::move(Buf);
+}
+
 ErrorOr<MemoryBufferRef>
 BinaryHolder::GetMemoryBufferForFile(StringRef Filename,
                                      sys::TimeValue Timestamp) {
@@ -44,10 +52,9 @@ BinaryHolder::GetMemoryBufferForFile(Str
   if (auto Err = ErrOrFile.getError())
     return Err;
 
+  changeBackingMemoryBuffer(std::move(*ErrOrFile));
   if (Verbose)
     outs() << "\tloaded file.\n";
-  CurrentArchive.reset();
-  CurrentMemoryBuffer = std::move(ErrOrFile.get());
   return CurrentMemoryBuffer->getMemBufferRef();
 }
 
@@ -93,12 +100,14 @@ BinaryHolder::MapArchiveAndGetMemberBuff
 
   if (Verbose)
     outs() << "\topened new archive '" << ArchiveFilename << "'\n";
-  auto ErrOrArchive = object::Archive::create((*ErrOrBuff)->getMemBufferRef());
+
+  changeBackingMemoryBuffer(std::move(*ErrOrBuff));
+  auto ErrOrArchive =
+      object::Archive::create(CurrentMemoryBuffer->getMemBufferRef());
   if (auto Err = ErrOrArchive.getError())
     return Err;
 
   CurrentArchive = std::move(*ErrOrArchive);
-  CurrentMemoryBuffer = std::move(*ErrOrBuff);
 
   return GetArchiveMemberBuffer(Filename, Timestamp);
 }

Modified: llvm/trunk/tools/dsymutil/BinaryHolder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/BinaryHolder.h?rev=243094&r1=243093&r2=243094&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/BinaryHolder.h (original)
+++ llvm/trunk/tools/dsymutil/BinaryHolder.h Fri Jul 24 01:40:59 2015
@@ -67,6 +67,8 @@ class BinaryHolder {
   ErrorOr<MemoryBufferRef> GetMemoryBufferForFile(StringRef Filename,
                                                   sys::TimeValue Timestamp);
 
+  void changeBackingMemoryBuffer(std::unique_ptr<MemoryBuffer> &&MemBuf);
+
 public:
   BinaryHolder(bool Verbose) : Verbose(Verbose) {}
 





More information about the llvm-commits mailing list