aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlpropertycache.cpp
diff options
context:
space:
mode:
authorMatthew Vogt <matthew.vogt@nokia.com>2012-06-04 14:43:38 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-09 01:36:23 +0200
commit49a3883e86b61d8facfeea9c43037d484cb50b92 (patch)
treeba1afdf6ddc3740f26c5e3c95cb2fffeb953abb4 /src/qml/qml/qqmlpropertycache.cpp
parent3095493a4ce4bec11b9381a3d1d23f17b313332c (diff)
Use V4 binding for non-final properties where possible
When a property referenced in a binding is not marked as final, do not automatically abort optimization. Instead generate both V4 and V8 binidngs, and only fall back to the V8 binding if necessary at run time. Change-Id: I1bcc7e2b495935c5d519a9a223f640c1972cdb4e Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmlpropertycache.cpp')
-rw-r--r--src/qml/qml/qqmlpropertycache.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlpropertycache.cpp b/src/qml/qml/qqmlpropertycache.cpp
index d922b9942a..8570df78a1 100644
--- a/src/qml/qml/qqmlpropertycache.cpp
+++ b/src/qml/qml/qqmlpropertycache.cpp
@@ -347,6 +347,7 @@ void QQmlPropertyCache::appendProperty(const QString &name,
if (QQmlPropertyData **old = stringCache.value(string)) {
data.overrideIndexIsProperty = !(*old)->isFunction();
data.overrideIndex = (*old)->coreIndex;
+ (*old)->flags |= QQmlPropertyData::IsOverridden;
}
propertyIndexCache.append(data);
@@ -366,6 +367,7 @@ void QQmlPropertyCache::appendProperty(const QHashedCStringRef &name,
if (QQmlPropertyData **old = stringCache.value(name)) {
data.overrideIndexIsProperty = !(*old)->isFunction();
data.overrideIndex = (*old)->coreIndex;
+ (*old)->flags |= QQmlPropertyData::IsOverridden;
}
propertyIndexCache.append(data);
@@ -403,6 +405,7 @@ void QQmlPropertyCache::appendSignal(const QString &name, quint32 flags, int cor
if (QQmlPropertyData **old = stringCache.value(string)) {
data.overrideIndexIsProperty = !(*old)->isFunction();
data.overrideIndex = (*old)->coreIndex;
+ (*old)->flags |= QQmlPropertyData::IsOverridden;
}
methodIndexCache.append(data);
@@ -441,6 +444,7 @@ void QQmlPropertyCache::appendSignal(const QHashedCStringRef &name, quint32 flag
if (QQmlPropertyData **old = stringCache.value(name)) {
data.overrideIndexIsProperty = !(*old)->isFunction();
data.overrideIndex = (*old)->coreIndex;
+ (*old)->flags |= QQmlPropertyData::IsOverridden;
}
methodIndexCache.append(data);
@@ -477,6 +481,7 @@ void QQmlPropertyCache::appendMethod(const QString &name, quint32 flags, int cor
if (QQmlPropertyData **old = stringCache.value(string)) {
data.overrideIndexIsProperty = !(*old)->isFunction();
data.overrideIndex = (*old)->coreIndex;
+ (*old)->flags |= QQmlPropertyData::IsOverridden;
}
methodIndexCache.append(data);
@@ -510,6 +515,7 @@ void QQmlPropertyCache::appendMethod(const QHashedCStringRef &name, quint32 flag
if (QQmlPropertyData **old = stringCache.value(name)) {
data.overrideIndexIsProperty = !(*old)->isFunction();
data.overrideIndex = (*old)->coreIndex;
+ (*old)->flags |= QQmlPropertyData::IsOverridden;
}
methodIndexCache.append(data);
@@ -738,6 +744,7 @@ void QQmlPropertyCache::append(QQmlEngine *engine, const QMetaObject *metaObject
data->flags |= QQmlPropertyData::IsOverload;
data->overrideIndexIsProperty = !old->isFunction();
data->overrideIndex = old->coreIndex;
+ old->flags |= QQmlPropertyData::IsOverridden;
}
}
@@ -797,6 +804,7 @@ void QQmlPropertyCache::append(QQmlEngine *engine, const QMetaObject *metaObject
} else if (old) {
data->overrideIndexIsProperty = !old->isFunction();
data->overrideIndex = old->coreIndex;
+ old->flags |= QQmlPropertyData::IsOverridden;
}
}
}