1 // Copyright 2015 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: --expose-debug-as debug --allow-natives-syntax --use-inlining 6 7 var Debug = debug.Debug; 8 9 function f1() { 10 return 1; 11 } 12 13 function f2() { 14 return 2; 15 } 16 17 function f3() { 18 return f1(); 19 } 20 21 function f4() { 22 return 4; 23 } 24 25 26 function optimize(f) { 27 f(); 28 f(); 29 %OptimizeFunctionOnNextCall(f); 30 f(); 31 } 32 33 optimize(f1); 34 optimize(f2); 35 optimize(f3); 36 37 Debug.setListener(function() {}); 38 39 assertOptimized(f1); 40 assertOptimized(f2); 41 assertOptimized(f3); 42 43 Debug.setBreakPoint(f1, 1); 44 45 // Setting break point deoptimizes f1 and f3 (which inlines f1). 46 assertUnoptimized(f1); 47 assertOptimized(f2); 48 assertUnoptimized(f3); 49 50 // We can optimize with break points set. 51 optimize(f4); 52 assertOptimized(f4); 53 54 Debug.setListener(null); 55