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

David Blaikie dblaikie at gmail.com
Fri Mar 7 00:01:37 PST 2014


Looks good to me (I assume it compiles successfully (you've updated
all the callers, etc), etc)

On Thu, Mar 6, 2014 at 11:46 PM, Ahmed Charles <acharles at outlook.com> wrote:
> 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));
>      }
>    }



More information about the llvm-commits mailing list