From 8f519507901a2dc54a83fb806634f27b0c9de6f9 Mon Sep 17 00:00:00 2001 From: Stephen Belanger Date: Mon, 25 May 2020 15:20:58 -0700 Subject: [PATCH] v8: patch for thenables in PromiseHook API Thenables produce an additional promise which is not currently emitting before/after hooks from the PromiseHook API in V8. This change makes that additional promise also emit the proper events. --- deps/v8/src/builtins/builtins-microtask-queue-gen.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/deps/v8/src/builtins/builtins-microtask-queue-gen.cc b/deps/v8/src/builtins/builtins-microtask-queue-gen.cc index 917255f9bb3e54..f9ecff11a1cece 100644 --- a/deps/v8/src/builtins/builtins-microtask-queue-gen.cc +++ b/deps/v8/src/builtins/builtins-microtask-queue-gen.cc @@ -198,11 +198,20 @@ void MicrotaskQueueBuiltinsAssembler::RunSingleMicrotask( const TNode thenable = LoadObjectField( microtask, PromiseResolveThenableJobTask::kThenableOffset); + // Run the promise before/debug hook if enabled. + RunPromiseHook(Runtime::kPromiseHookBefore, microtask_context, + CAST(promise_to_resolve)); + { ScopedExceptionHandler handler(this, &if_exception, &var_exception); CallBuiltin(Builtins::kPromiseResolveThenableJob, native_context, promise_to_resolve, thenable, then); } + + // Run the promise after/debug hook if enabled. + RunPromiseHook(Runtime::kPromiseHookAfter, microtask_context, + CAST(promise_to_resolve)); + RewindEnteredContext(saved_entered_context_count); SetCurrentContext(current_context); Goto(&done);