| // Copyright 2017 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. |
| |
| (function() { |
| |
| createSuite('Debugger.paused', 10000, DebuggerPaused, Setup, TearDown); |
| createSuite( |
| 'Debugger.getPossibleBreakpoints', 10000, DebuggerGetPossibleBreakpoints, |
| SetupGetPossibleBreakpoints, TearDown); |
| createSuite( |
| 'AsyncStacksInstrumentation', 10000, AsyncStacksInstrumentation, |
| SetupAsyncStacksInstrumentation, TearDown); |
| |
| function Setup() { |
| SendMessage('Debugger.enable'); |
| // Force lazy compilation of inspector related scripts. |
| SendMessage('Runtime.evaluate', {expression: ''}); |
| } |
| |
| function TearDown() { |
| SendMessage('Debugger.disable'); |
| } |
| |
| function DebuggerPaused() { |
| for (var i = 0; i < 10; ++i) { |
| debugger; |
| } |
| } |
| |
| let scriptId; |
| function SetupGetPossibleBreakpoints() { |
| Setup(); |
| let expression = ''; |
| for (let i = 0; i < 20; ++i) { |
| expression += `function foo${i}(){ |
| if (a) { |
| return true; |
| } else { |
| return false; |
| } |
| }\n`; |
| }; |
| listener = function(msg) { |
| if (msg.method === 'Debugger.scriptParsed') { |
| scriptId = msg.params.scriptId; |
| listener = null; |
| } |
| }; |
| SendMessage('Runtime.evaluate', {expression}); |
| } |
| |
| function DebuggerGetPossibleBreakpoints() { |
| SendMessage( |
| 'Debugger.getPossibleBreakpoints', |
| {start: {lineNumber: 0, columnNumber: 0, scriptId: scriptId}}); |
| } |
| |
| function SetupAsyncStacksInstrumentation() { |
| Setup(); |
| SendMessage('Debugger.setAsyncCallStackDepth', {maxDepth: 1024}); |
| } |
| |
| function AsyncStacksInstrumentation() { |
| var p = Promise.resolve(); |
| var nopCallback = () => undefined; |
| var done = false; |
| for (let i = 0; i < 1000; ++i) { |
| p = p.then(nopCallback); |
| } |
| p = p.then(() => done = true); |
| while (!done) %PerformMicrotaskCheckpoint(); |
| } |
| |
| })(); |