diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index b7b882cd97eefb08188ebe4bbe808db1dde02990..aaa1acaaa385b43a8a3aa9e22e86f6484884de36 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -3613,12 +3613,15 @@ bool QDeclarativeCompiler::completeComponentBuild() binding.property->type != qMetaTypeId<QDeclarativeBinding*>()) { binding.dataType = BindingReference::V8; sharedBindings.append(b); + + if (componentStats) + componentStats->componentStat.sharedBindings.append(b->value->location); } else { binding.dataType = BindingReference::QtScript; - } - if (componentStats) - componentStats->componentStat.scriptBindings.append(b->value->location); + if (componentStats) + componentStats->componentStat.scriptBindings.append(b->value->location); + } } if (!sharedBindings.isEmpty()) { @@ -3699,6 +3702,25 @@ void QDeclarativeCompiler::dumpStats() qWarning().nospace() << output.constData(); } + qWarning().nospace() << " Shared Bindings: " << stat.sharedBindings.count(); + { + QByteArray output; + for (int ii = 0; ii < stat.sharedBindings.count(); ++ii) { + if (0 == (ii % 10)) { + if (ii) output.append("\n"); + output.append(" "); + } + + output.append("("); + output.append(QByteArray::number(stat.sharedBindings.at(ii).start.line)); + output.append(":"); + output.append(QByteArray::number(stat.sharedBindings.at(ii).start.column)); + output.append(") "); + } + if (!output.isEmpty()) + qWarning().nospace() << output.constData(); + } + qWarning().nospace() << " QScript Bindings: " << stat.scriptBindings.count(); { QByteArray output; diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 637cd805690bf0027382e2a52b8ed5531dc5e1d6..3ef4668b79fbe8fa1720a4b3503620e1ea4b5efc 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -450,6 +450,7 @@ private: int ids; QList<QDeclarativeScript::LocationSpan> scriptBindings; + QList<QDeclarativeScript::LocationSpan> sharedBindings; QList<QDeclarativeScript::LocationSpan> optimizedBindings; int objects; };