Skip to content

Commit 47cd49a

Browse files
committed
deps: backport 3c8195d from V8 upstream
Original commit message: Fix map constructor to correctly throw. We need to throw before rethrowing, otherwise the exception does not trigger a debugger event and is not reported if uncaught. [email protected], [email protected] Bug: v8:7047 Change-Id: I7ce0253883a21d6059e4e0ed0fc56dc55a0dcba6 Reviewed-on: https://chromium-review.googlesource.com/758372 Reviewed-by: Jakob Gruber <[email protected]> Reviewed-by: Sathya Gunasekaran <[email protected]> Commit-Queue: Yang Guo <[email protected]> Cr-Commit-Position: refs/heads/master@{#49237} Fixes: #17270 PR-URL: #17383 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Yang Guo <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
1 parent 465a32a commit 47cd49a

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
# Reset this number to 0 on major V8 upgrades.
2929
# Increment by one for each non-official patch applied to deps/v8.
30-
'v8_embedder_string': '-node.13',
30+
'v8_embedder_string': '-node.14',
3131

3232
# Enable disassembler for `--print-code` v8 options
3333
'v8_enable_disassembler': 1,

deps/v8/src/builtins/builtins-collections-gen.cc

+5-4
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,11 @@ TF_BUILTIN(MapConstructor, CollectionsBuiltinsAssembler) {
302302

303303
BIND(&if_notobject);
304304
{
305-
Node* const exception = MakeTypeError(
306-
MessageTemplate::kIteratorValueNotAnObject, context, next_value);
307-
var_exception.Bind(exception);
308-
Goto(&if_exception);
305+
Node* ret = CallRuntime(
306+
Runtime::kThrowTypeError, context,
307+
SmiConstant(MessageTemplate::kIteratorValueNotAnObject), next_value);
308+
GotoIfException(ret, &if_exception, &var_exception);
309+
Unreachable();
309310
}
310311
}
311312

deps/v8/test/inspector/debugger/caught-uncaught-exceptions-expected.txt

+6
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,9 @@ paused in throwCaught
33
uncaught: false
44
paused in throwUncaught
55
uncaught: true
6+
paused in throwInPromiseCaught
7+
uncaught: false
8+
paused in promiseUncaught
9+
uncaught: true
10+
paused in throwInMapConstructor
11+
uncaught: true

deps/v8/test/inspector/debugger/caught-uncaught-exceptions.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ let {session, contextGroup, Protocol} = InspectorTest.start("Check that inspecto
77
contextGroup.addScript(
88
`function throwCaught() { try { throw new Error(); } catch (_) {} }
99
function throwUncaught() { throw new Error(); }
10+
function throwInPromiseCaught() {
11+
var reject;
12+
new Promise(function(res, rej) { reject = rej; }).catch(() => {});
13+
reject();
14+
}
15+
function throwInPromiseUncaught() {
16+
new Promise(function promiseUncaught() { throw new Error(); });
17+
}
18+
function throwInMapConstructor() { new Map('a'); }
1019
function schedule(f) { setTimeout(f, 0); }
1120
`);
1221

@@ -22,4 +31,10 @@ Protocol.Debugger.onPaused(message => {
2231
Protocol.Runtime.evaluate({ "expression": "schedule(throwCaught);" })
2332
.then(() => Protocol.Runtime.evaluate(
2433
{ "expression": "schedule(throwUncaught);" }))
25-
.then(() => InspectorTest.completeTest());
34+
.then(() => Protocol.Runtime.evaluate(
35+
{ "expression": "schedule(throwInPromiseCaught);"}))
36+
.then(() => Protocol.Runtime.evaluate(
37+
{ "expression": "schedule(throwInPromiseUncaught);"}))
38+
.then(() => Protocol.Runtime.evaluate(
39+
{ "expression": "schedule(throwInMapConstructor);"}))
40+
.then(() => InspectorTest.completeTest());

0 commit comments

Comments
 (0)