summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlbasicscript.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-08-10 05:37:19 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-08-10 08:01:37 (GMT)
commit8c3405bbf65826f0ab0be0bd090d723f8efaa3af (patch)
treef6886a2b8a86f567b98728bba9cdc3d1be780dcf /src/declarative/qml/qmlbasicscript.cpp
parent12ffa33ddc725cd94662a383af6e1793049c807c (diff)
downloadQt-8c3405bbf65826f0ab0be0bd090d723f8efaa3af.zip
Qt-8c3405bbf65826f0ab0be0bd090d723f8efaa3af.tar.gz
Qt-8c3405bbf65826f0ab0be0bd090d723f8efaa3af.tar.bz2
Abstract expression and binding APIs
By splitting the interface through which the system interacts with bindings away from a specific implementation, we can introduce highly specialized implementations for specific optimizations. This commit also includes a sample optimization for object properties being assigned directly from a local id.
Diffstat (limited to 'src/declarative/qml/qmlbasicscript.cpp')
-rw-r--r--src/declarative/qml/qmlbasicscript.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/declarative/qml/qmlbasicscript.cpp b/src/declarative/qml/qmlbasicscript.cpp
index 21860a5..8993845 100644
--- a/src/declarative/qml/qmlbasicscript.cpp
+++ b/src/declarative/qml/qmlbasicscript.cpp
@@ -697,6 +697,23 @@ QVariant QmlBasicScript::run(QmlContext *context, QObject *me)
return stack.top();
}
+bool QmlBasicScript::isSingleIdFetch() const
+{
+ if (!isValid())
+ return false;
+
+ return d->instructionCount == 1 &&
+ d->instructions()[0].type == ScriptInstruction::LoadIdObject;
+}
+
+int QmlBasicScript::singleIdFetchIndex() const
+{
+ if (!isSingleIdFetch())
+ return -1;
+
+ return d->instructions()[0].fetch.idx;
+}
+
/*!
Return a pointer to the script's compile data, or null if there is no data.
*/