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
diff --git a/disassembler/disassembler_x86.h b/disassembler/disassembler_x86.h
index f448662..71c3e41 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 @@
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);