| Index: src/regexp/ia32/regexp-macro-assembler-ia32.cc
|
| diff --git a/src/regexp/ia32/regexp-macro-assembler-ia32.cc b/src/regexp/ia32/regexp-macro-assembler-ia32.cc
|
| index 6ef0f5fff6d7c8684035aac2fa5495b3a927376a..beb0c37feadbd2f6edaf074d1ddc9f3a2483e589 100644
|
| --- a/src/regexp/ia32/regexp-macro-assembler-ia32.cc
|
| +++ b/src/regexp/ia32/regexp-macro-assembler-ia32.cc
|
| @@ -189,7 +189,7 @@ void RegExpMacroAssemblerIA32::CheckGreedyLoop(Label* on_equal) {
|
|
|
|
|
| void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase(
|
| - int start_reg, bool read_backward, Label* on_no_match) {
|
| + int start_reg, bool read_backward, bool unicode, Label* on_no_match) {
|
| Label fallthrough;
|
| __ mov(edx, register_location(start_reg)); // Index of start of capture
|
| __ mov(ebx, register_location(start_reg + 1)); // Index of end of capture
|
| @@ -296,11 +296,18 @@ void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase(
|
| // Address byte_offset1 - Address captured substring's start.
|
| // Address byte_offset2 - Address of current character position.
|
| // size_t byte_length - length of capture in bytes(!)
|
| - // Isolate* isolate
|
| + // Isolate* isolate or 0 if unicode flag.
|
|
|
| // Set isolate.
|
| - __ mov(Operand(esp, 3 * kPointerSize),
|
| - Immediate(ExternalReference::isolate_address(isolate())));
|
| +#ifdef V8_I18N_SUPPORT
|
| + if (unicode) {
|
| + __ mov(Operand(esp, 3 * kPointerSize), Immediate(0));
|
| + } else // NOLINT
|
| +#endif // V8_I18N_SUPPORT
|
| + {
|
| + __ mov(Operand(esp, 3 * kPointerSize),
|
| + Immediate(ExternalReference::isolate_address(isolate())));
|
| + }
|
| // Set byte_length.
|
| __ mov(Operand(esp, 2 * kPointerSize), ebx);
|
| // Set byte_offset2.
|
|
|