Index: src/mips/regexp-macro-assembler-mips.cc |
diff --git a/src/mips/regexp-macro-assembler-mips.cc b/src/mips/regexp-macro-assembler-mips.cc |
index 6ace471ea16f33e4c8832a5d8ce59a094fe0f8db..1ae2a7a8455385bf6e4b479dbde76adb0800320d 100644 |
--- a/src/mips/regexp-macro-assembler-mips.cc |
+++ b/src/mips/regexp-macro-assembler-mips.cc |
@@ -341,7 +341,17 @@ void RegExpMacroAssemblerMIPS::CheckNotBackReferenceIgnoreCase( |
__ Or(t0, t0, Operand(0x20)); // Also convert input character. |
__ Branch(&fail, ne, t0, Operand(a3)); |
__ Subu(a3, a3, Operand('a')); |
+#ifndef ENABLE_LATIN_1 |
__ Branch(&fail, hi, a3, Operand('z' - 'a')); // Is a3 a lowercase letter? |
+#else |
+ __ Branch(&loop_check, ls, a3, Operand('z' - 'a')); |
+ // Latin-1: Check for values in range [224,254] but not 247. |
+ __ Subu(a3, a3, Operand(224 - 'a')); |
+ // Weren't Latin-1 letters. |
+ __ Branch(&fail, hi, a3, Operand(254 - 224)); |
+ // Check for 247. |
+ __ Branch(&fail, eq, a3, Operand(247 - 224)); |
+#endif |
__ bind(&loop_check); |
__ Branch(&loop, lt, a0, Operand(a1)); |