| Index: Source/bindings/core/v8/V8PerIsolateData.cpp
|
| diff --git a/Source/bindings/core/v8/V8PerIsolateData.cpp b/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| index a3f14450638c3016406bdd7e73be7eb462bac67f..3f53ada38839378a72396119a5d74eb87c59f43c 100644
|
| --- a/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| +++ b/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| @@ -133,7 +133,7 @@ void V8PerIsolateData::willBeDestroyed(v8::Isolate* isolate)
|
|
|
| // Clear any data that may have handles into the heap,
|
| // prior to calling ThreadState::detach().
|
| - data->m_idbPendingTransactionMonitor.clear();
|
| + data->clearEndOfScopeTasks();
|
| }
|
|
|
| void V8PerIsolateData::destroy(v8::Isolate* isolate)
|
| @@ -249,11 +249,23 @@ v8::Handle<v8::FunctionTemplate> V8PerIsolateData::toStringTemplate()
|
| return m_toStringTemplate.newLocal(isolate());
|
| }
|
|
|
| -IDBPendingTransactionMonitor* V8PerIsolateData::ensureIDBPendingTransactionMonitor()
|
| +void V8PerIsolateData::addEndOfScopeTask(PassOwnPtr<EndOfScopeTask> task)
|
| {
|
| - if (!m_idbPendingTransactionMonitor)
|
| - m_idbPendingTransactionMonitor = adoptPtr(new IDBPendingTransactionMonitor());
|
| - return m_idbPendingTransactionMonitor.get();
|
| + m_endOfScopeTasks.append(task);
|
| +}
|
| +
|
| +void V8PerIsolateData::runEndOfScopeTasks()
|
| +{
|
| + Vector<OwnPtr<EndOfScopeTask>> tasks;
|
| + tasks.swap(m_endOfScopeTasks);
|
| + for (const auto& task : tasks)
|
| + task->Run();
|
| + ASSERT(m_endOfScopeTasks.isEmpty());
|
| +}
|
| +
|
| +void V8PerIsolateData::clearEndOfScopeTasks()
|
| +{
|
| + m_endOfScopeTasks.clear();
|
| }
|
|
|
| } // namespace blink
|
|
|