diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-01-23 14:14:47 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-01-28 16:37:30 +0000 |
commit | 6ef66a5dfe938a23c67c0aef0d6c7ebc98b8cca8 (patch) | |
tree | e4a1d343302d981b31fc4ebd22e0b6e88fc12c16 | |
parent | e5b157275d7b924e1a0f39d27958a7ad1eed9cef (diff) |
Remove private API dependency of qmlcachegen generated code
Since the compilation unit does not have a backend anymore, we can
create it in QtQml itself instead of in generated stub code. That
removes the last dependency to private headers in the generated code.
Change-Id: I186fc5bd679476b1a4714e4e3ba0ac00b55676cf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | src/qml/compiler/qv4compileddata.cpp | 3 | ||||
-rw-r--r-- | src/qml/compiler/qv4compileddata_p.h | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4script.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlprivate.h | 5 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader.cpp | 8 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader_p.h | 2 | ||||
-rw-r--r-- | tools/qmlcachegen/generateloader.cpp | 8 | ||||
-rw-r--r-- | tools/qmlcachegen/qtquickcompiler.prf | 4 |
8 files changed, 13 insertions, 21 deletions
diff --git a/src/qml/compiler/qv4compileddata.cpp b/src/qml/compiler/qv4compileddata.cpp index 889e755682..cdba3a5931 100644 --- a/src/qml/compiler/qv4compileddata.cpp +++ b/src/qml/compiler/qv4compileddata.cpp @@ -94,7 +94,8 @@ static QString cacheFilePath(const QUrl &url) } #endif -CompilationUnit::CompilationUnit() +CompilationUnit::CompilationUnit(const Unit *unitData) + : data(unitData) {} #ifndef V4_BOOTSTRAP diff --git a/src/qml/compiler/qv4compileddata_p.h b/src/qml/compiler/qv4compileddata_p.h index faa2d9bcb4..359a92c166 100644 --- a/src/qml/compiler/qv4compileddata_p.h +++ b/src/qml/compiler/qv4compileddata_p.h @@ -884,7 +884,7 @@ Q_STATIC_ASSERT(offsetof(CompilationUnitBase, runtimeRegularExpressions) == offs struct Q_QML_PRIVATE_EXPORT CompilationUnit final : public CompilationUnitBase { public: - CompilationUnit(); + CompilationUnit(const Unit *unitData = nullptr); #ifdef V4_BOOTSTRAP ~CompilationUnit() {} #else diff --git a/src/qml/jsruntime/qv4script.cpp b/src/qml/jsruntime/qv4script.cpp index caddf0a3e0..70ea022fe6 100644 --- a/src/qml/jsruntime/qv4script.cpp +++ b/src/qml/jsruntime/qv4script.cpp @@ -226,7 +226,7 @@ Script *Script::createFromFileOrCache(ExecutionEngine *engine, QmlContext *qmlCo { if (const QQmlPrivate::CachedQmlUnit *cachedUnit = QQmlMetaType::findCachedCompilationUnit(originalUrl)) { QQmlRefPointer<QV4::CompiledData::CompilationUnit> jsUnit; - jsUnit.adopt(cachedUnit->createCompilationUnit()); + jsUnit.adopt(new QV4::CompiledData::CompilationUnit(cachedUnit->qmlData)); return new QV4::Script(engine, qmlContext, jsUnit); } diff --git a/src/qml/qml/qqmlprivate.h b/src/qml/qml/qqmlprivate.h index 7b7e2363e4..b9e9d5e59e 100644 --- a/src/qml/qml/qqmlprivate.h +++ b/src/qml/qml/qqmlprivate.h @@ -69,7 +69,6 @@ namespace CompiledData { struct Unit; struct CompilationUnit; } -typedef CompiledData::CompilationUnit *(*CompilationUnitFactoryFunction)(); } namespace QmlIR { struct Document; @@ -284,8 +283,8 @@ namespace QQmlPrivate struct CachedQmlUnit { const QV4::CompiledData::Unit *qmlData; - QV4::CompilationUnitFactoryFunction createCompilationUnit; - void *unused; + void *unused1; + void *unused2; }; typedef const CachedQmlUnit *(*QmlUnitCacheLookupFunction)(const QUrl &url); diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index 132c0f64c0..4a22996a52 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -2431,7 +2431,7 @@ void QQmlTypeData::initializeFromCachedUnit(const QQmlPrivate::CachedQmlUnit *un QmlIR::IRLoader loader(unit->qmlData, m_document.data()); loader.load(); m_document->jsModule.fileName = finalUrlString(); - m_document->javaScriptCompilationUnit.adopt(unit->createCompilationUnit()); + m_document->javaScriptCompilationUnit.adopt(new QV4::CompiledData::CompilationUnit(unit->qmlData)); continueLoadFromIR(); } @@ -3013,7 +3013,9 @@ void QQmlScriptBlob::dataReceived(const SourceCodeData &data) void QQmlScriptBlob::initializeFromCachedUnit(const QQmlPrivate::CachedQmlUnit *unit) { - initializeFromCompilationUnit(unit->createCompilationUnit()); + QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit; + compilationUnit.adopt(new QV4::CompiledData::CompilationUnit(unit->qmlData)); + initializeFromCompilationUnit(compilationUnit); } void QQmlScriptBlob::done() @@ -3075,7 +3077,7 @@ void QQmlScriptBlob::scriptImported(QQmlScriptBlob *blob, const QV4::CompiledDat m_scripts << ref; } -void QQmlScriptBlob::initializeFromCompilationUnit(QV4::CompiledData::CompilationUnit *unit) +void QQmlScriptBlob::initializeFromCompilationUnit(const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &unit) { Q_ASSERT(!m_scriptData); m_scriptData = new QQmlScriptData(); diff --git a/src/qml/qml/qqmltypeloader_p.h b/src/qml/qml/qqmltypeloader_p.h index 0ec9f9240e..875a681aea 100644 --- a/src/qml/qml/qqmltypeloader_p.h +++ b/src/qml/qml/qqmltypeloader_p.h @@ -575,7 +575,7 @@ protected: private: void scriptImported(QQmlScriptBlob *blob, const QV4::CompiledData::Location &location, const QString &qualifier, const QString &nameSpace) override; - void initializeFromCompilationUnit(QV4::CompiledData::CompilationUnit *unit); + void initializeFromCompilationUnit(const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &unit); QList<ScriptReference> m_scripts; QQmlScriptData *m_scriptData; diff --git a/tools/qmlcachegen/generateloader.cpp b/tools/qmlcachegen/generateloader.cpp index dd2e244b56..083af29a2d 100644 --- a/tools/qmlcachegen/generateloader.cpp +++ b/tools/qmlcachegen/generateloader.cpp @@ -293,7 +293,6 @@ bool generateLoader(const QStringList &compiledFiles, const QString &outputFileN { QTextStream stream(&generatedLoaderCode); stream << "#include <QtQml/qqmlprivate.h>\n"; - stream << "#include <private/qv4compileddata_p.h>\n"; stream << "#include <QtCore/qdir.h>\n"; stream << "#include <QtCore/qurl.h>\n"; stream << "\n"; @@ -306,13 +305,8 @@ bool generateLoader(const QStringList &compiledFiles, const QString &outputFileN const QString ns = symbolNamespaceForPath(compiledFile); stream << "namespace " << symbolNamespaceForPath(compiledFile) << " { \n"; stream << " extern const unsigned char qmlData[];\n"; - stream << " QV4::CompiledData::CompilationUnit *createCompilationUnit() {\n"; - stream << " QV4::CompiledData::CompilationUnit *unit = new QV4::CompiledData::CompilationUnit;\n"; - stream << " unit->data = reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData);\n"; - stream << " return unit;\n"; - stream << " }\n"; stream << " const QQmlPrivate::CachedQmlUnit unit = {\n"; - stream << " reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), &createCompilationUnit, nullptr\n"; + stream << " reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr\n"; stream << " };\n"; stream << "}\n"; } diff --git a/tools/qmlcachegen/qtquickcompiler.prf b/tools/qmlcachegen/qtquickcompiler.prf index 985a0a5cdc..b68e8f91a2 100644 --- a/tools/qmlcachegen/qtquickcompiler.prf +++ b/tools/qmlcachegen/qtquickcompiler.prf @@ -53,10 +53,6 @@ for(res, QMLCACHE_RESOURCE_FILES) { QMLCACHE_RESOURCE_FLAGS += --resource=$$res } -!isEmpty(QMLCACHE_FILES) { - QT_PRIVATE *= core-private qml-private -} - defineReplace(qmlCacheOutputName) { name = $$absolute_path($$1, $$OUT_PWD) name = $$relative_path($$name, $$_PRO_FILE_PWD_) |