From ab44edd2948b2e133b6ba64b717ac974935618f5 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 7 Aug 2015 15:10:14 +0800 Subject: [PATCH] Perform microtask checkpoint after diving into libuv --- atom/common/node_bindings.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/atom/common/node_bindings.cc b/atom/common/node_bindings.cc index 8f5dd07428ad..b329589552ba 100644 --- a/atom/common/node_bindings.cc +++ b/atom/common/node_bindings.cc @@ -19,6 +19,7 @@ #include "content/public/common/content_paths.h" #include "native_mate/locker.h" #include "native_mate/dictionary.h" +#include "third_party/WebKit/public/web/WebScopedMicrotaskSuppression.h" #include "atom/common/node_includes.h" @@ -227,6 +228,10 @@ void NodeBindings::UvRunOnce() { // Enter node context while dealing with uv events. v8::Context::Scope context_scope(env->context()); + // Perform microtask checkpoint after running JavaScript. + scoped_ptr script_scope( + is_browser_ ? nullptr : new blink::WebScopedRunV8Script(env->isolate())); + // Deal with uv events. int r = uv_run(uv_loop_, UV_RUN_NOWAIT); if (r == 0 || uv_loop_->stop_flag != 0)