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

Reply via email to