| Index: Source/bindings/core/v8/V8PerIsolateData.cpp
|
| diff --git a/Source/bindings/core/v8/V8PerIsolateData.cpp b/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| index 081c0e6b780d87f6f0e25fbc684c77e2d044244b..a1bd8584735efd5763fef1a1ca04355e10248ab8 100644
|
| --- a/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| +++ b/Source/bindings/core/v8/V8PerIsolateData.cpp
|
| @@ -118,16 +118,25 @@ v8::Persistent<v8::Value>& V8PerIsolateData::ensureLiveRoot()
|
| return m_liveRoot.getUnsafe();
|
| }
|
|
|
| -void V8PerIsolateData::dispose(v8::Isolate* isolate)
|
| +void V8PerIsolateData::willBeDestroyed(v8::Isolate* isolate)
|
| +{
|
| + V8PerIsolateData* data = from(isolate);
|
| +
|
| + // Clear any data that may have handles into the heap,
|
| + // prior to calling ThreadState::detach().
|
| + data->m_idbPendingTransactionMonitor.clear();
|
| +}
|
| +
|
| +void V8PerIsolateData::destroy(v8::Isolate* isolate)
|
| {
|
| #if ENABLE(ASSERT)
|
| if (blink::Platform::current()->currentThread())
|
| isolate->RemoveCallCompletedCallback(&assertV8RecursionScope);
|
| #endif
|
| - void* data = isolate->GetData(gin::kEmbedderBlink);
|
| + V8PerIsolateData* data = from(isolate);
|
| // FIXME: Remove once all v8::Isolate::GetCurrent() calls are gone.
|
| isolate->Exit();
|
| - delete static_cast<V8PerIsolateData*>(data);
|
| + delete data;
|
| }
|
|
|
| V8PerIsolateData::DOMTemplateMap& V8PerIsolateData::currentDOMTemplateMap()
|
| @@ -231,4 +240,11 @@ v8::Handle<v8::FunctionTemplate> V8PerIsolateData::toStringTemplate()
|
| return m_toStringTemplate.newLocal(isolate());
|
| }
|
|
|
| +IDBPendingTransactionMonitor* V8PerIsolateData::ensureIDBPendingTransactionMonitor()
|
| +{
|
| + if (!m_idbPendingTransactionMonitor)
|
| + m_idbPendingTransactionMonitor = adoptPtr(new IDBPendingTransactionMonitor());
|
| + return m_idbPendingTransactionMonitor.get();
|
| +}
|
| +
|
| } // namespace blink
|
|
|