Index: Source/bindings/core/v8/V8PerIsolateData.cpp |
diff --git a/Source/bindings/core/v8/V8PerIsolateData.cpp b/Source/bindings/core/v8/V8PerIsolateData.cpp |
index a1bd8584735efd5763fef1a1ca04355e10248ab8..d5aa45c6d7d8f79c13d732112242c2243266d8d0 100644 |
--- a/Source/bindings/core/v8/V8PerIsolateData.cpp |
+++ b/Source/bindings/core/v8/V8PerIsolateData.cpp |
@@ -62,7 +62,8 @@ static void useCounterCallback(v8::Isolate* isolate, v8::Isolate::UseCounterFeat |
} |
V8PerIsolateData::V8PerIsolateData() |
- : m_isolateHolder(adoptPtr(new gin::IsolateHolder())) |
+ : m_destructionPending(false) |
+ , m_isolateHolder(adoptPtr(new gin::IsolateHolder())) |
, m_stringCache(adoptPtr(new StringCache(isolate()))) |
, m_hiddenValue(adoptPtr(new V8HiddenValue())) |
, m_constructorMode(ConstructorMode::CreateNewObject) |
@@ -122,6 +123,9 @@ void V8PerIsolateData::willBeDestroyed(v8::Isolate* isolate) |
{ |
V8PerIsolateData* data = from(isolate); |
+ ASSERT(!data->m_destructionPending); |
+ data->m_destructionPending = true; |
+ |
// Clear any data that may have handles into the heap, |
// prior to calling ThreadState::detach(). |
data->m_idbPendingTransactionMonitor.clear(); |