aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlirloader.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-02-16 11:29:30 +0100
committerUlf Hermann <ulf.hermann@qt.io>2023-03-02 17:54:30 +0100
commit35152b432e82fc274c3983d0f369666a899cde49 (patch)
tree8c4fb849f36d0d1b03685a431823c9608a786bd4 /src/qml/qml/qqmlirloader.cpp
parenta703701394820fcfffb544a5bf7c464410cdc0a2 (diff)
QML: Add an "Addressable" value to ValueTypeBehavior
Task-number: QTBUG-94807 Change-Id: I8c78faa99fc4c4b2ffd8c89f1037fc7569212c73 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/qml/qml/qqmlirloader.cpp')
-rw-r--r--src/qml/qml/qqmlirloader.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlirloader.cpp b/src/qml/qml/qqmlirloader.cpp
index 5137c4c1ab..f3e6b9ec39 100644
--- a/src/qml/qml/qqmlirloader.cpp
+++ b/src/qml/qml/qqmlirloader.cpp
@@ -57,7 +57,7 @@ void QQmlIRLoader::load()
const auto createValueTypePragma = [&](
Pragma::PragmaType type,
- Pragma::ValueTypeBehaviorValue value) {
+ Pragma::ValueTypeBehaviorValues value) {
createPragma(type)->valueTypeBehavior = value;
};
@@ -80,8 +80,13 @@ void QQmlIRLoader::load()
if (unit->flags & QV4::CompiledData::Unit::NativeMethodsAcceptThisObject)
createNativeMethodPragma(Pragma::NativeMethodBehavior, Pragma::AcceptThisObject);
+ Pragma::ValueTypeBehaviorValues valueTypeBehavior = {};
if (unit->flags & QV4::CompiledData::Unit::ValueTypesCopied)
- createValueTypePragma(Pragma::ValueTypeBehavior, Pragma::Copy);
+ valueTypeBehavior |= Pragma::Copy;
+ if (unit->flags & QV4::CompiledData::Unit::ValueTypesAddressable)
+ valueTypeBehavior |= Pragma::Addressable;
+ if (valueTypeBehavior)
+ createValueTypePragma(Pragma::ValueTypeBehavior, valueTypeBehavior);
for (uint i = 0; i < qmlUnit->nObjects; ++i) {
const QV4::CompiledData::Object *serializedObject = qmlUnit->objectAt(i);