From aade86e04428aad166ede049e4170534c8baba1c Mon Sep 17 00:00:00 2001 From: lukezarko Date: Tue, 22 Jun 2010 22:20:58 +0000 Subject: [PATCH] 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 Review URL: http://codereview.chromium.org/2835014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- test/mjsunit/apply.js | 15 ++++++++++++++- test/mjsunit/mjsunit.status | 3 --- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/test/mjsunit/apply.js b/test/mjsunit/apply.js index a4b0fd7..cab7eb8 100644 --- a/test/mjsunit/apply.js +++ b/test/mjsunit/apply.js @@ -112,12 +112,25 @@ function al() { return arguments.length + arguments[arguments.length - 1]; } +var stack_corner_case_failure = false; + 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(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()); @@ -127,7 +140,7 @@ for (var j = 1; j < 0x40000000; j <<= 1) { 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, diff --git a/test/mjsunit/mjsunit.status b/test/mjsunit/mjsunit.status index 514d345..ceb5e62 100644 --- a/test/mjsunit/mjsunit.status +++ b/test/mjsunit/mjsunit.status @@ -34,9 +34,6 @@ bugs: FAIL # too long to run in debug mode on ARM. fuzz-natives: PASS, SKIP if ($mode == release || $arch == arm) -# Issue 494: new snapshot code breaks mjsunit/apply on mac debug snapshot. -apply: PASS, FAIL if ($system == macos && $mode == debug) - big-object-literal: PASS, SKIP if ($arch == arm) # Issue 488: this test sometimes times out. -- 2.7.4