1 // Copyright 2016 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 --harmony-tailcalls 6 7 function h() { 8 var res = g.arguments; 9 return res; 10 } 11 12 function g(o) { 13 var res = h(); 14 return res; 15 } 16 17 function f1() { 18 var o = { x : 42 }; 19 var res = g(o); 20 return 1; 21 } 22 23 function f0(a, b) { 24 "use strict"; 25 return f1(5); 26 } 27 28 function boom(b) { 29 if (b) throw new Error("boom!"); 30 } 31 32 %NeverOptimizeFunction(h); 33 f0(); 34 f0(); 35 %OptimizeFunctionOnNextCall(f0); 36 37 boom(false); 38 boom(false); 39 %OptimizeFunctionOnNextCall(boom); 40 41 try { 42 f0(1, 2, 3); 43 boom(true, 1, 2, 3); 44 } catch (e) { 45 } 46