diff options
author | Mark Mendell <mark.p.mendell@intel.com> | 2014-02-19 20:06:20 -0800 |
---|---|---|
committer | Ian Rogers <irogers@google.com> | 2014-02-20 15:46:42 -0800 |
commit | 4028a6c83a339036864999fdfd2855b012a9f1a7 (patch) | |
tree | c86f355cb39adc7a14469f0a4e5727623fbda443 /disassembler | |
parent | 0b2b3dbaa3db62c0af0d2f23f6aa1c539afe7443 (diff) | |
download | art-4028a6c83a339036864999fdfd2855b012a9f1a7.tar.gz art-4028a6c83a339036864999fdfd2855b012a9f1a7.tar.bz2 art-4028a6c83a339036864999fdfd2855b012a9f1a7.zip |
Inline x86 String.indexOf
Take advantage of the presence of a constant search char or start index
to tune the generated code.
Change-Id: I0adcf184fb91b899a95aa4d8ef044a14deb51d88
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Diffstat (limited to 'disassembler')
-rw-r--r-- | disassembler/disassembler_x86.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc index b6ddc95769..d86ba7b77a 100644 --- a/disassembler/disassembler_x86.cc +++ b/disassembler/disassembler_x86.cc @@ -633,6 +633,9 @@ DISASSEMBLER_ENTRY(cmp, case 0x99: opcode << "cdq"; break; + case 0xAF: + opcode << (prefix[2] == 0x66 ? "scasw" : "scasl"); + break; case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: opcode << "mov"; immediate_bytes = 1; @@ -693,6 +696,7 @@ DISASSEMBLER_ENTRY(cmp, has_modrm = true; reg_is_opcode = true; break; + case 0xE3: opcode << "jecxz"; branch_bytes = 1; break; case 0xE8: opcode << "call"; branch_bytes = 4; break; case 0xE9: opcode << "jmp"; branch_bytes = 4; break; case 0xEB: opcode << "jmp"; branch_bytes = 1; break; |