| Index: src/ia32/regexp-macro-assembler-ia32.cc
|
| diff --git a/src/ia32/regexp-macro-assembler-ia32.cc b/src/ia32/regexp-macro-assembler-ia32.cc
|
| index 8b0b9ab91154520ec34bf35dd9b66cae0a746271..dbf01abff08714d7979578b239b4a93ea5d6a20f 100644
|
| --- a/src/ia32/regexp-macro-assembler-ia32.cc
|
| +++ b/src/ia32/regexp-macro-assembler-ia32.cc
|
| @@ -1141,6 +1141,11 @@ int RegExpMacroAssemblerIA32::CheckStackGuardState(Address* return_address,
|
| frame_entry<const String*>(re_frame, kInputString) = *subject;
|
| frame_entry<const byte*>(re_frame, kInputStart) = new_address;
|
| frame_entry<const byte*>(re_frame, kInputEnd) = new_address + byte_length;
|
| + } else if (frame_entry<const String*>(re_frame, kInputString) != *subject) {
|
| + // Subject string might have been a ConsString that underwent
|
| + // short-circuiting during GC. That will not change start_address but
|
| + // will change pointer inside the subject handle.
|
| + frame_entry<const String*>(re_frame, kInputString) = *subject;
|
| }
|
|
|
| return 0;
|
|
|