[PATCH] Change MCDisassembler::setSymbolizer to take unique_ptr by value.

Ahmed Charles acharles at outlook.com
Thu Mar 6 23:46:01 PST 2014


Hi chandlerc, dblaikie,

This changes the interface to be more explicit that ownership is being
transferred.

http://llvm-reviews.chandlerc.com/D2999

Files:
  include/llvm/MC/MCDisassembler.h
  lib/MC/MCDisassembler.cpp
  lib/MC/MCDisassembler/Disassembler.cpp
  tools/llvm-objdump/llvm-objdump.cpp

Index: include/llvm/MC/MCDisassembler.h
===================================================================
--- include/llvm/MC/MCDisassembler.h
+++ include/llvm/MC/MCDisassembler.h
@@ -114,7 +114,7 @@
 
   /// Set \p Symzer as the current symbolizer.
   /// This takes ownership of \p Symzer, and deletes the previously set one.
-  void setSymbolizer(std::unique_ptr<MCSymbolizer> &Symzer);
+  void setSymbolizer(std::unique_ptr<MCSymbolizer> Symzer);
 
   /// Sets up an external symbolizer that uses the C API callbacks.
   void setupForSymbolicDisassembly(LLVMOpInfoCallback GetOpInfo,
Index: lib/MC/MCDisassembler.cpp
===================================================================
--- lib/MC/MCDisassembler.cpp
+++ lib/MC/MCDisassembler.cpp
@@ -55,6 +55,6 @@
     Symbolizer->tryAddingPcLoadReferenceComment(cStream, Value, Address);
 }
 
-void MCDisassembler::setSymbolizer(std::unique_ptr<MCSymbolizer> &Symzer) {
-  Symbolizer.reset(Symzer.release());
+void MCDisassembler::setSymbolizer(std::unique_ptr<MCSymbolizer> Symzer) {
+  Symbolizer = std::move(Symzer);
 }
Index: lib/MC/MCDisassembler/Disassembler.cpp
===================================================================
--- lib/MC/MCDisassembler/Disassembler.cpp
+++ lib/MC/MCDisassembler/Disassembler.cpp
@@ -84,7 +84,7 @@
 
   std::unique_ptr<MCSymbolizer> Symbolizer(TheTarget->createMCSymbolizer(
       Triple, GetOpInfo, SymbolLookUp, DisInfo, Ctx, RelInfo.release()));
-  DisAsm->setSymbolizer(Symbolizer);
+  DisAsm->setSymbolizer(std::move(Symbolizer));
   DisAsm->setupForSymbolicDisassembly(GetOpInfo, SymbolLookUp, DisInfo,
                                       Ctx, RelInfo);
   // Set up the instruction printer.
Index: tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- tools/llvm-objdump/llvm-objdump.cpp
+++ tools/llvm-objdump/llvm-objdump.cpp
@@ -327,7 +327,7 @@
       std::unique_ptr<MCSymbolizer> Symzer(
           MCObjectSymbolizer::createObjectSymbolizer(*Ctx.get(), RelInfo, Obj));
       if (Symzer)
-        DisAsm->setSymbolizer(Symzer);
+        DisAsm->setSymbolizer(std::move(Symzer));
     }
   }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2999.1.patch
Type: text/x-patch
Size: 2163 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140306/7aece5bb/attachment.bin>


More information about the llvm-commits mailing list