2018-06-04 22:07:54 +00:00
|
|
|
// 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(
|
2022-01-04 09:13:04 +00:00
|
|
|
({params}) => InspectorTest.logMessage(params));
|
2018-06-04 22:07:54 +00:00
|
|
|
|
|
|
|
contextGroup.addScript(`
|
2022-01-04 09:13:04 +00:00
|
|
|
function testConsoleLog() {
|
|
|
|
console.log("Log message.");
|
2018-06-04 22:07:54 +00:00
|
|
|
}
|
|
|
|
|
2022-01-04 09:13:04 +00:00
|
|
|
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
|
|
|
}
|
2021-12-31 13:55:20 +00:00
|
|
|
|
2022-01-04 09:13:04 +00:00
|
|
|
function testThrow() {
|
|
|
|
function bar() {
|
|
|
|
throw new Error();
|
|
|
|
}
|
|
|
|
|
|
|
|
function foo() {
|
|
|
|
bar();
|
|
|
|
}
|
|
|
|
|
|
|
|
foo();
|
2018-06-04 22:07:54 +00:00
|
|
|
}
|
|
|
|
//# sourceURL=test.js`);
|
|
|
|
|
2022-01-04 09:13:04 +00:00
|
|
|
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(),
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
])
|