diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2017-12-19 11:14:27 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-02-02 09:37:40 +0000 |
commit | 65606ea1559572d66ee8bfac77e87f3e8f447c3e (patch) | |
tree | ac129f9b750303c553bcf2021798ccdb9c24c48c /src/qml/jsapi | |
parent | 4939f4dd65ea28268656682ffa1378a9697fe5ac (diff) |
Remove double indirection between QJSEngine and QV4::ExecutionEngine
As QJSEngine's handle() method is internal, we can redefine it to return
a pointer to an ExecutionEngine. That makes many things easier.
Change-Id: Ie3df99e0bad5f00ad4fe73182896cd135fa82994
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r-- | src/qml/jsapi/qjsengine.cpp | 49 | ||||
-rw-r--r-- | src/qml/jsapi/qjsengine.h | 7 |
2 files changed, 27 insertions, 29 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp index fffb190513..020a83f837 100644 --- a/src/qml/jsapi/qjsengine.cpp +++ b/src/qml/jsapi/qjsengine.cpp @@ -290,8 +290,9 @@ QJSEngine::QJSEngine() QJSEngine::QJSEngine(QObject *parent) : QObject(*new QJSEnginePrivate, parent) - , d(new QV8Engine(this)) + , m_v4Engine(new QV4::ExecutionEngine) { + m_v4Engine->v8Engine = new QV8Engine(this, m_v4Engine); checkForApplicationInstance(); QJSEnginePrivate::addToDebugServer(this); @@ -302,8 +303,9 @@ QJSEngine::QJSEngine(QObject *parent) */ QJSEngine::QJSEngine(QJSEnginePrivate &dd, QObject *parent) : QObject(dd, parent) - , d(new QV8Engine(this)) + , m_v4Engine(new QV4::ExecutionEngine) { + m_v4Engine->v8Engine = new QV8Engine(this, m_v4Engine); checkForApplicationInstance(); } @@ -317,11 +319,12 @@ QJSEngine::QJSEngine(QJSEnginePrivate &dd, QObject *parent) QJSEngine::~QJSEngine() { QJSEnginePrivate::removeFromDebugServer(this); - delete d; + delete m_v4Engine->v8Engine; + delete m_v4Engine; } /*! - \fn QV8Engine *QJSEngine::handle() const + \fn QV4::ExecutionEngine *QJSEngine::handle() const \internal */ @@ -338,7 +341,7 @@ QJSEngine::~QJSEngine() */ void QJSEngine::collectGarbage() { - d->m_v4Engine->memoryManager->runGC(); + m_v4Engine->memoryManager->runGC(); } #if QT_DEPRECATED_SINCE(5, 6) @@ -395,12 +398,12 @@ void QJSEngine::installTranslatorFunctions(const QJSValue &object) void QJSEngine::installExtensions(QJSEngine::Extensions extensions, const QJSValue &object) { QV4::ExecutionEngine *otherEngine = QJSValuePrivate::engine(&object); - if (otherEngine && otherEngine != d->m_v4Engine) { + if (otherEngine && otherEngine != m_v4Engine) { qWarning("QJSEngine: Trying to install extensions from a different engine"); return; } - QV4::Scope scope(d->m_v4Engine); + QV4::Scope scope(m_v4Engine); QV4::ScopedObject obj(scope); QV4::Value *val = QJSValuePrivate::getValue(&object); if (val) @@ -441,7 +444,7 @@ void QJSEngine::installExtensions(QJSEngine::Extensions extensions, const QJSVal */ QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName, int lineNumber) { - QV4::ExecutionEngine *v4 = d->m_v4Engine; + QV4::ExecutionEngine *v4 = m_v4Engine; QV4::Scope scope(v4); QV4::ScopedValue result(scope); @@ -473,9 +476,9 @@ QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName, in */ QJSValue QJSEngine::newObject() { - QV4::Scope scope(d->m_v4Engine); - QV4::ScopedValue v(scope, d->m_v4Engine->newObject()); - return QJSValue(d->m_v4Engine, v->asReturnedValue()); + QV4::Scope scope(m_v4Engine); + QV4::ScopedValue v(scope, m_v4Engine->newObject()); + return QJSValue(m_v4Engine, v->asReturnedValue()); } /*! @@ -485,12 +488,12 @@ QJSValue QJSEngine::newObject() */ QJSValue QJSEngine::newArray(uint length) { - QV4::Scope scope(d->m_v4Engine); - QV4::ScopedArrayObject array(scope, d->m_v4Engine->newArrayObject()); + QV4::Scope scope(m_v4Engine); + QV4::ScopedArrayObject array(scope, m_v4Engine->newArrayObject()); if (length < 0x1000) array->arrayReserve(length); array->setArrayLengthUnchecked(length); - return QJSValue(d->m_v4Engine, array.asReturnedValue()); + return QJSValue(m_v4Engine, array.asReturnedValue()); } /*! @@ -516,7 +519,7 @@ QJSValue QJSEngine::newArray(uint length) QJSValue QJSEngine::newQObject(QObject *object) { Q_D(QJSEngine); - QV4::ExecutionEngine *v4 = QV8Engine::getV4(d); + QV4::ExecutionEngine *v4 = m_v4Engine; QV4::Scope scope(v4); if (object) { QQmlData *ddata = QQmlData::get(object, true); @@ -543,7 +546,7 @@ QJSValue QJSEngine::newQObject(QObject *object) QJSValue QJSEngine::newQMetaObject(const QMetaObject* metaObject) { Q_D(QJSEngine); - QV4::ExecutionEngine *v4 = QV8Engine::getV4(d); + QV4::ExecutionEngine *v4 = m_v4Engine; QV4::Scope scope(v4); QV4::ScopedValue v(scope, QV4::QMetaObjectWrapper::create(v4, metaObject)); return QJSValue(v4, v->asReturnedValue()); @@ -571,10 +574,9 @@ QJSValue QJSEngine::newQMetaObject(const QMetaObject* metaObject) { */ QJSValue QJSEngine::globalObject() const { - Q_D(const QJSEngine); - QV4::Scope scope(d->m_v4Engine); - QV4::ScopedValue v(scope, d->m_v4Engine->globalObject); - return QJSValue(d->m_v4Engine, v->asReturnedValue()); + QV4::Scope scope(m_v4Engine); + QV4::ScopedValue v(scope, m_v4Engine->globalObject); + return QJSValue(m_v4Engine, v->asReturnedValue()); } /*! @@ -583,10 +585,9 @@ QJSValue QJSEngine::globalObject() const */ QJSValue QJSEngine::create(int type, const void *ptr) { - Q_D(QJSEngine); - QV4::Scope scope(d->m_v4Engine); + QV4::Scope scope(m_v4Engine); QV4::ScopedValue v(scope, scope.engine->metaTypeToJS(type, ptr)); - return QJSValue(d->m_v4Engine, v->asReturnedValue()); + return QJSValue(m_v4Engine, v->asReturnedValue()); } /*! @@ -726,7 +727,7 @@ bool QJSEngine::convertV2(const QJSValue &value, int type, void *ptr) QJSEnginePrivate *QJSEnginePrivate::get(QV4::ExecutionEngine *e) { - return e->v8Engine->publicEngine()->d_func(); + return e->jsEngine()->d_func(); } QJSEnginePrivate::~QJSEnginePrivate() diff --git a/src/qml/jsapi/qjsengine.h b/src/qml/jsapi/qjsengine.h index 913757107f..89642b6f20 100644 --- a/src/qml/jsapi/qjsengine.h +++ b/src/qml/jsapi/qjsengine.h @@ -52,8 +52,6 @@ QT_BEGIN_NAMESPACE -class QV8Engine; - template <typename T> inline T qjsvalue_cast(const QJSValue &); @@ -111,7 +109,7 @@ public: void installExtensions(Extensions extensions, const QJSValue &object = QJSValue()); - QV8Engine *handle() const { return d; } + QV4::ExecutionEngine *handle() const { return m_v4Engine; } private: QJSValue create(int type, const void *ptr); @@ -124,10 +122,9 @@ protected: QJSEngine(QJSEnginePrivate &dd, QObject *parent = nullptr); private: - QV8Engine *d; + QV4::ExecutionEngine *m_v4Engine; Q_DISABLE_COPY(QJSEngine) Q_DECLARE_PRIVATE(QJSEngine) - friend class QV8Engine; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QJSEngine::Extensions) |