summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativerewrite.cpp
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2010-11-16 05:46:39 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2010-11-16 05:46:39 (GMT)
commite8e28735046d419463e235a58a7c4c88d04163db (patch)
treef20c4c5a27d9eb8667d2909cb8c189d85b58c8c1 /src/declarative/qml/qdeclarativerewrite.cpp
parent463786121871c7b0934949f4fcb8ef8b4d64712f (diff)
downloadQt-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.cpp13
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());
}