// Copyright 2015 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: --opt --no-always-opt --turbo-inlining var Debug = debug.Debug; function f1() { return 1; } function f2() { return 2; } function f3() { return f1(); } function f4() { return 4; } function optimize(f) { %PrepareFunctionForOptimization(f); f(); f(); %OptimizeFunctionOnNextCall(f); f(); } optimize(f1); optimize(f2); optimize(f3); Debug.setListener(function() {}); assertOptimized(f1); assertOptimized(f2); assertOptimized(f3); Debug.setBreakPoint(f1, 1); // Setting break point deoptimizes f1 and f3 (which inlines f1). assertUnoptimized(f1); assertOptimized(f2); assertUnoptimized(f3); // We can optimize with break points set. optimize(f4); assertOptimized(f4); Debug.setListener(null);