From e5eb7060dbacfd7c768692a8fcc4a6017d0bd1cc Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 12 Dec 2014 18:44:19 -0800 Subject: ART: Break up x86 disassembler main function The function leads to large stack frames with Clang. Break out some parts and use four char* variables for opcode. Bug: 18733806 Change-Id: I8bf6da6c763175d7081c4231fa5d3b6809316220 --- disassembler/disassembler_x86.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'disassembler/disassembler_x86.h') diff --git a/disassembler/disassembler_x86.h b/disassembler/disassembler_x86.h index f448662f66..71c3e4161c 100644 --- a/disassembler/disassembler_x86.h +++ b/disassembler/disassembler_x86.h @@ -22,6 +22,8 @@ namespace art { namespace x86 { +enum RegFile { GPR, MMX, SSE }; + class DisassemblerX86 FINAL : public Disassembler { public: DisassemblerX86(DisassemblerOptions* options, bool supports_rex) @@ -33,6 +35,11 @@ class DisassemblerX86 FINAL : public Disassembler { private: size_t DumpInstruction(std::ostream& os, const uint8_t* instr); + std::string DumpAddress(uint8_t mod, uint8_t rm, uint8_t rex64, uint8_t rex_w, bool no_ops, + bool byte_operand, bool byte_second_operand, uint8_t* prefix, bool load, + RegFile src_reg_file, RegFile dst_reg_file, const uint8_t** instr, + uint32_t* address_bits); + const bool supports_rex_; DISALLOW_COPY_AND_ASSIGN(DisassemblerX86); -- cgit v1.2.3-59-g8ed1b