| Index: third_party/WebKit/Source/core/dom/Microtask.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/Microtask.cpp b/third_party/WebKit/Source/core/dom/Microtask.cpp
|
| index 488c577f79f8dac4d4c285c74b6d0889169aa8b3..933dbe5091f2f44175fbf1c38f13dee7b04abd6f 100644
|
| --- a/third_party/WebKit/Source/core/dom/Microtask.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/Microtask.cpp
|
| @@ -31,6 +31,7 @@
|
| #include "core/dom/Microtask.h"
|
|
|
| #include "bindings/core/v8/V8PerIsolateData.h"
|
| +#include "bindings/core/v8/V8RecursionScope.h"
|
| #include "platform/ScriptForbiddenScope.h"
|
| #include "platform/Task.h"
|
| #include "public/platform/WebTaskRunner.h"
|
| @@ -45,8 +46,17 @@
|
| if (isolateData->recursionLevel() || isolateData->performingMicrotaskCheckpoint() || isolateData->destructionPending() || ScriptForbiddenScope::isScriptForbidden())
|
| return;
|
| isolateData->setPerformingMicrotaskCheckpoint(true);
|
| - isolate->RunMicrotasks();
|
| + {
|
| + // Ensure that end-of-task-or-microtask actions are performed.
|
| + V8RecursionScope recursionScope(isolate);
|
| + isolate->RunMicrotasks();
|
| + }
|
| isolateData->setPerformingMicrotaskCheckpoint(false);
|
| +}
|
| +
|
| +bool Microtask::performingCheckpoint(v8::Isolate* isolate)
|
| +{
|
| + return V8PerIsolateData::from(isolate)->performingMicrotaskCheckpoint();
|
| }
|
|
|
| static void microtaskFunctionCallback(void* data)
|
|
|