aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger/qqmlprofilerservice_p.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2013-12-16 16:19:56 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-21 15:57:46 +0100
commitd5f5b3f87dc376b237c81d150a8d36cbb525e12e (patch)
tree448aa5be35d75dad5a0278d17e609174ac9955a4 /src/qml/debugger/qqmlprofilerservice_p.h
parent24c43a5748b850203dd4711de43b92122e0f6cd5 (diff)
Retrieve detailed location information when profiling signal handlers
Use the Functions associated with signal handlers to find out which exact code is being executed. Task-number: QTCREATORBUG-11100 Change-Id: Idfae9d188b17977b55f551e6fe766042fe24e786 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/debugger/qqmlprofilerservice_p.h')
-rw-r--r--src/qml/debugger/qqmlprofilerservice_p.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/qml/debugger/qqmlprofilerservice_p.h b/src/qml/debugger/qqmlprofilerservice_p.h
index 86807eacec..32b88e3ec3 100644
--- a/src/qml/debugger/qqmlprofilerservice_p.h
+++ b/src/qml/debugger/qqmlprofilerservice_p.h
@@ -55,6 +55,7 @@
#include <private/qqmldebugservice_p.h>
#include <private/qqmlboundsignal_p.h>
+#include <private/qv4function_p.h>
#include <QtCore/qelapsedtimer.h>
#include <QtCore/qmetaobject.h>
@@ -254,10 +255,20 @@ struct QQmlHandlingSignalProfiler {
QQmlHandlingSignalProfiler(QQmlBoundSignalExpression *expression)
{
if (QQmlProfilerService::enabled) {
- QQmlProfilerService::instance->startRange(QQmlProfilerService::HandlingSignal);
- QQmlProfilerService::instance->rangeLocation(QQmlProfilerService::HandlingSignal,
- expression->sourceFile(), expression->lineNumber(),
- expression->columnNumber());
+ QQmlProfilerService *service = QQmlProfilerService::instance;
+ service->startRange(QQmlProfilerService::HandlingSignal);
+ if (expression->sourceFile().isEmpty()) {
+ QV4::Function *function = expression->function();
+ if (function) {
+ service->rangeLocation(QQmlProfilerService::HandlingSignal,
+ function->sourceFile(), function->compiledFunction->location.line,
+ function->compiledFunction->location.column);
+ }
+ } else {
+ service->rangeLocation(QQmlProfilerService::HandlingSignal,
+ expression->sourceFile(), expression->lineNumber(),
+ expression->columnNumber());
+ }
}
}