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 id(f) { return f; }
8
9function foo(a) {
10  var r = /\0/;
11  for (var i = 0; i < 10; i++) {
12    if (a) %OptimizeOsr();
13  }
14  return r;
15}
16
17function bar(a) {
18  for (var i = 0; i < 10; i++) {
19    if (a) %OptimizeOsr();
20    var r = /\0/;
21  }
22  return r;
23}
24
25function baz(a) {
26  for (var i = 0; i < 10; i++) {
27    if (a) %OptimizeOsr();
28  }
29  return /\0/;
30}
31
32function qux(a) {
33  for (var i = 0; i < 10; i++) {
34    if (i > 5 && a) {
35      %OptimizeOsr();
36    } else {
37      var r = /\0/;
38    }
39  }
40  return r;
41}
42
43function test(f) {
44  // Test the reference equality of regex's created in OSR'd function.
45  var x = f(false);
46  assertEquals(x, f(true));
47  assertEquals(x, f(true));
48  assertEquals(x, f(true));
49}
50
51test(foo);
52test(bar);
53test(baz);
54test(qux);
55