diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-12-14 03:42:55 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-12-14 03:42:55 (GMT) |
commit | 8e466a30af34c5bb83e7fc591ddf569e2ec79d9f (patch) | |
tree | 8c509407be0474dea2993486afc03dccd84ec822 /src/declarative/qml/qmlvme.cpp | |
parent | c71d7b264cb55bb444cea90e1efa82f0243f566d (diff) | |
download | Qt-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.cpp | 21 |
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; |