File tree 2 files changed +19
-1
lines changed
2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -198,11 +198,18 @@ void MicrotaskQueueBuiltinsAssembler::RunSingleMicrotask(
198
198
const TNode<Object> thenable = LoadObjectField (
199
199
microtask, PromiseResolveThenableJobTask::kThenableOffset );
200
200
201
+ RunPromiseHook (Runtime::kPromiseHookBefore , microtask_context,
202
+ CAST (promise_to_resolve));
203
+
201
204
{
202
205
ScopedExceptionHandler handler (this , &if_exception, &var_exception);
203
206
CallBuiltin (Builtins::kPromiseResolveThenableJob , native_context,
204
207
promise_to_resolve, thenable, then);
205
208
}
209
+
210
+ RunPromiseHook (Runtime::kPromiseHookAfter , microtask_context,
211
+ CAST (promise_to_resolve));
212
+
206
213
RewindEnteredContext (saved_entered_context_count);
207
214
SetCurrentContext (current_context);
208
215
Goto (&done);
Original file line number Diff line number Diff line change @@ -16357,7 +16357,18 @@ TEST(PromiseHook) {
16357
16357
CHECK_EQ(v8::Promise::kPending, GetPromise("p")->State());
16358
16358
CompileRun("resolve(Promise.resolve(value));\n");
16359
16359
CHECK_EQ(v8::Promise::kFulfilled, GetPromise("p")->State());
16360
- CHECK_EQ(9, promise_hook_data->promise_hook_count);
16360
+ CHECK_EQ(11, promise_hook_data->promise_hook_count);
16361
+
16362
+ promise_hook_data->Reset();
16363
+ source =
16364
+ "var p = Promise.resolve({\n"
16365
+ " then(r) {\n"
16366
+ " r();\n"
16367
+ " }\n"
16368
+ "});";
16369
+ CompileRun(source);
16370
+ CHECK_EQ(GetPromise("p")->State(), v8::Promise::kFulfilled);
16371
+ CHECK_EQ(promise_hook_data->promise_hook_count, 5);
16361
16372
16362
16373
delete promise_hook_data;
16363
16374
isolate->SetPromiseHook(nullptr);
You can’t perform that action at this time.
0 commit comments