• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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 --turbo-osr
6
7function foo() {
8  var sum = 0;
9  A: for (var i = 0; i < 5; i++) {
10    B: for (var j = 0; j < 5; j++) {
11      C: for (var k = 0; k < 10; k++) {
12        if (k === 5) %OptimizeOsr();
13        if (k === 6) break B;
14        sum++;
15      }
16    }
17  }
18  return sum;
19}
20
21assertEquals(30, foo());
22assertEquals(30, foo());
23
24function bar(a) {
25  var sum = 0;
26  A: for (var i = 0; i < 5; i++) {
27    B: for (var j = 0; j < 5; j++) {
28      C: for (var k = 0; k < 10; k++) {
29        sum++;
30        %OptimizeOsr();
31        if (a === 1) break A;
32        if (a === 2) break B;
33        if (a === 3) break C;
34      }
35    }
36  }
37  return sum;
38}
39
40assertEquals(1, bar(1));
41assertEquals(1, bar(1));
42
43assertEquals(5, bar(2));
44assertEquals(5, bar(2));
45
46assertEquals(25, bar(3));
47assertEquals(25, bar(3));
48