| // Copyright 2018 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 |
| |
| let {session, contextGroup, Protocol} = |
| InspectorTest.start('Tests stepping with blackboxing and inlining'); |
| |
| contextGroup.addScript( |
| `function bar() { |
| return 1 + foo(); |
| } |
| //# sourceURL=bar.js`); |
| |
| contextGroup.addScript( |
| `function foo() { |
| return "foo"; |
| } |
| //# sourceURL=foo.js`); |
| |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setBlackboxPatterns({ patterns: [ "bar.js" ] }); |
| |
| Protocol.Debugger.onPaused(PerformSteps); |
| Protocol.Runtime.evaluate({ |
| "expression": "%PrepareFunctionForOptimization(bar); bar(); bar(); " + |
| "%OptimizeFunctionOnNextCall(bar); bar()" |
| }); |
| Protocol.Runtime.evaluate({ "expression": "debugger; bar();" }); |
| |
| var commands = [ "stepInto", "stepInto" ]; |
| |
| function PerformSteps(message) { |
| InspectorTest.log("Paused in"); |
| var callFrames = message.params.callFrames; |
| for (var callFrame of callFrames) { |
| InspectorTest.log( |
| (callFrame.functionName || "(...)") + ":" + (callFrame.location.lineNumber + 1)); |
| } |
| var command = commands.shift(); |
| if (!command) { |
| InspectorTest.completeTest(); |
| return; |
| } |
| Protocol.Debugger[command](); |
| } |