summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mc/Disassembler.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-11-12 02:04:27 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-11-12 02:04:27 +0000
commit7fc5b874806127cea6c610297a86d446dbfa6120 (patch)
tree7ab49f51a0ca5d14fefddd0f6060eec226943a53 /llvm/tools/llvm-mc/Disassembler.cpp
parent2e32155b58aecf4ff9643b3bcae7a7f86d228b0a (diff)
downloadbcm5719-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.cpp5
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:
OpenPOWER on IntegriCloud