Reviewers: Vitaly, Dmitry Titov, Erik Corry,
Message:
I think this change should fix the problem with this test on OS X. (The
problem
also happens to surface on other platforms in the isolates branch, which is
why
I'm particularly interested in seeing the issue settled.)
Thanks
Luke
Description:
Make the apply.js unit test more resilient to differing stack positions.
More information is at http://code.google.com/p/v8/issues/detail?id=742
Please review this at http://codereview.chromium.org/2835014/show
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M test/mjsunit/apply.js
Index: test/mjsunit/apply.js
===================================================================
--- test/mjsunit/apply.js (revision 4909)
+++ test/mjsunit/apply.js (working copy)
@@ -112,12 +112,25 @@
return arguments.length + arguments[arguments.length - 1];
}
+var stack_corner_case_failure = 0;
+
for (var j = 1; j < 0x40000000; j <<= 1) {
try {
var a = new Array(j);
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(0, stack_corner_case_failure);
+ stack_corner_case_failure = 1;
+ continue;
+ }
assertTrue(e.toString().indexOf("Function.prototype.apply") != -1,
"exception does not contain Function.prototype.apply: " +
e.toString());
@@ -127,7 +140,7 @@
a = new Array(j);
a[j - 1] = 42;
al.apply(345, a);
- assertUnreachable("Apply of arrray with length " + a.length +
+ assertUnreachable("Apply of array with length " + a.length +
" should have thrown");
} catch (e) {
assertTrue(e.toString().indexOf("Function.prototype.apply") != -1,
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev