X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FMC%2FMCDisassembler.h;h=9d441bbd88fbfb64d8ac1f5cce1e07c33ac42460;hb=dd8406a6b7f0cbf9082c4bdb2cc8c3b3d5da6eec;hp=5ad2d98019f6c723568443927fcb1f0f8112c739;hpb=2c94d0faa0e1c268893d5e04dc77e8a35889db00;p=oota-llvm.git diff --git a/include/llvm/MC/MCDisassembler.h b/include/llvm/MC/MCDisassembler.h index 5ad2d98019f..9d441bbd88f 100644 --- a/include/llvm/MC/MCDisassembler.h +++ b/include/llvm/MC/MCDisassembler.h @@ -10,9 +10,8 @@ #define LLVM_MC_MCDISASSEMBLER_H #include "llvm-c/Disassembler.h" -#include "llvm/ADT/OwningPtr.h" -#include "llvm/MC/MCSymbolizer.h" #include "llvm/MC/MCRelocationInfo.h" +#include "llvm/MC/MCSymbolizer.h" #include "llvm/Support/DataTypes.h" namespace llvm { @@ -56,8 +55,8 @@ public: }; /// Constructor - Performs initial setup for the disassembler. - MCDisassembler(const MCSubtargetInfo &STI) : STI(STI), Symbolizer(0), - CommentStream(0) {} + MCDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx) + : Ctx(Ctx), STI(STI), Symbolizer(), CommentStream(nullptr) {} virtual ~MCDisassembler(); @@ -83,13 +82,13 @@ public: uint64_t address, raw_ostream &vStream, raw_ostream &cStream) const = 0; +private: + MCContext &Ctx; protected: // Subtarget information, for instruction decoding predicates if required. const MCSubtargetInfo &STI; - -private: - OwningPtr Symbolizer; + std::unique_ptr Symbolizer; public: // Helpers around MCSymbolizer @@ -102,14 +101,11 @@ public: /// Set \p Symzer as the current symbolizer. /// This takes ownership of \p Symzer, and deletes the previously set one. - void setSymbolizer(OwningPtr &Symzer); - - /// Sets up an external symbolizer that uses the C API callbacks. - void setupForSymbolicDisassembly(LLVMOpInfoCallback GetOpInfo, - LLVMSymbolLookupCallback SymbolLookUp, - void *DisInfo, - MCContext *Ctx, - OwningPtr &RelInfo); + void setSymbolizer(std::unique_ptr Symzer); + + MCContext& getContext() const { return Ctx; } + + const MCSubtargetInfo& getSubtargetInfo() const { return STI; } // Marked mutable because we cache it inside the disassembler, rather than // having to pass it around as an argument through all the autogenerated code.