From 9b0626b52adf95a830976d527e5d1a23da316b92 Mon Sep 17 00:00:00 2001 From: "vegorov@chromium.org" Date: Fri, 21 Oct 2011 10:59:25 +0000 Subject: [PATCH] MIPS: port RegExpMacroAssembler::CheckStackGuardState should update input string pointer... ... when it is moved or changed by GC. Port r9697 (d53382a) BUG= TEST= Review URL: http://codereview.chromium.org/8362024 Patch from Paul Lind . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9740 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mips/regexp-macro-assembler-mips.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mips/regexp-macro-assembler-mips.cc b/src/mips/regexp-macro-assembler-mips.cc index 9db5c5b..cb210fe 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(re_frame, kInputString) = *subject; frame_entry(re_frame, kInputStart) = new_address; frame_entry(re_frame, kInputEnd) = new_address + byte_length; + } else if (frame_entry(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(re_frame, kInputString) = *subject; } return 0; -- 2.7.4