| Index: third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| index 7baff2fe98124552efbb5b6bb6ed8c9a2e6a1af7..0a2cfcb91e350d51b0e373a3f71707588fbdf081 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| @@ -48,6 +48,11 @@ static void beforeCallEnteredCallback(v8::Isolate* isolate)
|
| RELEASE_ASSERT(!ScriptForbiddenScope::isScriptForbidden());
|
| }
|
|
|
| +static void microtasksCompletedCallback(v8::Isolate* isolate)
|
| +{
|
| + V8PerIsolateData::from(isolate)->runEndOfScopeTasks();
|
| +}
|
| +
|
| #if ENABLE(ASSERT)
|
| static void assertV8RecursionScope(v8::Isolate* isolate)
|
| {
|
| @@ -158,6 +163,7 @@ V8PerIsolateData::V8PerIsolateData()
|
| isolate()->AddCallCompletedCallback(&assertV8RecursionScope);
|
| #endif
|
| isolate()->AddBeforeCallEnteredCallback(&beforeCallEnteredCallback);
|
| + isolate()->AddMicrotasksCompletedCallback(µtasksCompletedCallback);
|
| if (isMainThread())
|
| mainThreadPerIsolateData = this;
|
| isolate()->SetUseCounterCallback(&useCounterCallback);
|
| @@ -218,6 +224,7 @@ void V8PerIsolateData::destroy(v8::Isolate* isolate)
|
| isolate->RemoveCallCompletedCallback(&assertV8RecursionScope);
|
| #endif
|
| isolate->RemoveBeforeCallEnteredCallback(&beforeCallEnteredCallback);
|
| + isolate->RemoveMicrotasksCompletedCallback(µtasksCompletedCallback);
|
| V8PerIsolateData* data = from(isolate);
|
|
|
| // Clear everything before exiting the Isolate.
|
|
|