From 7fc5b874806127cea6c610297a86d446dbfa6120 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 12 Nov 2014 02:04:27 +0000 Subject: Pass an ArrayRef to MCDisassembler::getInstruction. With this patch MCDisassembler::getInstruction takes an ArrayRef instead of a MemoryObject. Even on X86 there is a maximum size an instruction can have. Given that, it seems way simpler and more efficient to just pass an ArrayRef to the disassembler instead of a MemoryObject and have it do a virtual call every time it wants some extra bytes. llvm-svn: 221751 --- llvm/tools/llvm-mc/Disassembler.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'llvm/tools/llvm-mc/Disassembler.cpp') diff --git a/llvm/tools/llvm-mc/Disassembler.cpp b/llvm/tools/llvm-mc/Disassembler.cpp index a3f9191d50e..75124db9cd3 100644 --- a/llvm/tools/llvm-mc/Disassembler.cpp +++ b/llvm/tools/llvm-mc/Disassembler.cpp @@ -38,8 +38,7 @@ static bool PrintInsts(const MCDisassembler &DisAsm, MCStreamer &Streamer, bool InAtomicBlock, const MCSubtargetInfo &STI) { // Wrap the vector in a MemoryObject. - StringRef Data((const char*)Bytes.first.data(), Bytes.first.size()); - StringRefMemoryObject memoryObject(Data); + ArrayRef Data(Bytes.first.data(), Bytes.first.size()); // Disassemble it to strings. uint64_t Size; @@ -49,7 +48,7 @@ static bool PrintInsts(const MCDisassembler &DisAsm, MCInst Inst; MCDisassembler::DecodeStatus S; - S = DisAsm.getInstruction(Inst, Size, memoryObject, Index, + S = DisAsm.getInstruction(Inst, Size, Data.slice(Index), Index, /*REMOVE*/ nulls(), nulls()); switch (S) { case MCDisassembler::Fail: -- cgit v1.2.3