v8/test/inspector/runtime/set-max-call-stack-size.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

102 lines
2.7 KiB
JavaScript
Raw Normal View History

// 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.
let {session, contextGroup, Protocol} = InspectorTest.start('Checks Runtime.setMaxCallStackSizeToCapture.');
Protocol.Runtime.onConsoleAPICalled(
({params}) => InspectorTest.logMessage(params));
contextGroup.addScript(`
function testConsoleLog() {
console.log("Log message.");
}
function testConsoleTrace() {
function bar(callback) {
console.trace("Nested call.");
callback();
}
function foo(callback) {
bar(callback);
}
return new Promise(function executor(resolve) {
setTimeout(foo.bind(undefined, resolve), 0);
});
Revert "[inspector] Fix `Runtime.setMaxCallStackSizeToCapture`." This reverts commit 34f73cc75969dd57165262b8b504475cedd4df9c. Reason for revert: Performance regressions throughout a lot of system health and browsing benchmarks. Original change's description: > [inspector] Fix `Runtime.setMaxCallStackSizeToCapture`. > > This change fixes the implementation of the previously introduced API > `Runtime.setMaxCallStackSizeToCapture` to work correctly and also apply > (consistently) to stack traces captured by V8 when exceptions are > thrown. It does so in a fully backwards compatible manner. > > This change thus makes the previous fix for catapult (which landed in > http://crrev.com/c/3347789) effective, and therefore ensures that real > world performance benchmarks aren't affected by the use of the `Runtime` > domain in the catapult test framework. > > Bug: chromium:1283162, chromium:1278650, chromium:1258599 > Bug: chromium:1280803, chromium:1280832, chromium:1280818 > Fixed: chromium:1280831 > Doc: https://bit.ly/v8-cheaper-inspector-stack-traces > Change-Id: I4ec951a858317fa49096cd4023deb0104d92c9c9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3361839 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78458} Bug: chromium:1283162, chromium:1278650, chromium:1258599 Bug: chromium:1280803, chromium:1280832, chromium:1280818 Bug: chromium:1280831 Change-Id: Id1efaffa2f7f08c47f833f68b8a297494edee21e Fixed: chromium:1283751, chromium:1283749, chromium:1283746 Fixed: chromium:1283729, chromium:1283700, chromium:1283700 Fixed: chromium:1283691, chromium:1283687, chromium:1283678 Fixed: chromium:1283677, chromium:1283676, chromium:1283675 Fixed: chromium:1283674, chromium:1283618, chromium:1283536 Fixed: chromium:1283523, chromium:1283516 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3364078 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/main@{#78462}
2022-01-03 07:04:06 +00:00
}
function testThrow() {
function bar() {
throw new Error();
}
function foo() {
bar();
}
foo();
}
//# sourceURL=test.js`);
InspectorTest.runAsyncTestSuite([
async function testBeforeEnable() {
const {error} =
await Protocol.Runtime.setMaxCallStackSizeToCapture({size: 0});
InspectorTest.logMessage(error);
},
async function testNegativeSize() {
await Protocol.Runtime.enable();
const {error} =
await Protocol.Runtime.setMaxCallStackSizeToCapture({size: -42});
InspectorTest.logMessage(error);
await Protocol.Runtime.disable();
},
async function testConsoleLogBeforeEnable() {
await Protocol.Runtime.evaluate({expression: 'testConsoleLog()'});
await Protocol.Runtime.enable();
await Promise.all([
Protocol.Runtime.discardConsoleEntries(),
Protocol.Runtime.disable(),
]);
},
async function testConsoleTrace() {
await Promise.all([
Protocol.Runtime.enable(),
Protocol.Runtime.setAsyncCallStackDepth({maxDepth: 10}),
]);
for (let size = 0; size <= 2; ++size) {
await Protocol.Runtime.setMaxCallStackSizeToCapture({size});
InspectorTest.log(`Test with max size ${size}.`);
await Protocol.Runtime.evaluate(
{expression: 'testConsoleTrace()', awaitPromise: true});
}
await Promise.all([
Protocol.Runtime.discardConsoleEntries(),
Protocol.Runtime.disable(),
]);
},
async function testException() {
await Promise.all([
Protocol.Runtime.enable(),
Protocol.Runtime.setAsyncCallStackDepth({maxDepth: 0}),
]);
for (let size = 0; size <= 2; ++size) {
await Protocol.Runtime.setMaxCallStackSizeToCapture({size});
InspectorTest.log(`Test with max size ${size}.`);
const {result: {exceptionDetails}} =
await Protocol.Runtime.evaluate({expression: 'testThrow()'});
InspectorTest.logMessage(exceptionDetails);
}
await Promise.all([
Protocol.Runtime.discardConsoleEntries(),
Protocol.Runtime.disable(),
]);
}
])