Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / v8 / test / mjsunit / regress / regress-359491.js
1 // Copyright 2014 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
6
7 (function () {
8   function f(a, b, mode) {
9     if (mode) {
10       return a === b;
11     } else {
12       return a === b;
13     }
14   }
15
16   // Gather type feedback for both branches.
17   f("a", "b", 1);
18   f("c", "d", 1);
19   f("a", "b", 0);
20   f("c", "d", 0);
21
22   function g(mode) {
23     var x = 1e10 | 0;
24     f(x, x, mode);
25   }
26
27   // Gather type feedback for g, but only on one branch for f.
28   g(1);
29   g(1);
30   %OptimizeFunctionOnNextCall(g);
31   // Optimize g, which inlines f. Both branches in f will see the constant.
32   g(0);
33 })();
34
35 (function () {
36   function f(a, b, mode) {
37     if (mode) {
38       return a === b;
39     } else {
40       return a === b;
41     }
42   }
43
44   // Gather type feedback for both branches.
45   f({ a : 1}, {b : 1}, 1);
46   f({ c : 1}, {d : 1}, 1);
47   f({ a : 1}, {c : 1}, 0);
48   f({ b : 1}, {d : 1}, 0);
49
50   function g(mode) {
51     var x = 1e10 | 0;
52     f(x, x, mode);
53   }
54
55   // Gather type feedback for g, but only on one branch for f.
56   g(1);
57   g(1);
58   %OptimizeFunctionOnNextCall(g);
59   // Optimize g, which inlines f. Both branches in f will see the constant.
60   g(0);
61 })();