blob: da172827429a385a0930f2060c957d6f8aceafca [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
5// Flags: --allow-natives-syntax --use-osr
6
7function bar(goal) {
8 var count = 0;
9 var sum = 11;
10 var i = 35;
11 while (i-- > 33) {
12 if (count++ == goal) %OptimizeOsr();
13 sum = sum + i;
14 }
15 while (i-- > 31) {
16 if (count++ == goal) %OptimizeOsr();
17 j = 9;
18 while (j-- > 7) {
19 if (count++ == goal) %OptimizeOsr();
20 sum = sum + j * 3;
21 }
22 while (j-- > 5) {
23 if (count++ == goal) %OptimizeOsr();
24 sum = sum + j * 5;
25 }
26 }
27 while (i-- > 29) {
28 if (count++ == goal) %OptimizeOsr();
29 while (j-- > 3) {
30 var k = 10;
31 if (count++ == goal) %OptimizeOsr();
32 while (k-- > 8) {
33 if (count++ == goal) %OptimizeOsr();
34 sum = sum + k * 11;
35 }
36 }
37 while (j-- > 1) {
38 if (count++ == goal) %OptimizeOsr();
39 while (k-- > 6) {
40 if (count++ == goal) %OptimizeOsr();
41 sum = sum + j * 13;
42 }
43 }
44 }
45 return sum;
46}
47
48for (var i = 0; i < 13; i++) {
49 %DeoptimizeFunction(bar);
50 assertEquals(348, bar(i));
51}