1865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 2865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org// found in the LICENSE file. 4865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org 5865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org// Flags: --allow-natives-syntax 6865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org 7865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org"use strict"; 8865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.orgfunction f1(d) { 9865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org return 1 + f2(1, f3(d), d); 10865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org} 11865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org 12865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.orgfunction f2(v0, v1, v2) { return v1; } 13865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org 14865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.orgfunction f3(d) { 15865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org if (d) %DeoptimizeFunction(f1); 16865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org return 2; 17865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org} 18865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org 19865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org%NeverOptimizeFunction(f3); 20865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org 21865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.orgf1(false); 22865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.orgf1(false); 23865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.org%OptimizeFunctionOnNextCall(f1); 24865f51ff8c94f86f4c97636d70addc0f29e79674machenbach@chromium.orgassertEquals(3, f1(true)); 25