| 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) | 
|  |