Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: Source/bindings/core/v8/V8PerIsolateData.cpp

Issue 686153003: Replace IDBPendingTransactionMonitor with end-of-recursion-scope tasks (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Review feedback Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 126
127 void V8PerIsolateData::willBeDestroyed(v8::Isolate* isolate) 127 void V8PerIsolateData::willBeDestroyed(v8::Isolate* isolate)
128 { 128 {
129 V8PerIsolateData* data = from(isolate); 129 V8PerIsolateData* data = from(isolate);
130 130
131 ASSERT(!data->m_destructionPending); 131 ASSERT(!data->m_destructionPending);
132 data->m_destructionPending = true; 132 data->m_destructionPending = true;
133 133
134 // Clear any data that may have handles into the heap, 134 // Clear any data that may have handles into the heap,
135 // prior to calling ThreadState::detach(). 135 // prior to calling ThreadState::detach().
136 data->m_idbPendingTransactionMonitor.clear(); 136 data->clearEndOfScopeTasks();
137 } 137 }
138 138
139 void V8PerIsolateData::destroy(v8::Isolate* isolate) 139 void V8PerIsolateData::destroy(v8::Isolate* isolate)
140 { 140 {
141 #if ENABLE(ASSERT) 141 #if ENABLE(ASSERT)
142 if (blink::Platform::current()->currentThread()) 142 if (blink::Platform::current()->currentThread())
143 isolate->RemoveCallCompletedCallback(&assertV8RecursionScope); 143 isolate->RemoveCallCompletedCallback(&assertV8RecursionScope);
144 #endif 144 #endif
145 V8PerIsolateData* data = from(isolate); 145 V8PerIsolateData* data = from(isolate);
146 // FIXME: Remove once all v8::Isolate::GetCurrent() calls are gone. 146 // FIXME: Remove once all v8::Isolate::GetCurrent() calls are gone.
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 v8SetReturnValue(info, V8ScriptRunner::callInternalFunction(v8::Handle<v8::F unction>::Cast(value), info.This(), 0, 0, info.GetIsolate())); 242 v8SetReturnValue(info, V8ScriptRunner::callInternalFunction(v8::Handle<v8::F unction>::Cast(value), info.This(), 0, 0, info.GetIsolate()));
243 } 243 }
244 244
245 v8::Handle<v8::FunctionTemplate> V8PerIsolateData::toStringTemplate() 245 v8::Handle<v8::FunctionTemplate> V8PerIsolateData::toStringTemplate()
246 { 246 {
247 if (m_toStringTemplate.isEmpty()) 247 if (m_toStringTemplate.isEmpty())
248 m_toStringTemplate.set(isolate(), v8::FunctionTemplate::New(isolate(), c onstructorOfToString)); 248 m_toStringTemplate.set(isolate(), v8::FunctionTemplate::New(isolate(), c onstructorOfToString));
249 return m_toStringTemplate.newLocal(isolate()); 249 return m_toStringTemplate.newLocal(isolate());
250 } 250 }
251 251
252 IDBPendingTransactionMonitor* V8PerIsolateData::ensureIDBPendingTransactionMonit or() 252 void V8PerIsolateData::addEndOfScopeTask(PassOwnPtr<EndOfScopeTask> task)
253 { 253 {
254 if (!m_idbPendingTransactionMonitor) 254 m_endOfScopeTasks.append(task);
255 m_idbPendingTransactionMonitor = adoptPtr(new IDBPendingTransactionMonit or()); 255 }
256 return m_idbPendingTransactionMonitor.get(); 256
257 void V8PerIsolateData::runEndOfScopeTasks()
258 {
259 Vector<OwnPtr<EndOfScopeTask>> tasks;
260 tasks.swap(m_endOfScopeTasks);
261 for (const auto& task : tasks)
262 task->Run();
263 ASSERT(m_endOfScopeTasks.isEmpty());
264 }
265
266 void V8PerIsolateData::clearEndOfScopeTasks()
267 {
268 m_endOfScopeTasks.clear();
257 } 269 }
258 270
259 } // namespace blink 271 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698