blob: af7cbc0b8f42d953cb44e9b72f84ecbd79cea8ec [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --allow-natives-syntax
6
7function f(x, len) {
8 var distraction = [];
9 var result = new Array(25);
10
11 // Create a bunch of double values with long live ranges.
12 var d0 = x + 0.5;
13 var d1 = x + 1.5;
14 var d2 = x + 2.5;
15 var d3 = x + 3.5;
16 var d4 = x + 4.5;
17 var d5 = x + 5.5;
18 var d6 = x + 6.5;
19 var d7 = x + 7.5;
20 var d8 = x + 8.5;
21 var d9 = x + 9.5;
22 var d10 = x + 10.5;
23 var d11 = x + 11.5;
24 var d12 = x + 12.5;
25 var d13 = x + 13.5;
26 var d14 = x + 14.5;
27 var d15 = x + 15.5;
28 var d16 = x + 16.5;
29 var d17 = x + 17.5;
30 var d18 = x + 18.5;
31 var d19 = x + 19.5;
32 var d20 = x + 20.5;
33 var d21 = x + 21.5;
34 var d22 = x + 22.5;
35 var d23 = x + 23.5;
36 var d24 = x + 24.5;
37
38 // Trigger a stub failure when the array grows too big.
39 distraction[len] = 0;
40
41 // Write the long-lived doubles to memory and verify them.
42 result[0] = d0;
43 result[1] = d1;
44 result[2] = d2;
45 result[3] = d3;
46 result[4] = d4;
47 result[5] = d5;
48 result[6] = d6;
49 result[7] = d7;
50 result[8] = d8;
51 result[9] = d9;
52 result[10] = d10;
53 result[11] = d11;
54 result[12] = d12;
55 result[13] = d13;
56 result[14] = d14;
57 result[15] = d15;
58 result[16] = d16;
59 result[17] = d17;
60 result[18] = d18;
61 result[19] = d19;
62 result[20] = d20;
63 result[21] = d21;
64 result[22] = d22;
65 result[23] = d23;
66 result[24] = d24;
67
68 for (var i = 0; i < result.length; i++) {
69 assertEquals(x + i + 0.5, result[i]);
70 }
71}
72
73f(0, 10);
74f(0, 10);
75%OptimizeFunctionOnNextCall(f);
76f(0, 80000);