diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-25 09:12:21 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-31 17:08:13 +0000 |
commit | c8f118d3a4ba53761d3dbc6e08b3454a2dae0a0a (patch) | |
tree | 3de823070a40e64ba62708d079c2732d724c08e8 /src/qml/compiler/qv4compileddata.cpp | |
parent | 8237f645a33199e0a8aded0a3f7e6077990707fd (diff) |
Minor cleanup
Replace the conditional unit copying when working with AOT cache files
with an unconditional copy, as it always reduces the size and needs to be
done anyway due to the file name.
Change-Id: Id00c1361c4f31081c54dbbc29a96284cc09d06e0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4compileddata.cpp')
-rw-r--r-- | src/qml/compiler/qv4compileddata.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/qml/compiler/qv4compileddata.cpp b/src/qml/compiler/qv4compileddata.cpp index 32d17a709d..e99c1ec842 100644 --- a/src/qml/compiler/qv4compileddata.cpp +++ b/src/qml/compiler/qv4compileddata.cpp @@ -470,21 +470,17 @@ Unit *CompilationUnit::createUnitData(QmlIR::Document *irDocument) QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit = irDocument->javaScriptCompilationUnit; QV4::CompiledData::Unit *jsUnit = const_cast<QV4::CompiledData::Unit*>(compilationUnit->data); - auto ensureWritableUnit = [&jsUnit, &compilationUnit]() { - if (jsUnit == compilationUnit->data) { - // Discard the old QML tables as the caller will re-create them anyway. - quint32 unitSizeWithoutQMLTables = jsUnit->offsetToImports; - char *unitCopy = (char*)malloc(unitSizeWithoutQMLTables); - memcpy(unitCopy, jsUnit, unitSizeWithoutQMLTables); - jsUnit = reinterpret_cast<QV4::CompiledData::Unit*>(unitCopy); - jsUnit->unitSize = unitSizeWithoutQMLTables; - } - }; + // Discard the old QML tables as the caller will re-create them anyway. + quint32 unitSizeWithoutQMLTables = jsUnit->offsetToImports; + char *unitCopy = (char*)malloc(unitSizeWithoutQMLTables); + memcpy(unitCopy, jsUnit, unitSizeWithoutQMLTables); + jsUnit = reinterpret_cast<QV4::CompiledData::Unit*>(unitCopy); + jsUnit->flags &= ~QV4::CompiledData::Unit::StaticData; + jsUnit->unitSize = unitSizeWithoutQMLTables; QV4::Compiler::StringTableGenerator &stringTable = irDocument->jsGenerator.stringTable; if (jsUnit->sourceFileIndex == quint32(0) || stringTable.stringForIndex(jsUnit->sourceFileIndex) != irDocument->jsModule.fileName) { - ensureWritableUnit(); jsUnit->sourceFileIndex = stringTable.registerString(irDocument->jsModule.fileName); jsUnit->finalUrlIndex = stringTable.registerString(irDocument->jsModule.finalUrl); } @@ -526,8 +522,6 @@ Unit *CompilationUnit::createUnitData(QmlIR::Document *irDocument) // Update signal signatures if (!changedSignals.isEmpty()) { - ensureWritableUnit(); - for (int i = 0; i < changedSignals.count(); ++i) { const uint functionIndex = changedSignals.at(i); // The data is now read-write due to the copy above, so the const_cast is ok. @@ -550,7 +544,6 @@ Unit *CompilationUnit::createUnitData(QmlIR::Document *irDocument) } if (!signalParameterNameTable.isEmpty()) { - ensureWritableUnit(); Q_ASSERT(jsUnit != compilationUnit->data); const uint signalParameterTableSize = signalParameterNameTable.count() * sizeof(quint32); uint newSize = jsUnit->unitSize + signalParameterTableSize; @@ -561,9 +554,6 @@ Unit *CompilationUnit::createUnitData(QmlIR::Document *irDocument) jsUnit->unitSize = newSize; } - if (jsUnit != compilationUnit->data) - jsUnit->flags &= ~QV4::CompiledData::Unit::StaticData; - return jsUnit; } |