More verbose compiler stats.
authorMichael Brasser <michael.brasser@nokia.com>
Thu, 1 Mar 2012 00:34:01 +0000 (10:34 +1000)
committerQt by Nokia <qt-info@nokia.com>
Fri, 2 Mar 2012 03:53:14 +0000 (04:53 +0100)
Report shared and unshared v8 bindings separately.

Change-Id: Iaa198dcc93035a778b13d7137742a7b308aa782f
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
src/declarative/qml/qdeclarativecompiler.cpp
src/declarative/qml/qdeclarativecompiler_p.h

index b7b882c..aaa1aca 100644 (file)
@@ -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;
index 637cd80..3ef4668 100644 (file)
@@ -450,6 +450,7 @@ private:
 
         int ids;
         QList<QDeclarativeScript::LocationSpan> scriptBindings;
+        QList<QDeclarativeScript::LocationSpan> sharedBindings;
         QList<QDeclarativeScript::LocationSpan> optimizedBindings;
         int objects;
     };