Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3433559

Browse filesBrowse files
committed
deps: V8: cherry-pick 272445f10927
Original commit message: [runtime] Fix promise hooks promiseCapability can be undefined. Bug: v8:11025 Bug: chromium:1201113 Change-Id: I9da8764820cee0db1f0c38ed2fff0e3afeb9a80e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2844649 Reviewed-by: Marja Hölttä <marja@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74117} Refs: v8/v8@272445f PR-URL: #38273 Backport-PR-URL: #38991 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Mary Marchini <oss@mmarchini.me>
1 parent f56c785 commit 3433559
Copy full SHA for 3433559

File tree

Expand file treeCollapse file tree

3 files changed

+20
-7
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+20
-7
lines changed
Open diff view settings
Collapse file

‎common.gypi‎

Copy file name to clipboardExpand all lines: common.gypi
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.9',
39+
'v8_embedder_string': '-node.10',
4040

4141
##### V8 defaults for Node.js #####
4242

Collapse file

‎deps/v8/src/builtins/promise-misc.tq‎

Copy file name to clipboardExpand all lines: deps/v8/src/builtins/promise-misc.tq
+8-5Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,39 +134,39 @@ transitioning macro RunContextPromiseHookResolve(implicit context: Context)(
134134

135135
@export
136136
transitioning macro RunContextPromiseHookBefore(implicit context: Context)(
137-
promiseOrCapability: JSPromise|PromiseCapability) {
137+
promiseOrCapability: JSPromise|PromiseCapability|Undefined) {
138138
RunContextPromiseHook(
139139
ContextSlot::PROMISE_HOOK_BEFORE_FUNCTION_INDEX, promiseOrCapability,
140140
PromiseHookFlags());
141141
}
142142

143143
@export
144144
transitioning macro RunContextPromiseHookBefore(implicit context: Context)(
145-
promiseOrCapability: JSPromise|PromiseCapability, flags: uint32) {
145+
promiseOrCapability: JSPromise|PromiseCapability|Undefined, flags: uint32) {
146146
RunContextPromiseHook(
147147
ContextSlot::PROMISE_HOOK_BEFORE_FUNCTION_INDEX, promiseOrCapability,
148148
flags);
149149
}
150150

151151
@export
152152
transitioning macro RunContextPromiseHookAfter(implicit context: Context)(
153-
promiseOrCapability: JSPromise|PromiseCapability) {
153+
promiseOrCapability: JSPromise|PromiseCapability|Undefined) {
154154
RunContextPromiseHook(
155155
ContextSlot::PROMISE_HOOK_AFTER_FUNCTION_INDEX, promiseOrCapability,
156156
PromiseHookFlags());
157157
}
158158

159159
@export
160160
transitioning macro RunContextPromiseHookAfter(implicit context: Context)(
161-
promiseOrCapability: JSPromise|PromiseCapability, flags: uint32) {
161+
promiseOrCapability: JSPromise|PromiseCapability|Undefined, flags: uint32) {
162162
RunContextPromiseHook(
163163
ContextSlot::PROMISE_HOOK_AFTER_FUNCTION_INDEX, promiseOrCapability,
164164
flags);
165165
}
166166

167167
transitioning macro RunContextPromiseHook(implicit context: Context)(
168168
slot: Slot<NativeContext, Undefined|JSFunction>,
169-
promiseOrCapability: JSPromise|PromiseCapability, flags: uint32) {
169+
promiseOrCapability: JSPromise|PromiseCapability|Undefined, flags: uint32) {
170170
if (!IsContextPromiseHookEnabled(flags)) return;
171171
const maybeHook = *NativeContextSlot(slot);
172172
if (IsUndefined(maybeHook)) return;
@@ -181,6 +181,9 @@ transitioning macro RunContextPromiseHook(implicit context: Context)(
181181
case (capability: PromiseCapability): {
182182
promise = Cast<JSPromise>(capability.promise) otherwise return;
183183
}
184+
case (Undefined): {
185+
return;
186+
}
184187
}
185188

186189
try {
Collapse file

‎deps/v8/test/mjsunit/promise-hooks.js‎

Copy file name to clipboardExpand all lines: deps/v8/test/mjsunit/promise-hooks.js
+11-1Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2020 the V8 project authors. All rights reserved.
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
4-
//
4+
55
// Flags: --allow-natives-syntax --opt --no-always-opt --no-stress-opt --deopt-every-n-times=0 --ignore-unhandled-promises
66

77
let log = [];
@@ -242,3 +242,13 @@ optimizerBailout(async () => {
242242
});
243243
basicTest();
244244
exceptions();
245+
246+
(function regress1126309() {
247+
function __f_16(test) {
248+
test();
249+
d8.promise.setHooks( undefined, () => {});
250+
%PerformMicrotaskCheckpoint();
251+
d8.promise.setHooks();
252+
}
253+
__f_16(async () => { await Promise.resolve()});
254+
})();

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.