MCDisassembler::~MCDisassembler() {
}
-void
-MCDisassembler::setupForSymbolicDisassembly(
- LLVMOpInfoCallback GetOpInfo,
- LLVMSymbolLookupCallback SymbolLookUp,
- void *DisInfo,
- MCContext *Ctx,
- OwningPtr<MCRelocationInfo> &RelInfo) {
+void MCDisassembler::setupForSymbolicDisassembly(
+ LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp,
+ void *DisInfo, MCContext *Ctx, std::unique_ptr<MCRelocationInfo> &RelInfo) {
+ this->GetOpInfo = GetOpInfo;
+ this->SymbolLookUp = SymbolLookUp;
+ this->DisInfo = DisInfo;
+ this->Ctx = Ctx;
assert(Ctx != 0 && "No MCContext given for symbolic disassembly");
- Symbolizer.reset(new MCExternalSymbolizer(*Ctx, RelInfo, GetOpInfo,
- SymbolLookUp, DisInfo));
+ if (!Symbolizer)
+ Symbolizer.reset(new MCExternalSymbolizer(*Ctx, std::move(RelInfo),
+ GetOpInfo, SymbolLookUp,
+ DisInfo));
}
bool MCDisassembler::tryAddingSymbolicOperand(MCInst &Inst, int64_t Value,
Symbolizer->tryAddingPcLoadReferenceComment(cStream, Value, Address);
}
-void MCDisassembler::setSymbolizer(OwningPtr<MCSymbolizer> &Symzer) {
- Symbolizer.reset(Symzer.take());
+void MCDisassembler::setSymbolizer(std::unique_ptr<MCSymbolizer> Symzer) {
+ Symbolizer = std::move(Symzer);
}