diff options
author | Shelley Vohr <shelley.vohr@gmail.com> | 2019-09-03 22:44:10 -0700 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-09-05 23:16:50 -0700 |
commit | 63b056d8d4f0696254cd5fc40a69aee0157fc410 (patch) | |
tree | 43bb37e0cb8408f499ae3666c09eba73815eacc3 | |
parent | 72650bcf7283c7b9eb9df9154f981eabdf8c523a (diff) | |
download | android-node-v8-63b056d8d4f0696254cd5fc40a69aee0157fc410.tar.gz android-node-v8-63b056d8d4f0696254cd5fc40a69aee0157fc410.tar.bz2 android-node-v8-63b056d8d4f0696254cd5fc40a69aee0157fc410.zip |
src: check microtasks before running them
PR-URL: https://github.com/nodejs/node/pull/29434
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
-rw-r--r-- | src/api/callback.cc | 3 | ||||
-rw-r--r-- | src/node_task_queue.cc | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/api/callback.cc b/src/api/callback.cc index 52a8da35b6..e6098d5921 100644 --- a/src/api/callback.cc +++ b/src/api/callback.cc @@ -12,6 +12,7 @@ using v8::HandleScope; using v8::Isolate; using v8::Local; using v8::MaybeLocal; +using v8::MicrotasksScope; using v8::NewStringType; using v8::Object; using v8::String; @@ -100,7 +101,7 @@ void InternalCallbackScope::Close() { if (!env_->can_call_into_js()) return; if (!tick_info->has_tick_scheduled()) { - env_->isolate()->RunMicrotasks(); + MicrotasksScope::PerformCheckpoint(env_->isolate()); } // Make sure the stack unwound properly. If there are nested MakeCallback's diff --git a/src/node_task_queue.cc b/src/node_task_queue.cc index e6b4d0b8e2..4ff51bc3b8 100644 --- a/src/node_task_queue.cc +++ b/src/node_task_queue.cc @@ -21,6 +21,7 @@ using v8::kPromiseRejectWithNoHandler; using v8::kPromiseResolveAfterResolved; using v8::Local; using v8::Message; +using v8::MicrotasksScope; using v8::Number; using v8::Object; using v8::Promise; @@ -43,7 +44,7 @@ static void EnqueueMicrotask(const FunctionCallbackInfo<Value>& args) { bool RunNextTicksNative(Environment* env) { TickInfo* tick_info = env->tick_info(); if (!tick_info->has_tick_scheduled() && !tick_info->has_rejection_to_warn()) - env->isolate()->RunMicrotasks(); + MicrotasksScope::PerformCheckpoint(env->isolate()); if (!tick_info->has_tick_scheduled() && !tick_info->has_rejection_to_warn()) return true; |