mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
deps: V8: cherry-pick 6be2f6e26e8d
Original commit message:
[coverage] IncBlockCounter should not be side-effect
Incrementing coverage counter was triggering EvalError for
evaluateOnCallFrame when throwOnSideEffect is true.
R=jgruber@chromium.org, sigurds@chromium.org, yangguo@chromium.org
Bug: v8:10856
Change-Id: I0552e19a3a14ff61a9cb626494fb4a21979d535e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2384011
Commit-Queue: Benjamin Coe <bencoe@google.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69628}
Refs: 6be2f6e26e
PR-URL: https://github.com/nodejs/node/pull/35415
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
|
||||
# Reset this number to 0 on major V8 upgrades.
|
||||
# Increment by one for each non-official patch applied to deps/v8.
|
||||
'v8_embedder_string': '-node.11',
|
||||
'v8_embedder_string': '-node.12',
|
||||
|
||||
##### V8 defaults for Node.js #####
|
||||
|
||||
|
||||
1
deps/v8/src/debug/debug-evaluate.cc
vendored
1
deps/v8/src/debug/debug-evaluate.cc
vendored
@@ -473,6 +473,7 @@ bool BytecodeHasNoSideEffect(interpreter::Bytecode bytecode) {
|
||||
case Bytecode::kToNumeric:
|
||||
case Bytecode::kToString:
|
||||
// Misc.
|
||||
case Bytecode::kIncBlockCounter: // Coverage counters.
|
||||
case Bytecode::kForInEnumerate:
|
||||
case Bytecode::kForInPrepare:
|
||||
case Bytecode::kForInContinue:
|
||||
|
||||
3
deps/v8/test/inspector/debugger/side-effect-free-coverage-enabled-expected.txt
vendored
Normal file
3
deps/v8/test/inspector/debugger/side-effect-free-coverage-enabled-expected.txt
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
Tests side-effect-free evaluation with coverage enabled
|
||||
Paused on 'debugger;'
|
||||
f() returns 1
|
||||
43
deps/v8/test/inspector/debugger/side-effect-free-coverage-enabled.js
vendored
Normal file
43
deps/v8/test/inspector/debugger/side-effect-free-coverage-enabled.js
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
// Copyright 2020 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('Tests side-effect-free evaluation with coverage enabled');
|
||||
|
||||
contextGroup.addScript(`
|
||||
function testFunction()
|
||||
{
|
||||
var o = 0;
|
||||
function f() { return 1; }
|
||||
function g() { o = 2; return o; }
|
||||
f,g;
|
||||
debugger;
|
||||
}
|
||||
//# sourceURL=foo.js`);
|
||||
|
||||
// Side effect free call should not result in EvalError when coverage
|
||||
// is enabled:
|
||||
Protocol.Profiler.enable()
|
||||
Protocol.Profiler.startPreciseCoverage({callCount: true, detailed: true})
|
||||
|
||||
Protocol.Debugger.enable();
|
||||
|
||||
Protocol.Debugger.oncePaused().then(debuggerPaused);
|
||||
|
||||
Protocol.Runtime.evaluate({ "expression": "setTimeout(testFunction, 0)" });
|
||||
|
||||
var topFrameId;
|
||||
|
||||
function debuggerPaused(messageObject)
|
||||
{
|
||||
InspectorTest.log("Paused on 'debugger;'");
|
||||
|
||||
topFrameId = messageObject.params.callFrames[0].callFrameId;
|
||||
Protocol.Debugger.evaluateOnCallFrame({ callFrameId: topFrameId, expression: "f()", throwOnSideEffect: true}).then(evaluatedFirst);
|
||||
}
|
||||
|
||||
function evaluatedFirst(response)
|
||||
{
|
||||
InspectorTest.log("f() returns " + response.result.result.value);
|
||||
InspectorTest.completeTest();
|
||||
}
|
||||
1
deps/v8/test/inspector/inspector.status
vendored
1
deps/v8/test/inspector/inspector.status
vendored
@@ -33,6 +33,7 @@
|
||||
'debugger/eval-scopes': [PASS, FAIL],
|
||||
'debugger/scope-skip-variables-with-empty-name': [PASS, FAIL],
|
||||
'debugger/update-call-frame-scopes': [PASS, FAIL],
|
||||
'debugger/side-effect-free-coverage-enabled': [PASS, FAIL],
|
||||
'debugger/side-effect-free-debug-evaluate': [PASS, FAIL],
|
||||
'debugger/evaluate-on-call-frame-in-module': [PASS, FAIL],
|
||||
}], # variant != default
|
||||
|
||||
Reference in New Issue
Block a user