summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlvme.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-12-14 03:42:55 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-12-14 03:42:55 (GMT)
commit8e466a30af34c5bb83e7fc591ddf569e2ec79d9f (patch)
tree8c509407be0474dea2993486afc03dccd84ec822 /src/declarative/qml/qmlvme.cpp
parentc71d7b264cb55bb444cea90e1efa82f0243f566d (diff)
downloadQt-8e466a30af34c5bb83e7fc591ddf569e2ec79d9f.zip
Qt-8e466a30af34c5bb83e7fc591ddf569e2ec79d9f.tar.gz
Qt-8e466a30af34c5bb83e7fc591ddf569e2ec79d9f.tar.bz2
Introduce experimental binding optimizer
Enable with QML_EXPERIMENTAL=1
Diffstat (limited to 'src/declarative/qml/qmlvme.cpp')
-rw-r--r--src/declarative/qml/qmlvme.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp
index e3fc288..e4295a1 100644
--- a/src/declarative/qml/qmlvme.cpp
+++ b/src/declarative/qml/qmlvme.cpp
@@ -608,6 +608,27 @@ QObject *QmlVME::run(QmlVMEStack<QObject *> &stack, QmlContext *ctxt,
}
break;
+ case QmlInstruction::StoreCompiledBinding:
+ {
+ QObject *target =
+ stack.at(stack.count() - 1 - instr.assignBinding.owner);
+ QObject *scope =
+ stack.at(stack.count() - 1 - instr.assignBinding.context);
+
+ int property = instr.assignBinding.property;
+ if (stack.count() == 1 && bindingSkipList.testBit(property & 0xFFFF))
+ break;
+
+ const char *data = datas.at(instr.assignBinding.value).constData();
+
+ QmlBinding_Basic *bind =
+ new QmlBinding_Basic(target, property, data, comp, scope, ctxt);
+ bindValues.append(bind);
+ bind->m_mePtr = &bindValues.values[bindValues.count - 1];
+ bind->addToObject(target);
+ }
+ break;
+
case QmlInstruction::StoreIdOptBinding:
{
int coreIndex = instr.assignIdOptBinding.property;