diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-11-12 02:04:27 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-11-12 02:04:27 +0000 |
commit | 7fc5b874806127cea6c610297a86d446dbfa6120 (patch) | |
tree | 7ab49f51a0ca5d14fefddd0f6060eec226943a53 /llvm/tools/llvm-mc/Disassembler.cpp | |
parent | 2e32155b58aecf4ff9643b3bcae7a7f86d228b0a (diff) | |
download | bcm5719-llvm-7fc5b874806127cea6c610297a86d446dbfa6120.tar.gz bcm5719-llvm-7fc5b874806127cea6c610297a86d446dbfa6120.zip |
Pass an ArrayRef to MCDisassembler::getInstruction.
With this patch MCDisassembler::getInstruction takes an ArrayRef<uint8_t>
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
Diffstat (limited to 'llvm/tools/llvm-mc/Disassembler.cpp')
-rw-r--r-- | llvm/tools/llvm-mc/Disassembler.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
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<uint8_t> 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: |