summaryrefslogtreecommitdiffstats
path: root/disassembler
diff options
context:
space:
mode:
authorMark Mendell <mark.p.mendell@intel.com>2014-02-19 20:06:20 -0800
committerIan Rogers <irogers@google.com>2014-02-20 15:46:42 -0800
commit4028a6c83a339036864999fdfd2855b012a9f1a7 (patch)
treec86f355cb39adc7a14469f0a4e5727623fbda443 /disassembler
parent0b2b3dbaa3db62c0af0d2f23f6aa1c539afe7443 (diff)
downloadart-4028a6c83a339036864999fdfd2855b012a9f1a7.zip
art-4028a6c83a339036864999fdfd2855b012a9f1a7.tar.gz
art-4028a6c83a339036864999fdfd2855b012a9f1a7.tar.bz2
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.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc
index b6ddc95..d86ba7b 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;