blob: e0b4dad1dcf458e16d75f2609151ac9e33119165 [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
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);