aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4compileddata.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-07-25 09:12:21 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2018-07-31 17:08:13 +0000
commitc8f118d3a4ba53761d3dbc6e08b3454a2dae0a0a (patch)
tree3de823070a40e64ba62708d079c2732d724c08e8 /src/qml/compiler/qv4compileddata.cpp
parent8237f645a33199e0a8aded0a3f7e6077990707fd (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.cpp24
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;
}