Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / bindings / v8 / V8PerIsolateData.h
index 28dcd09..3d71809 100644 (file)
@@ -45,11 +45,10 @@ struct WrapperTypeInfo;
 
 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()
     {
@@ -62,6 +61,9 @@ public:
         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;
 
@@ -73,37 +75,32 @@ public:
     }
 
     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; }
@@ -139,14 +136,13 @@ private:
     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;
@@ -163,6 +159,7 @@ private:
 #endif
     OwnPtr<GCEventData> m_gcEventData;
     bool m_shouldCollectGarbageSoon;
+    bool m_performingMicrotaskCheckpoint;
 };
 
 } // namespace WebCore