Reviewers: Michael Starzinger,

Description:
Adjust stack limit again to avoid overflow on 64 bit windows

Also add additional stack check.

[email protected]


Please review this at https://chromiumcodereview.appspot.com/10006010/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/bootstrapper.cc
  M src/flag-definitions.h
  M test/mjsunit/regress/regress-119429.js


Index: src/bootstrapper.cc
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index 298652e0f9f92e159a62496db493869f161c4e2b..0e95b4b83974334a6419cabc95e600877def9a2b 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -2295,6 +2295,12 @@ Genesis::Genesis(Isolate* isolate,
   HandleScope scope;
   SaveContext saved_context(isolate);

+ // During genesis, the boilerplate for stack overflow won't work until the
+  // environment has been at least partially initialized. Add a stack check
+  // before entering JS code to catch overflow early.
+  StackLimitCheck check(Isolate::Current());
+  if (check.HasOverflowed()) return;
+
   Handle<Context> new_context = Snapshot::NewContextFromSnapshot();
   if (!new_context.is_null()) {
     global_context_ =
Index: src/flag-definitions.h
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index 0668addb4885849810e2dd273add694ca68de284..75697a89068917730f3883ce174c490c2f57abf8 100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -310,7 +310,9 @@ DEFINE_bool(enable_liveedit, true, "enable liveedit experimental feature") DEFINE_bool(break_on_abort, true, "always cause a debug break before aborting")

 // execution.cc
-DEFINE_int(stack_size, kPointerSize * 128,
+// Slightly less than 1MB on 64-bit, since Windows' default stack size for
+// the main execution thread is 1MB for both 32 and 64-bit.
+DEFINE_int(stack_size, kPointerSize * 123,
            "default size of stack region v8 is allowed to use (in kBytes)")

 // frames.cc
Index: test/mjsunit/regress/regress-119429.js
diff --git a/test/mjsunit/regress/regress-119429.js b/test/mjsunit/regress/regress-119429.js index b3a960dfad1eb54079340ded69729b3a00981998..a87648754a43e8d74b98b642495ba4e40f1551e9 100644
--- a/test/mjsunit/regress/regress-119429.js
+++ b/test/mjsunit/regress/regress-119429.js
@@ -29,7 +29,7 @@

 var d = 0;
 function recurse() {
-  if (++d == 26130) { // A magic number just below stack overflow  on ia32
+  if (++d == 25135) { // A magic number just below stack overflow  on ia32
     %DebugBreak();
   }
   recurse();


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

Reply via email to