class ExternalStringVisitor;
-typedef WTF::Vector<DOMDataStore*> DOMDataList;
+typedef WTF::Vector<DOMDataStore*> DOMDataStoreList;
class V8PerIsolateData {
public:
- static V8PerIsolateData* create(v8::Isolate*);
static void ensureInitialized(v8::Isolate*);
static V8PerIsolateData* current()
{
return static_cast<V8PerIsolateData*>(isolate->GetData(gin::kEmbedderBlink));
}
static void dispose(v8::Isolate*);
+ static v8::Isolate* mainThreadIsolate();
+
+ bool isMainThread() { return m_isMainThread; };
typedef HashMap<const void*, UnsafePersistent<v8::FunctionTemplate> > TemplateMap;
}
v8::Handle<v8::FunctionTemplate> toStringTemplate();
- v8::Handle<v8::FunctionTemplate> lazyEventListenerToStringTemplate()
- {
- return v8::Local<v8::FunctionTemplate>::New(m_isolate, m_lazyEventListenerToStringTemplate);
- }
StringCache* stringCache() { return m_stringCache.get(); }
v8::Persistent<v8::Value>& ensureLiveRoot();
- DOMDataList& allStores() { return m_domDataList; }
+ DOMDataStoreList& allStores() { return m_domDataStoreList; }
void registerDOMDataStore(DOMDataStore* domDataStore)
{
- ASSERT(m_domDataList.find(domDataStore) == kNotFound);
- m_domDataList.append(domDataStore);
+ ASSERT(m_domDataStoreList.find(domDataStore) == kNotFound);
+ m_domDataStoreList.append(domDataStore);
}
void unregisterDOMDataStore(DOMDataStore* domDataStore)
{
- ASSERT(m_domDataList.find(domDataStore) != kNotFound);
- m_domDataList.remove(m_domDataList.find(domDataStore));
+ ASSERT(m_domDataStoreList.find(domDataStore) != kNotFound);
+ m_domDataStoreList.remove(m_domDataStoreList.find(domDataStore));
}
- // DOMDataStore is owned outside V8PerIsolateData.
- DOMDataStore* workerDOMDataStore() { return m_workerDomDataStore; }
- void setWorkerDOMDataStore(DOMDataStore* store) { m_workerDomDataStore = store; }
-
int recursionLevel() const { return m_recursionLevel; }
int incrementRecursionLevel() { return ++m_recursionLevel; }
int decrementRecursionLevel() { return --m_recursionLevel; }
+ bool performingMicrotaskCheckpoint() const { return m_performingMicrotaskCheckpoint; }
+ void setPerformingMicrotaskCheckpoint(bool performingMicrotaskCheckpoint) { m_performingMicrotaskCheckpoint = performingMicrotaskCheckpoint; }
+
#ifndef NDEBUG
int internalScriptRecursionLevel() const { return m_internalScriptRecursionLevel; }
int incrementInternalScriptRecursionLevel() { return ++m_internalScriptRecursionLevel; }
static void constructorOfToString(const v8::FunctionCallbackInfo<v8::Value>&);
v8::Isolate* m_isolate;
+ bool m_isMainThread; // Caches the result of isMainThread() for performance.
TemplateMap m_templatesForMainWorld;
TemplateMap m_templatesForNonMainWorld;
ScopedPersistent<v8::FunctionTemplate> m_toStringTemplate;
- v8::Persistent<v8::FunctionTemplate> m_lazyEventListenerToStringTemplate;
OwnPtr<StringCache> m_stringCache;
- Vector<DOMDataStore*> m_domDataList;
- DOMDataStore* m_workerDomDataStore;
+ Vector<DOMDataStore*> m_domDataStoreList;
ScopedPersistent<v8::Value> m_liveRoot;
ScopedPersistent<v8::Context> m_regexContext;
#endif
OwnPtr<GCEventData> m_gcEventData;
bool m_shouldCollectGarbageSoon;
+ bool m_performingMicrotaskCheckpoint;
};
} // namespace WebCore