Reviewers: Erik Corry,
Description:
Postpone interrupts while compiling regexp code. This avoids
getting artificial stack overflows due to interrupts while
compiling and visiting the AST nodes. Pending interrupts will
be processed once we're done compiling.
Please review this at http://codereview.chromium.org/1605028/show
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/jsregexp.cc
Index: src/jsregexp.cc
===================================================================
--- src/jsregexp.cc (revision 4400)
+++ src/jsregexp.cc (working copy)
@@ -122,6 +122,7 @@
}
FlattenString(pattern);
CompilationZoneScope zone_scope(DELETE_ON_EXIT);
+ PostponeInterruptScope postpone;
RegExpCompileData parse_result;
FlatStringReader reader(pattern);
if (!ParseRegExp(&reader, flags.is_multiline(), &parse_result)) {
@@ -247,6 +248,7 @@
bool RegExpImpl::CompileIrregexp(Handle<JSRegExp> re, bool is_ascii) {
// Compile the RegExp.
CompilationZoneScope zone_scope(DELETE_ON_EXIT);
+ PostponeInterruptScope postpone;
Object* entry = re->DataAt(JSRegExp::code_index(is_ascii));
if (entry->IsJSObject()) {
// If it's a JSObject, a previous compilation failed and threw this
object.
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
To unsubscribe, reply using "remove me" as the subject.