diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-08-10 05:37:19 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-08-10 08:01:37 (GMT) |
commit | 8c3405bbf65826f0ab0be0bd090d723f8efaa3af (patch) | |
tree | f6886a2b8a86f567b98728bba9cdc3d1be780dcf /src/declarative/qml/qmlbasicscript.cpp | |
parent | 12ffa33ddc725cd94662a383af6e1793049c807c (diff) | |
download | Qt-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.cpp | 17 |
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. */ |