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.

Reply via email to