diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-07-27 16:04:24 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-09-15 15:25:21 +0000 |
commit | 0c955153454ab66fe9eedf189359b5c5ca307a2f (patch) | |
tree | 78d3f0bb96294bd91a6ea41e01a84089220ae1af /src/plugins/qmltooling/qmldbg_profiler | |
parent | 79adf5e2da6a22c908620f67a894be92c02c886d (diff) |
Actively translate feature flags between QML and V4 profilers
Relying on the enums to be equal is somewhat dangerous.
Change-Id: I0d5ebd37a2310b8916e521f7261bbf88786e712f
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmltooling/qmldbg_profiler')
-rw-r--r-- | src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp | 27 | ||||
-rw-r--r-- | src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h | 10 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp index 24e01f4c68..bb069bea25 100644 --- a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp +++ b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp @@ -41,8 +41,12 @@ QV4ProfilerAdapter::QV4ProfilerAdapter(QQmlProfilerService *service, QV4::Execut { engine->enableProfiler(); connect(this, SIGNAL(profilingEnabled(quint64)), - engine->profiler, SLOT(startProfiling(quint64))); + this, SLOT(forwardEnabled(quint64))); connect(this, SIGNAL(profilingEnabledWhileWaiting(quint64)), + this, SLOT(forwardEnabledWhileWaiting(quint64)), Qt::DirectConnection); + connect(this, SIGNAL(v4ProfilingEnabled(quint64)), + engine->profiler, SLOT(startProfiling(quint64))); + connect(this, SIGNAL(v4ProfilingEnabledWhileWaiting(quint64)), engine->profiler, SLOT(startProfiling(quint64)), Qt::DirectConnection); connect(this, SIGNAL(profilingDisabled()), engine->profiler, SLOT(stopProfiling())); connect(this, SIGNAL(profilingDisabledWhileWaiting()), engine->profiler, SLOT(stopProfiling()), @@ -150,4 +154,25 @@ void QV4ProfilerAdapter::receiveData( service->dataReady(this); } +quint64 QV4ProfilerAdapter::translateFeatures(quint64 qmlFeatures) +{ + quint64 v4Features = 0; + const quint64 one = 1; + if (qmlFeatures & (one << ProfileJavaScript)) + v4Features |= (one << QV4::Profiling::FeatureFunctionCall); + if (qmlFeatures & (one << ProfileMemory)) + v4Features |= (one << QV4::Profiling::FeatureMemoryAllocation); + return v4Features; +} + +void QV4ProfilerAdapter::forwardEnabled(quint64 features) +{ + emit v4ProfilingEnabled(translateFeatures(features)); +} + +void QV4ProfilerAdapter::forwardEnabledWhileWaiting(quint64 features) +{ + emit v4ProfilingEnabledWhileWaiting(translateFeatures(features)); +} + QT_END_NAMESPACE diff --git a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h index cea3da72e3..92122bed64 100644 --- a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h +++ b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h @@ -62,10 +62,18 @@ public: virtual qint64 sendMessages(qint64 until, QList<QByteArray> &messages); +signals: + void v4ProfilingEnabled(quint64 v4Features); + void v4ProfilingEnabledWhileWaiting(quint64 v4Features); + public slots: void receiveData(const QVector<QV4::Profiling::FunctionCallProperties> &, const QVector<QV4::Profiling::MemoryAllocationProperties> &); +private slots: + void forwardEnabled(quint64 features); + void forwardEnabledWhileWaiting(quint64 features); + private: QVector<QV4::Profiling::FunctionCallProperties> data; QVector<QV4::Profiling::MemoryAllocationProperties> memory_data; @@ -74,6 +82,8 @@ private: QStack<qint64> stack; qint64 appendMemoryEvents(qint64 until, QList<QByteArray> &messages); qint64 finalizeMessages(qint64 until, QList<QByteArray> &messages, qint64 callNext); + + static quint64 translateFeatures(quint64 qmlFeatures); }; QT_END_NAMESPACE |