Reviewers: Vyacheslav Egorov, danno,

Message:
a simple port of r9697



Description:
MIPS: port RegExpMacroAssembler::CheckStackGuardState should update input string
pointer...

... when it is moved or changed by GC.

Port r9697 (d53382a)

BUG=
TEST=


Please review this at http://codereview.chromium.org/8362024/

Affected files:
  M src/mips/regexp-macro-assembler-mips.cc


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 9db5c5bed210732fdd1a072cd2c83ab1ba7e45a5..cb210fed04fc88233af4e8d2e23751b813248014 100644
--- a/src/mips/regexp-macro-assembler-mips.cc
+++ b/src/mips/regexp-macro-assembler-mips.cc
@@ -1112,6 +1112,11 @@ int RegExpMacroAssemblerMIPS::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;


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to