Use the optimized QDeclarativeExpression constructor where possible.

Pass in the QDeclarativeScriptString directly, to make use of the
precompiled binding. Also does some minor cleanup of the related
internal implementation.

Change-Id: I4b199298c9da3ee11c51c9c98b384c8324f62c26
Reviewed-on: http://codereview.qt.nokia.com/3696
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Charles Yin <charles.yin@nokia.com>
This commit is contained in:
Michael Brasser 2011-08-29 15:06:14 +10:00 committed by Qt by Nokia
parent 438639f9c4
commit f29bfda2e6
4 changed files with 7 additions and 15 deletions

View File

@ -235,7 +235,7 @@ QDeclarativeBinding::createBinding(Identifier id, QObject *obj, QDeclarativeCont
QDeclarativeContextData *ctxtdata = QDeclarativeContextData::get(ctxt);
QDeclarativeEnginePrivate *engine = QDeclarativeEnginePrivate::get(qmlEngine(obj));
QDeclarativeEnginePrivate *engine = QDeclarativeEnginePrivate::get(ctxt->engine());
QDeclarativeCompiledData *cdata = 0;
QDeclarativeTypeData *typeData = 0;
if (engine && ctxtdata && !ctxtdata->url.isEmpty()) {

View File

@ -242,7 +242,7 @@ QDeclarativeExpression::QDeclarativeExpression(const QDeclarativeScriptString &s
} else {
QDeclarativeContextData *ctxtdata = QDeclarativeContextData::get(script.context());
QDeclarativeEnginePrivate *engine = QDeclarativeEnginePrivate::get(qmlEngine(script.scopeObject()));
QDeclarativeEnginePrivate *engine = QDeclarativeEnginePrivate::get(script.context()->engine());
QDeclarativeCompiledData *cdata = 0;
QDeclarativeTypeData *typeData = 0;
if (engine && ctxtdata && !ctxtdata->url.isEmpty()) {
@ -251,7 +251,7 @@ QDeclarativeExpression::QDeclarativeExpression(const QDeclarativeScriptString &s
}
if (cdata)
d->init(ctxtdata, cdata->primitives.at(id), cdata, script.scopeObject(),
d->init(ctxtdata, cdata->primitives.at(id), true, script.scopeObject(),
cdata->name, script.d.data()->lineNumber);
else
defaultConstruction = true;

View File

@ -827,12 +827,8 @@ void QDeclarativeScriptActionPrivate::execute()
QDeclarativeScriptString scriptStr = hasRunScriptScript ? runScriptScript : script;
const QString &str = scriptStr.script();
if (!str.isEmpty()) {
QDeclarativeExpression expr(scriptStr.context(), scriptStr.scopeObject(), str);
QDeclarativeData *ddata = QDeclarativeData::get(q);
if (ddata && ddata->outerContext && !ddata->outerContext->url.isEmpty())
expr.setSourceLocation(ddata->outerContext->url.toString(), ddata->lineNumber);
if (!scriptStr.script().isEmpty()) {
QDeclarativeExpression expr(scriptStr);
expr.evaluate();
if (expr.hasError())
qmlInfo(q) << expr.error();

View File

@ -131,12 +131,8 @@ void QDeclarativeStateChangeScript::setName(const QString &n)
void QDeclarativeStateChangeScript::execute(Reason)
{
Q_D(QDeclarativeStateChangeScript);
const QString &script = d->script.script();
if (!script.isEmpty()) {
QDeclarativeExpression expr(d->script.context(), d->script.scopeObject(), script);
QDeclarativeData *ddata = QDeclarativeData::get(this);
if (ddata && ddata->outerContext && !ddata->outerContext->url.isEmpty())
expr.setSourceLocation(ddata->outerContext->url.toString(), ddata->lineNumber);
if (!d->script.script().isEmpty()) {
QDeclarativeExpression expr(d->script);
expr.evaluate();
if (expr.hasError())
qmlInfo(this, expr.error());