diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-26 11:05:08 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-31 17:08:37 +0000 |
commit | 193db4c52613a37275535783825190ddd7e1f758 (patch) | |
tree | c48dceff1739e6203e4096a1763e5141649e107c | |
parent | c549d9c4e58ef8b6f9c8d954dc24072ce529f326 (diff) |
Clean up internal QML unit creation API
Since the callers always end up assigning the returned unit pointer back
to the compilation unit's data member, we might as well do that inside
the function and return void instead.
Change-Id: I7a7f3e7a0c89ffe2f9474149fcf61736609b363d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | src/qml/compiler/qqmlirbuilder.cpp | 4 | ||||
-rw-r--r-- | src/qml/compiler/qqmlirbuilder_p.h | 2 | ||||
-rw-r--r-- | src/qml/compiler/qqmltypecompiler.cpp | 6 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader.cpp | 5 | ||||
-rw-r--r-- | tools/qmlcachegen/qmlcachegen.cpp | 24 |
5 files changed, 17 insertions, 24 deletions
diff --git a/src/qml/compiler/qqmlirbuilder.cpp b/src/qml/compiler/qqmlirbuilder.cpp index 90ba0506f0..e2ea8f6853 100644 --- a/src/qml/compiler/qqmlirbuilder.cpp +++ b/src/qml/compiler/qqmlirbuilder.cpp @@ -1551,7 +1551,7 @@ bool IRBuilder::isRedundantNullInitializerForPropertyDeclaration(Property *prope return QQmlJS::AST::cast<QQmlJS::AST::NullExpression *>(expr); } -QV4::CompiledData::Unit *QmlUnitGenerator::generate(Document &output, const QV4::CompiledData::DependentTypesHasher &dependencyHasher) +void QmlUnitGenerator::generate(Document &output, const QV4::CompiledData::DependentTypesHasher &dependencyHasher) { QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit = output.javaScriptCompilationUnit; @@ -1798,7 +1798,7 @@ QV4::CompiledData::Unit *QmlUnitGenerator::generate(Document &output, const QV4: qDebug() << " " << totalStringSize << "bytes total strings"; } - return qmlUnit; + compilationUnit->setUnitData(qmlUnit); } char *QmlUnitGenerator::writeBindings(char *bindingPtr, const Object *o, BindingFilter filter) const diff --git a/src/qml/compiler/qqmlirbuilder_p.h b/src/qml/compiler/qqmlirbuilder_p.h index f8d481e14f..d1e2b17bb7 100644 --- a/src/qml/compiler/qqmlirbuilder_p.h +++ b/src/qml/compiler/qqmlirbuilder_p.h @@ -563,7 +563,7 @@ public: struct Q_QML_PRIVATE_EXPORT QmlUnitGenerator { - QV4::CompiledData::Unit *generate(Document &output, const QV4::CompiledData::DependentTypesHasher &dependencyHasher = QV4::CompiledData::DependentTypesHasher()); + void generate(Document &output, const QV4::CompiledData::DependentTypesHasher &dependencyHasher = QV4::CompiledData::DependentTypesHasher()); private: typedef bool (Binding::*BindingFilter)() const; diff --git a/src/qml/compiler/qqmltypecompiler.cpp b/src/qml/compiler/qqmltypecompiler.cpp index 15edc010fd..c4a3d47f44 100644 --- a/src/qml/compiler/qqmltypecompiler.cpp +++ b/src/qml/compiler/qqmltypecompiler.cpp @@ -161,11 +161,7 @@ QQmlRefPointer<QV4::CompiledData::CompilationUnit> QQmlTypeCompiler::compile() // Generate QML compiled type data structures QmlIR::QmlUnitGenerator qmlGenerator; - QV4::CompiledData::Unit *qmlUnit = qmlGenerator.generate(*document, dependencyHasher); - - Q_ASSERT(document->javaScriptCompilationUnit); - // The js unit owns the data and will free the qml unit. - document->javaScriptCompilationUnit->setUnitData(qmlUnit); + qmlGenerator.generate(*document, dependencyHasher); QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit = document->javaScriptCompilationUnit; compilationUnit = document->javaScriptCompilationUnit; diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index b105165be7..64a0a04cd7 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -3008,10 +3008,7 @@ void QQmlScriptBlob::dataReceived(const SourceCodeData &data) irUnit.javaScriptCompilationUnit = unit; QmlIR::QmlUnitGenerator qmlGenerator; - QV4::CompiledData::Unit *unitData = qmlGenerator.generate(irUnit); - Q_ASSERT(!unit->unitData()); - // The js unit owns the data and will free the qml unit. - unit->setUnitData(unitData); + qmlGenerator.generate(irUnit); if ((!disableDiskCache() || forceDiskCache()) && !isDebugging()) { QString errorString; diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp index 34814af17c..4dddab18b2 100644 --- a/tools/qmlcachegen/qmlcachegen.cpp +++ b/tools/qmlcachegen/qmlcachegen.cpp @@ -162,7 +162,7 @@ static bool checkArgumentsObjectUseInSignalHandlers(const QmlIR::Document &doc, return true; } -using SaveFunction = std::function<bool (QV4::CompiledData::CompilationUnit *, QString *)>; +using SaveFunction = std::function<bool (const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &, QString *)>; static bool compileQmlFile(const QString &inputFileName, SaveFunction saveFunction, Error *error) { @@ -232,12 +232,12 @@ static bool compileQmlFile(const QString &inputFileName, SaveFunction saveFuncti QmlIR::QmlUnitGenerator generator; irDocument.javaScriptCompilationUnit = v4CodeGen.generateCompilationUnit(/*generate unit*/false); - QV4::CompiledData::Unit *unit = generator.generate(irDocument); + generator.generate(irDocument); + QV4::CompiledData::Unit *unit = const_cast<QV4::CompiledData::Unit*>(irDocument.javaScriptCompilationUnit->data); unit->flags |= QV4::CompiledData::Unit::StaticData; unit->flags |= QV4::CompiledData::Unit::PendingTypeCompilation; - irDocument.javaScriptCompilationUnit->data = unit; - if (!saveFunction(irDocument.javaScriptCompilationUnit.data(), &error->message)) + if (!saveFunction(irDocument.javaScriptCompilationUnit, &error->message)) return false; free(unit); @@ -321,14 +321,13 @@ static bool compileJSFile(const QString &inputFileName, const QString &inputFile irDocument.jsModule.fileName.clear(); irDocument.jsModule.finalUrl.clear(); - QmlIR::QmlUnitGenerator generator; - irDocument.javaScriptCompilationUnit = v4CodeGen.generateCompilationUnit(/*generate unit*/false); - QV4::CompiledData::Unit *unit = generator.generate(irDocument); + QmlIR::QmlUnitGenerator generator; + generator.generate(irDocument); + QV4::CompiledData::Unit *unit = const_cast<QV4::CompiledData::Unit*>(irDocument.javaScriptCompilationUnit->data); unit->flags |= QV4::CompiledData::Unit::StaticData; - irDocument.javaScriptCompilationUnit->data = unit; - if (!saveFunction(irDocument.javaScriptCompilationUnit.data(), &error->message)) { + if (!saveFunction(irDocument.javaScriptCompilationUnit, &error->message)) { engine->setDirectives(oldDirs); return false; } @@ -339,7 +338,8 @@ static bool compileJSFile(const QString &inputFileName, const QString &inputFile return true; } -static bool saveUnitAsCpp(const QString &inputFileName, const QString &outputFileName, QV4::CompiledData::CompilationUnit *unit, QString *errorString) +static bool saveUnitAsCpp(const QString &inputFileName, const QString &outputFileName, + const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &unit, QString *errorString) { QSaveFile f(outputFileName); if (!f.open(QIODevice::WriteOnly | QIODevice::Truncate)) { @@ -527,12 +527,12 @@ int main(int argc, char **argv) inputFileUrl = QStringLiteral("qrc://") + inputResourcePath; - saveFunction = [inputResourcePath, outputFileName](QV4::CompiledData::CompilationUnit *unit, QString *errorString) { + saveFunction = [inputResourcePath, outputFileName](const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &unit, QString *errorString) { return saveUnitAsCpp(inputResourcePath, outputFileName, unit, errorString); }; } else { - saveFunction = [outputFileName](QV4::CompiledData::CompilationUnit *unit, QString *errorString) { + saveFunction = [outputFileName](const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &unit, QString *errorString) { return unit->saveToDisk(outputFileName, errorString); }; } |