Reviewers: Mads Ager,
Description:
Replace long running loops by OptimizeFunctionOnNextCall in some tests that
are
often timing out on ARM.
Please review this at http://codereview.chromium.org/6910022/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M test/mjsunit/closures.js
M test/mjsunit/compiler/regress-closures-with-eval.js
M test/mjsunit/compiler/regress-intoverflow.js
M test/mjsunit/regress/regress-1099.js
M test/mjsunit/strict-mode-opt.js
Index: test/mjsunit/closures.js
diff --git a/test/mjsunit/closures.js b/test/mjsunit/closures.js
index
ee487a4b031af0fedec86ed49e33b12763dd6df7..18914362d5cf8c5c00cbc464ec2ef3bee23abd68
100644
--- a/test/mjsunit/closures.js
+++ b/test/mjsunit/closures.js
@@ -25,10 +25,10 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --allow-natives-syntax
+
function runner(f, expected) {
- for (var i = 0; i < 1000000; i++) {
- assertEquals(expected, f.call(this));
- }
+ assertEquals(expected, f.call(this));
}
function test(n) {
@@ -36,6 +36,7 @@ function test(n) {
var result = n * 2 + arguments.length;
return result;
}
+ %OptimizeFunctionOnNextCall(MyFunction)
runner(MyFunction, n * 2);
}
Index: test/mjsunit/compiler/regress-closures-with-eval.js
diff --git a/test/mjsunit/compiler/regress-closures-with-eval.js
b/test/mjsunit/compiler/regress-closures-with-eval.js
index
507d74f33ea54f8028f446586b6e1a8a41e5d0b4..babc6288751cf7e81c57dd17041c765a33388340
100644
--- a/test/mjsunit/compiler/regress-closures-with-eval.js
+++ b/test/mjsunit/compiler/regress-closures-with-eval.js
@@ -25,12 +25,15 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --allow-natives-syntax
+
// Verifies that closures in presence of eval work fine.
function withEval(expr, filter) {
function walk(v) {
for (var i in v) {
for (var i in v) {}
}
+ %OptimizeFunctionOnNextCall(filter);
return filter(v);
}
@@ -46,6 +49,7 @@ function makeTagInfoJSON(n) {
var expr = '([' + makeTagInfoJSON(128).join(', ') + '])'
-for (var n = 0; n < 300; n++) {
+for (var n = 0; n < 5; n++) {
withEval(expr, function(a) { return a; });
}
+%OptimizeFunctionOnNextCall(withEval);
Index: test/mjsunit/compiler/regress-intoverflow.js
diff --git a/test/mjsunit/compiler/regress-intoverflow.js
b/test/mjsunit/compiler/regress-intoverflow.js
index
d3842f1c23fb787b3f3d921b46cfab233115d6f2..063a376148d4416a1e8bdf52861129e9114a8b32
100644
--- a/test/mjsunit/compiler/regress-intoverflow.js
+++ b/test/mjsunit/compiler/regress-intoverflow.js
@@ -25,6 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --allow-natives-syntax
+
// Test overflow checks in optimized code.
function testMul(a, b) {
a *= 2;
@@ -34,7 +36,8 @@ function testMul(a, b) {
}
}
-for (var i=0; i<1000000; i++) testMul(0,0);
+for (var i=0; i<5; i++) testMul(0,0);
+%OptimizeFunctionOnNextCall(testMul);
assertEquals(4611686018427388000, testMul(-0x40000000, -0x40000000));
function testAdd(a, b) {
@@ -45,7 +48,8 @@ function testAdd(a, b) {
}
}
-for (var i=0; i<1000000; i++) testAdd(0,0);
+for (var i=0; i<5; i++) testAdd(0,0);
+%OptimizeFunctionOnNextCall(testAdd);
assertEquals(-4294967296, testAdd(-0x40000000, -0x40000000));
@@ -58,5 +62,6 @@ function testSub(a, b) {
}
}
-for (var i=0; i<1000000; i++) testSub(0,0);
+for (var i=0; i<5; i++) testSub(0,0);
+%OptimizeFunctionOnNextCall(testSub);
assertEquals(-2147483650, testSub(-0x40000000, 1));
Index: test/mjsunit/regress/regress-1099.js
diff --git a/test/mjsunit/regress/regress-1099.js
b/test/mjsunit/regress/regress-1099.js
index
0ed6ede4af0f104dc64f2bb6451e986b71863e65..6c2f7e075eccfe211bead10120b6dae85dfa28d0
100644
--- a/test/mjsunit/regress/regress-1099.js
+++ b/test/mjsunit/regress/regress-1099.js
@@ -25,6 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --allow-natives-syntax
+
// Test that LApplyArguments lithium instruction restores context after
the call.
function X() {
@@ -41,6 +43,9 @@ function Y(x) {
var y = Y(X());
-for (var i = 0; i < 1000000; i++) {
+for (var i = 0; i < 5; i++) {
assertTrue(y("foo"));
}
+
+%OptimizeFunctionOnNextCall(y);
+y("foo");
\ No newline at end of file
Index: test/mjsunit/strict-mode-opt.js
diff --git a/test/mjsunit/strict-mode-opt.js
b/test/mjsunit/strict-mode-opt.js
index
e2eae33fc43f40c0cd0ba0a3105740fd03b37bda..5ca5c279e108cbc6bbee2ef962000ba440d27c8d
100644
--- a/test/mjsunit/strict-mode-opt.js
+++ b/test/mjsunit/strict-mode-opt.js
@@ -25,8 +25,10 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --allow-natives-syntax
+
var global = 0;
-var MAX = 1000000;
+var MAX = 5;
// Attempt to inline strcit in non-strict.
@@ -43,6 +45,7 @@ function nonstrictCallStrict(n) {
(function testInlineStrictInNonStrict() {
for (var i = 0; i <= MAX; i ++) {
try {
+ if (i == MAX - 1) %OptimizeFunctionOnNextCall(nonstrictCallStrict);
nonstrictCallStrict(i);
} catch (e) {
assertInstanceof(e, ReferenceError);
@@ -68,6 +71,7 @@ function strictCallNonStrict(n) {
(function testInlineNonStrictInStrict() {
for (var i = 0; i <= MAX; i ++) {
try {
+ if (i == MAX - 1) %OptimizeFunctionOnNextCall(nonstrictCallStrict);
strictCallNonStrict(i);
} catch (e) {
fail("no exception", "exception");
@@ -87,6 +91,7 @@ function strictAssignToUndefined(n) {
(function testOptimizeStrictAssignToUndefined() {
for (var i = 0; i <= MAX; i ++) {
try {
+ if (i == MAX - 1) %OptimizeFunctionOnNextCall(nonstrictCallStrict);
strictAssignToUndefined(i);
} catch (e) {
assertInstanceof(e, ReferenceError);
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev