Chromium Code Reviews| 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..9991e3a67dbc8dba3ac07846eadd5ef9b360d8c1 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 (OwnPtr<EndOfScopeTask>& task : tasks) |
|
adamk
2014/11/10 20:29:21
Why not
auto& task
?
jsbell
2014/11/10 20:51:54
Happy to change. I used an explicit type since it'
adamk
2014/11/10 20:57:34
Given that the type already appears 2 lines above,
jsbell
2014/11/10 21:22:42
Done.
|
| + task->Run(); |
| + ASSERT(m_endOfScopeTasks.isEmpty()); |
| +} |
| + |
| +void V8PerIsolateData::clearEndOfScopeTasks() |
| +{ |
| + m_endOfScopeTasks.clear(); |
| } |
| } // namespace blink |