Reduce the number of iterations in some OSR tests by using an explicit %OptimizeOsr().

R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/913463002

Cr-Commit-Position: refs/heads/master@{#26540}
This commit is contained in:
titzer 2015-02-10 01:53:09 -08:00 committed by Commit bot
parent f40238d36b
commit 1db760de7d
8 changed files with 30 additions and 109 deletions

View File

@ -25,37 +25,40 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --use-osr --turbo-osr // Flags: --allow-natives-syntax --use-osr --turbo-osr
function f1() { function f1() {
var sum = 0; var sum = 0;
for (var i = 0; i < 1000000; i++) { for (var i = 0; i < 1000; i++) {
var x = i + 2; var x = i + 2;
var y = x + 5; var y = x + 5;
var z = y + 3; var z = y + 3;
sum += z; sum += z;
if (i == 18) %OptimizeOsr();
} }
return sum; return sum;
} }
function f2() { function f2() {
var sum = 0; var sum = 0;
for (var i = 0; i < 1000000; i++) { for (var i = 0; i < 1000; i++) {
var x = i + 2; var x = i + 2;
var y = x + 5; var y = x + 5;
var z = y + 3; var z = y + 3;
sum += z; sum += z;
if (i == 19) %OptimizeOsr();
} }
return sum; return sum;
} }
function f3() { function f3() {
var sum = 0; var sum = 0;
for (var i = 0; i < 1000000; i++) { for (var i = 0; i < 1000; i++) {
var x = i + 2; var x = i + 2;
var y = x + 5; var y = x + 5;
var z = y + 3; var z = y + 3;
sum += z; sum += z;
if (i == 20) %OptimizeOsr();
} }
return sum; return sum;
} }
@ -63,21 +66,21 @@ function f3() {
function test1() { function test1() {
var j = 11; var j = 11;
for (var i = 0; i < 2; i++) { for (var i = 0; i < 2; i++) {
assertEquals(500009500000, f1()); assertEquals(509500, f1());
} }
} }
function test2() { function test2() {
for (var i = 0; i < 2; i++) { for (var i = 0; i < 2; i++) {
var j = 11, k = 12; var j = 11, k = 12;
assertEquals(500009500000, f2()); assertEquals(509500, f2());
} }
} }
function test3() { function test3() {
for (var i = 0; i < 2; i++) { for (var i = 0; i < 2; i++) {
var j = 11, k = 13, m = 14; var j = 11, k = 13, m = 14;
assertEquals(500009500000, f3()); assertEquals(509500, f3());
} }
} }

View File

@ -2,16 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// Flags: --use-osr --turbo-osr // Flags: --allow-natives-syntax --use-osr --turbo-osr
function f() { function f() {
var sum = 0; var sum = 0;
for (var i = 5; i < 6; i++) { for (var i = 5; i < 6; i++) {
for (var j = 0; j < 1000000; j++) { for (var j = 0; j < 1000; j++) {
var x = i + 2; var x = i + 2;
var y = x + 5; var y = x + 5;
var z = y + 3; var z = y + 3;
sum += z; sum += z;
if (i == 21) %OptimizeOsr();
} }
if (true) break; if (true) break;
} }
@ -19,6 +20,6 @@ function f() {
} }
assertEquals(15000000, f()); assertEquals(15000, f());
assertEquals(15000000, f()); assertEquals(15000, f());
assertEquals(15000000, f()); assertEquals(15000, f());

View File

@ -2,17 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// Flags: --use-osr --turbo-osr // Flags: --allow-natives-syntax --use-osr --turbo-osr
function f() { function f() {
var sum = 0; var sum = 0;
for (var m = 99; m < 100; m++) { for (var m = 99; m < 100; m++) {
for (var i = 5; i < 6; i++) { for (var i = 5; i < 6; i++) {
for (var j = 0; j < 1000000; j++) { for (var j = 0; j < 1000; j++) {
var x = i + 2; var x = i + 2;
var y = x + 5; var y = x + 5;
var z = y + 3; var z = y + 3;
sum += z; sum += z;
if (i == 19) %OptimizeOsr();
} }
if (true) break; if (true) break;
} }
@ -22,6 +23,6 @@ function f() {
} }
assertEquals(15000000, f()); assertEquals(15000, f());
assertEquals(15000000, f()); assertEquals(15000, f());
assertEquals(15000000, f()); assertEquals(15000, f());

View File

@ -2,20 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// Flags: --use-osr // Flags: --allow-natives-syntax --use-osr
function f() { function f() {
var sum = 0; var sum = 0;
for (var i = 0; i < 1000000; i++) { for (var i = 0; i < 1000; i++) {
var x = i + 2; var x = i + 2;
var y = x + 5; var y = x + 5;
var z = y + 3; var z = y + 3;
sum += z; sum += z;
if (i == 11) %OptimizeOsr();
} }
return sum; return sum;
} }
for (var i = 0; i < 2; i++) { for (var i = 0; i < 2; i++) {
assertEquals(500009500000, f()); assertEquals(509500, f());
} }

View File

@ -88,11 +88,10 @@ function assertKind(expected, obj, name_opt) {
assertEquals(expected, getKind(obj), name_opt); assertEquals(expected, getKind(obj), name_opt);
} }
// long-running loop forces OSR.
%NeverOptimizeFunction(construct_smis); %NeverOptimizeFunction(construct_smis);
%NeverOptimizeFunction(construct_doubles); %NeverOptimizeFunction(construct_doubles);
%NeverOptimizeFunction(convert_mixed); %NeverOptimizeFunction(convert_mixed);
for (var i = 0; i < 1000000; i++) { } for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); }
// This code exists to eliminate the learning influence of AllocationSites // This code exists to eliminate the learning influence of AllocationSites
// on the following tests. // on the following tests.

View File

@ -1,54 +0,0 @@
// Copyright 2011 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (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: --opt-eagerly --debug-code --lazy
// See: http://code.google.com/p/v8/issues/detail?id=1145
// Should not throw a syntax error exception (change this if we make lazily
// compiled functions with syntax errors into early errors).
// Should not hit an assertion in debug mode.
// A lazily compiled function with a syntax error that is attempted inlined
// would set a pending exception that is then ignored (until it triggers
// an assert).
// This file must be at least 1024 bytes long to trigger lazy compilation.
function f() { return 1; }
// Must be lazy. Must throw SyntaxError during compilation.
function fail() { continue; }
function opt_me() {
var x = 1;
// Do lots of function calls and hope to be optimized.
for (var i = 0; i < 1000000; i++) {
x = f();
}
if (x == 0) fail(); // Hope to be inlined during optimization.
}
opt_me();

View File

@ -25,6 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
for (var i = 0; i < 1000000; i++) { } // Flags: --allow-natives-syntax
for (var i = 0; i < 10; i++) { if (i == 5) %OptimizeOsr(); }
var xl = 4096; var xl = 4096;
var z = i % xl; var z = i % xl;

View File

@ -1,32 +0,0 @@
// Copyright 2010 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
for (var i = 0; i < 1000000; i++) {
a = new Array(0);
assertEquals(0, a.length);
assertEquals(0, a.length);
}