diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-20 15:19:17 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-31 07:28:28 +0000 |
commit | fcf9b7efa5b2a0d8f49e59b2a977b8122632aff6 (patch) | |
tree | 18f37a5a7775c5876947236fc6913a3a3e227f36 /src/qml/types | |
parent | 8e45393d10ca649c46a82eb8c125bd38cc5b5615 (diff) |
Clean up constant storage for CompiledData::Binding
Store doubles in bindings in the constant table of the compilation unit
instead of each binding. This removes one of the two 8 byte members of
the value union and also allows for sharing of constants throughout a
.qml file.
Change-Id: I1d7daafdb7f24e34c14cd160d2dcb2c5aaac1c50
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/types')
-rw-r--r-- | src/qml/types/qqmllistmodel.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/qml/types/qqmllistmodel.cpp b/src/qml/types/qqmllistmodel.cpp index 503e5cb88c..e352aa9d6c 100644 --- a/src/qml/types/qqmllistmodel.cpp +++ b/src/qml/types/qqmllistmodel.cpp @@ -313,7 +313,7 @@ QString StringOrTranslation::toString(const QQmlListModel *owner) const } if (!owner) return QString(); - return d.asT2()->valueAsString(owner->m_compilationUnit->unitData()); + return d.asT2()->valueAsString(owner->m_compilationUnit.data()); } QString StringOrTranslation::asString() const @@ -2682,7 +2682,7 @@ bool QQmlListModelParser::verifyProperty(const QQmlRefPointer<QV4::CompiledData: return false; } } else if (binding->type == QV4::CompiledData::Binding::Type_Script) { - QString scriptStr = binding->valueAsScriptString(compilationUnit->unitData()); + QString scriptStr = binding->valueAsScriptString(compilationUnit.data()); if (!binding->isFunctionExpression() && !definesEmptyList(scriptStr)) { QByteArray script = scriptStr.toUtf8(); bool ok; @@ -2734,13 +2734,13 @@ bool QQmlListModelParser::applyProperty(const QQmlRefPointer<QV4::CompiledData:: if (binding->isTranslationBinding()) { value = QVariant::fromValue<const QV4::CompiledData::Binding*>(binding); } else if (binding->evaluatesToString()) { - value = binding->valueAsString(qmlUnit); + value = binding->valueAsString(compilationUnit.data()); } else if (binding->type == QV4::CompiledData::Binding::Type_Number) { - value = binding->valueAsNumber(); + value = binding->valueAsNumber(compilationUnit->constants); } else if (binding->type == QV4::CompiledData::Binding::Type_Boolean) { value = binding->valueAsBoolean(); } else if (binding->type == QV4::CompiledData::Binding::Type_Script) { - QString scriptStr = binding->valueAsScriptString(qmlUnit); + QString scriptStr = binding->valueAsScriptString(compilationUnit.data()); if (definesEmptyList(scriptStr)) { const ListLayout::Role &role = model->getOrCreateListRole(elementName); ListModel *emptyModel = new ListModel(role.subLayout, nullptr); |