diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2010-11-16 05:46:39 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2010-11-16 05:46:39 (GMT) |
commit | e8e28735046d419463e235a58a7c4c88d04163db (patch) | |
tree | f20c4c5a27d9eb8667d2909cb8c189d85b58c8c1 /src/declarative/qml/qdeclarativerewrite.cpp | |
parent | 463786121871c7b0934949f4fcb8ef8b4d64712f (diff) | |
download | Qt-e8e28735046d419463e235a58a7c4c88d04163db.zip Qt-e8e28735046d419463e235a58a7c4c88d04163db.tar.gz Qt-e8e28735046d419463e235a58a7c4c88d04163db.tar.bz2 |
Optimize test for sharable bindings.
Reviewed-by: Martin Jones
Diffstat (limited to 'src/declarative/qml/qdeclarativerewrite.cpp')
-rw-r--r-- | src/declarative/qml/qdeclarativerewrite.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativerewrite.cpp b/src/declarative/qml/qdeclarativerewrite.cpp index bc9a114..80b9ab2 100644 --- a/src/declarative/qml/qdeclarativerewrite.cpp +++ b/src/declarative/qml/qdeclarativerewrite.cpp @@ -62,12 +62,17 @@ bool SharedBindingTester::isSharable(const QString &code) if (!parser.statement()) return false; + return isSharable(parser.statement()); +} + +bool SharedBindingTester::isSharable(AST::Statement *statement) +{ _sharable = true; - AST::Node::acceptChild(parser.statement(), this); + AST::Node::acceptChild(statement, this); return _sharable; } -QString RewriteBinding::operator()(const QString &code, bool *ok) +QString RewriteBinding::operator()(const QString &code, bool *ok, bool *sharable) { Engine engine; NodePool pool(QString(), &engine); @@ -80,6 +85,10 @@ QString RewriteBinding::operator()(const QString &code, bool *ok) return QString(); } else { if (ok) *ok = true; + if (sharable) { + SharedBindingTester tester; + *sharable = tester.isSharable(parser.statement()); + } } return rewrite(code, 0, parser.statement()); } |