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})(); 62