aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger/qqmlprofilerservice_p.h
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2012-03-14 14:20:31 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-19 12:02:48 +0100
commitc975f80db197cef667c512c06e3a03b17570e7d6 (patch)
tree5d0a4e2598646c8074fe09ff25f45c1ea3a9642a /src/qml/debugger/qqmlprofilerservice_p.h
parent587a1ce124d1f814b576b1a5e9fa2d3ed2c9d336 (diff)
QmlProfiler: Make sure there's minimal overhead when not enabled
Do expensive operations directly in the constructor, guarded by and if (enabled). Also assert if the methods where this isn't feasible are called altough debugging hasn't been enabled. Change-Id: Ieaa3c71730042a88af2270203ea747af42ba5c58 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src/qml/debugger/qqmlprofilerservice_p.h')
-rw-r--r--src/qml/debugger/qqmlprofilerservice_p.h52
1 files changed, 23 insertions, 29 deletions
diff --git a/src/qml/debugger/qqmlprofilerservice_p.h b/src/qml/debugger/qqmlprofilerservice_p.h
index 94eed961ef..e9a58b41ec 100644
--- a/src/qml/debugger/qqmlprofilerservice_p.h
+++ b/src/qml/debugger/qqmlprofilerservice_p.h
@@ -54,12 +54,15 @@
//
#include <private/qqmldebugservice_p.h>
-#include <QtQml/qtqmlglobal.h>
+#include "qqmlexpression.h"
+
#include <QtCore/qelapsedtimer.h>
+#include <QtCore/qmetaobject.h>
#include <QtCore/qmutex.h>
#include <QtCore/qvector.h>
#include <QtCore/qstringbuilder.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -198,36 +201,26 @@ struct QQmlBindingProfiler {
};
struct QQmlHandlingSignalProfiler {
- QQmlHandlingSignalProfiler()
+ QQmlHandlingSignalProfiler(const QMetaMethod &signal, QQmlExpression *expression)
{
enabled = QQmlProfilerService::instance
? QQmlProfilerService::instance->profilingEnabled() : false;
if (enabled) {
- QQmlProfilerService::instance->startRange(
- QQmlProfilerService::HandlingSignal);
+ QQmlProfilerService *service = QQmlProfilerService::instance;
+ service->startRange(QQmlProfilerService::HandlingSignal);
+ service->rangeData(QQmlProfilerService::HandlingSignal,
+ QLatin1String(signal.signature()) + QLatin1String(": ")
+ + expression->expression());
+ service->rangeLocation(QQmlProfilerService::HandlingSignal,
+ expression->sourceFile(), expression->lineNumber(),
+ expression->columnNumber());
}
}
- void setSignalInfo(const QString &name, const QString &expression)
- {
- if (enabled)
- QQmlProfilerService::instance->rangeData(
- QQmlProfilerService::HandlingSignal,
- name % QLatin1String(": ") % expression);
- }
-
- void setLocation(const QString &file, int line, int column)
- {
- if (enabled)
- QQmlProfilerService::instance->rangeLocation(
- QQmlProfilerService::HandlingSignal, file, line, column);
- }
-
~QQmlHandlingSignalProfiler()
{
if (enabled)
- QQmlProfilerService::instance->endRange(
- QQmlProfilerService::HandlingSignal);
+ QQmlProfilerService::instance->endRange(QQmlProfilerService::HandlingSignal);
}
bool enabled;
@@ -236,22 +229,23 @@ struct QQmlHandlingSignalProfiler {
struct QQmlObjectCreatingProfiler {
QQmlObjectCreatingProfiler()
{
- QQmlProfilerService *instance = QQmlProfilerService::instance;
- enabled = instance ?
- instance->profilingEnabled() : false;
- if (enabled)
- instance->startRange(QQmlProfilerService::Creating);
+ enabled = QQmlProfilerService::instance
+ ? QQmlProfilerService::instance->profilingEnabled() : false;
+ if (enabled) {
+ QQmlProfilerService *service = QQmlProfilerService::instance;
+ service->startRange(QQmlProfilerService::Creating);
+ }
}
void setTypeName(const QString &typeName)
{
- if (enabled)
- QQmlProfilerService::instance->rangeData(
- QQmlProfilerService::Creating, typeName);
+ Q_ASSERT_X(enabled, Q_FUNC_INFO, "method called although profiler is not enabled.");
+ QQmlProfilerService::instance->rangeData(QQmlProfilerService::Creating, typeName);
}
void setLocation(const QUrl &url, int line, int column)
{
+ Q_ASSERT_X(enabled, Q_FUNC_INFO, "method called although profiler is not enabled.");
if (enabled)
QQmlProfilerService::instance->rangeLocation(
QQmlProfilerService::Creating, url, line, column);