diff options
Diffstat (limited to 'src/declarative/qml/v8/qv8engine_p.h')
-rw-r--r-- | src/declarative/qml/v8/qv8engine_p.h | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/declarative/qml/v8/qv8engine_p.h b/src/declarative/qml/v8/qv8engine_p.h index 7df4c523c0..4e6d3de91f 100644 --- a/src/declarative/qml/v8/qv8engine_p.h +++ b/src/declarative/qml/v8/qv8engine_p.h @@ -230,7 +230,6 @@ private: public: static void garbageCollectorPrologueCallback(v8::GCType, v8::GCCallbackFlags); static void registerGcPrologueCallback(); - static void releaseWorkerThreadGcPrologueCallbackData(); class Q_AUTOTEST_EXPORT Referencer { public: @@ -243,7 +242,7 @@ public: static v8::Persistent<v8::Object> *findOwnerAndStrength(QObject *qobjectOwner, bool *shouldBeStrong); v8::Persistent<v8::Object> strongReferencer; v8::Persistent<v8::Context> context; - friend class QV8GCCallback::ThreadData; + friend class QV8GCCallback; }; class Q_AUTOTEST_EXPORT Node { @@ -257,19 +256,6 @@ public: }; static void addGcCallbackNode(Node *node); - -private: - class ThreadData { - public: - ThreadData() : gcPrologueCallbackRegistered(false) { } - ~ThreadData(); - Referencer referencer; - bool gcPrologueCallbackRegistered; - QIntrusiveList<Node, &Node::node> gcCallbackNodes; - }; - - static void initializeThreadData(); - static QThreadStorage<ThreadData *> threadData; }; class Q_DECLARATIVE_EXPORT QV8Engine @@ -465,6 +451,19 @@ public: static QDateTime qtDateTimeFromJsDate(double jsDate); + struct ThreadData { + ThreadData(); + ~ThreadData(); + v8::Isolate* isolate; + QV8GCCallback::Referencer* referencer; + bool gcPrologueCallbackRegistered; + QIntrusiveList<QV8GCCallback::Node, &QV8GCCallback::Node::node> gcCallbackNodes; + }; + + static bool hasThreadData(); + static ThreadData* threadData(); + static void ensurePerThreadIsolate(); + protected: QJSEngine* q; QDeclarativeEngine *m_engine; |