v8/test/mjsunit/regress/regress-4800.js

78 lines
1.6 KiB
JavaScript
Raw Normal View History

// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax
function f(x, len) {
var distraction = [];
var result = new Array(25);
// Create a bunch of double values with long live ranges.
var d0 = x + 0.5;
var d1 = x + 1.5;
var d2 = x + 2.5;
var d3 = x + 3.5;
var d4 = x + 4.5;
var d5 = x + 5.5;
var d6 = x + 6.5;
var d7 = x + 7.5;
var d8 = x + 8.5;
var d9 = x + 9.5;
var d10 = x + 10.5;
var d11 = x + 11.5;
var d12 = x + 12.5;
var d13 = x + 13.5;
var d14 = x + 14.5;
var d15 = x + 15.5;
var d16 = x + 16.5;
var d17 = x + 17.5;
var d18 = x + 18.5;
var d19 = x + 19.5;
var d20 = x + 20.5;
var d21 = x + 21.5;
var d22 = x + 22.5;
var d23 = x + 23.5;
var d24 = x + 24.5;
// Trigger a stub failure when the array grows too big.
distraction[len] = 0;
// Write the long-lived doubles to memory and verify them.
result[0] = d0;
result[1] = d1;
result[2] = d2;
result[3] = d3;
result[4] = d4;
result[5] = d5;
result[6] = d6;
result[7] = d7;
result[8] = d8;
result[9] = d9;
result[10] = d10;
result[11] = d11;
result[12] = d12;
result[13] = d13;
result[14] = d14;
result[15] = d15;
result[16] = d16;
result[17] = d17;
result[18] = d18;
result[19] = d19;
result[20] = d20;
result[21] = d21;
result[22] = d22;
result[23] = d23;
result[24] = d24;
for (var i = 0; i < result.length; i++) {
assertEquals(x + i + 0.5, result[i]);
}
}
%PrepareFunctionForOptimization(f);
f(0, 10);
f(0, 10);
%OptimizeFunctionOnNextCall(f);
f(0, 80000);