Skip to content

Commit 4c37837

Browse files
QardMylesBorins
authored andcommitted
deps: V8: cherry-pick eec10a2fd8fa
Original commit message: [promisehook] Add before/after hooks to thenable tasks This will allow Node.js to properly track async context in thenables. Change-Id: If441423789a78307a57ad7e645daabf551cddb57 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2215624 Reviewed-by: Camillo Bruni <[email protected]> Reviewed-by: Sathya Gunasekaran <[email protected]> Commit-Queue: Gus Caplan <[email protected]> Cr-Commit-Position: refs/heads/master@{#68207} Refs: v8/v8@eec10a2 Backport-PR-URL: #34356 PR-URL: #33778 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Gus Caplan <[email protected]> Reviewed-By: Gerhard Stöbich <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
1 parent fb180ac commit 4c37837

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

common.gypi

Lines 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.10',
39+
'v8_embedder_string': '-node.11',
4040

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

deps/v8/src/builtins/builtins-microtask-queue-gen.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,18 @@ void MicrotaskQueueBuiltinsAssembler::RunSingleMicrotask(
198198
const TNode<Object> thenable = LoadObjectField(
199199
microtask, PromiseResolveThenableJobTask::kThenableOffset);
200200

201+
RunPromiseHook(Runtime::kPromiseHookBefore, microtask_context,
202+
CAST(promise_to_resolve));
203+
201204
{
202205
ScopedExceptionHandler handler(this, &if_exception, &var_exception);
203206
CallBuiltin(Builtins::kPromiseResolveThenableJob, native_context,
204207
promise_to_resolve, thenable, then);
205208
}
209+
210+
RunPromiseHook(Runtime::kPromiseHookAfter, microtask_context,
211+
CAST(promise_to_resolve));
212+
206213
RewindEnteredContext(saved_entered_context_count);
207214
SetCurrentContext(current_context);
208215
Goto(&done);

deps/v8/test/cctest/test-api.cc

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16352,7 +16352,18 @@ TEST(PromiseHook) {
1635216352
CHECK_EQ(v8::Promise::kPending, GetPromise("p")->State());
1635316353
CompileRun("resolve(Promise.resolve(value));\n");
1635416354
CHECK_EQ(v8::Promise::kFulfilled, GetPromise("p")->State());
16355-
CHECK_EQ(9, promise_hook_data->promise_hook_count);
16355+
CHECK_EQ(11, promise_hook_data->promise_hook_count);
16356+
16357+
promise_hook_data->Reset();
16358+
source =
16359+
"var p = Promise.resolve({\n"
16360+
" then(r) {\n"
16361+
" r();\n"
16362+
" }\n"
16363+
"});";
16364+
CompileRun(source);
16365+
CHECK_EQ(GetPromise("p")->State(), v8::Promise::kFulfilled);
16366+
CHECK_EQ(promise_hook_data->promise_hook_count, 5);
1635616367

1635716368
delete promise_hook_data;
1635816369
isolate->SetPromiseHook(nullptr);

0 commit comments

Comments
 (0)