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