blob: b8cef780b592cb2bb615151b37e968b8ad3cb01f [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 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
Ben Murdochc5610432016-08-08 18:44:38 +01005// Flags: --allow-natives-syntax --use-osr
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00006
7"use strict";
8
9function test(expected, func) {
10 assertEquals(expected, func());
11 assertEquals(expected, func());
12 assertEquals(expected, func());
13}
14
15function bar() {
16 var result;
17 {
18 let sum = 0;
19 for (let i = 0; i < 90; i++) {
20 sum += i;
21 if (i == 45) %OptimizeOsr();
22 }
23 result = sum;
24 }
25 return result;
26}
27
28test(4005, bar);
29
30function baz() {
31 let sum = 0;
32 for (let i = 0; i < 2; i++) {
33 sum = 2;
34 %OptimizeOsr();
35 }
36 return sum;
37}
38
39test(2, baz);
40
41function qux() {
42 var result = 0;
43 for (let i = 0; i < 2; i++) {
44 result = i;
45 %OptimizeOsr();
46 }
47 return result;
48}
49
50test(1, qux);
51
52function nux() {
53 var result = 0;
54 for (let i = 0; i < 2; i++) {
55 {
56 let sum = i;
57 %OptimizeOsr();
58 result = sum;
59 }
60 }
61 return result;
62}
63
64test(1, nux);
65
66function blo() {
67 var result;
68 {
69 let sum = 0;
70 for (let i = 0; i < 90; i++) {
71 sum += i;
72 if (i == 45) %OptimizeOsr();
73 }
74 result = ret;
75 function ret() {
76 return sum;
77 }
78 }
79 return result;
80}
81
82test(4005, blo());