Revision: 5045
Author: [email protected]
Date: Mon Jul 12 08:29:25 2010
Log: Remove the special error message for overflows when using
Function.prototype.apply.  This avoids having more than one error
message for stack overflow situations which makes testing a pain.

Review URL: http://codereview.chromium.org/2967003
http://code.google.com/p/v8/source/detail?r=5045

Modified:
 /branches/bleeding_edge/src/messages.js
 /branches/bleeding_edge/src/runtime.js
 /branches/bleeding_edge/test/mjsunit/apply.js

=======================================
--- /branches/bleeding_edge/src/messages.js     Mon Jul 12 06:17:27 2010
+++ /branches/bleeding_edge/src/messages.js     Mon Jul 12 08:29:25 2010
@@ -181,7 +181,6 @@
       // RangeError
       invalid_array_length:         "Invalid array length",
       stack_overflow:               "Maximum call stack size exceeded",
- apply_overflow: "Function.prototype.apply cannot support %0 arguments",
       // SyntaxError
       unable_to_parse:              "Parse error",
       duplicate_regexp_flag:        "Duplicate RegExp flag %0",
=======================================
--- /branches/bleeding_edge/src/runtime.js      Mon Jun 28 23:47:19 2010
+++ /branches/bleeding_edge/src/runtime.js      Mon Jul 12 08:29:25 2010
@@ -431,7 +431,7 @@
   // big enough, but sanity check the value to avoid overflow when
   // multiplying with pointer size.
   if (length > 0x800000) {
-    throw %MakeRangeError('apply_overflow', [length]);
+    throw %MakeRangeError('stack_overflow', []);
   }

   if (!IS_FUNCTION(this)) {
@@ -450,7 +450,7 @@


 function APPLY_OVERFLOW(length) {
-  throw %MakeRangeError('apply_overflow', [length]);
+  throw %MakeRangeError('stack_overflow', []);
 }


=======================================
--- /branches/bleeding_edge/test/mjsunit/apply.js       Tue Jun 22 15:20:58 2010
+++ /branches/bleeding_edge/test/mjsunit/apply.js       Mon Jul 12 08:29:25 2010
@@ -94,7 +94,7 @@
   }
   return doo;
 }
-
+
 assertEquals("42foofishhorse", f.apply(this, arr), "apply to this");

 function s() {
@@ -111,8 +111,6 @@
   assertEquals(345, this);
   return arguments.length + arguments[arguments.length - 1];
 }
-
-var stack_corner_case_failure = false;

 for (var j = 1; j < 0x40000000; j <<= 1) {
   try {
@@ -120,20 +118,7 @@
     a[j - 1] = 42;
     assertEquals(42 + j, al.apply(345, a));
   } catch (e) {
-    if (e.toString().indexOf("Maximum call stack size exceeded") != -1) {
- // For some combinations of build settings, it may be the case that the
-      // stack here is just tall enough to contain the array whose size is
-      // specified by j but is not tall enough to contain the activation
-      // record for the apply call. Allow one such corner case through,
- // checking that the length check will do the right thing for an array
-      // the next size up.
-      assertEquals(false, stack_corner_case_failure);
-      stack_corner_case_failure = true;
-      continue;
-    }
-    assertTrue(e.toString().indexOf("Function.prototype.apply") != -1,
-              "exception does not contain Function.prototype.apply: " +
-                  e.toString());
+ assertTrue(e.toString().indexOf("Maximum call stack size exceeded") != -1);
     for (; j < 0x40000000; j <<= 1) {
       var caught = false;
       try {
@@ -143,9 +128,7 @@
         assertUnreachable("Apply of array with length " + a.length +
                           " should have thrown");
       } catch (e) {
-        assertTrue(e.toString().indexOf("Function.prototype.apply") != -1,
- "exception does not contain Function.prototype.apply [" +
-                   "length = " + j + "]: " + e.toString());
+ assertTrue(e.toString().indexOf("Maximum call stack size exceeded") != -1);
         caught = true;
       }
       assertTrue(caught, "exception not caught");

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

Reply via email to