// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Flags: --allow-natives-syntax function h() { var res = g.arguments; return res; } function g(o) { var res = h(); return res; } function f1() { var o = {x: 42}; var res = g(o); return 1; } function f0(a, b) { "use strict"; return f1(5); }; %PrepareFunctionForOptimization(f0); function boom(b) { if (b) throw new Error("boom!"); }; %PrepareFunctionForOptimization(boom); %NeverOptimizeFunction(h); f0(); f0(); %OptimizeFunctionOnNextCall(f0); boom(false); boom(false); %OptimizeFunctionOnNextCall(boom); try { f0(1, 2, 3); boom(true, 1, 2, 3); } catch (e) { }