diff options
author | Ulf Hermann <ulf.hermann@digia.com> | 2014-05-07 11:21:40 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-09 13:20:46 +0200 |
commit | cabc944f0e7070fa8834999d88e7d82d62e428a8 (patch) | |
tree | ad13f8f52ad08d9fa0e341f1ba7c34102d264749 /src/qml | |
parent | c43c387b86bd308ae01ddb5088f2309eaac132ed (diff) |
Remove V8 profiler service
It's broken and useless and it sends confusing data to the profiler
client.
Task-number: QTCREATORBUG-12188
Change-Id: I944cf19a78ee4378d5773e7aa80876f199a0f03b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/debugger/debugger.pri | 2 | ||||
-rw-r--r-- | src/qml/debugger/qqmldebugserver.cpp | 1 | ||||
-rw-r--r-- | src/qml/debugger/qv4profilerservice.cpp | 310 | ||||
-rw-r--r-- | src/qml/debugger/qv4profilerservice_p.h | 115 | ||||
-rw-r--r-- | src/qml/qml/qqmlengine.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 1 |
6 files changed, 0 insertions, 431 deletions
diff --git a/src/qml/debugger/debugger.pri b/src/qml/debugger/debugger.pri index 5f3aec1c9a..2545c7836d 100644 --- a/src/qml/debugger/debugger.pri +++ b/src/qml/debugger/debugger.pri @@ -3,7 +3,6 @@ SOURCES += \ $$PWD/qqmlprofilerservice.cpp \ $$PWD/qqmldebugserver.cpp \ $$PWD/qqmlinspectorservice.cpp \ - $$PWD/qv4profilerservice.cpp \ $$PWD/qqmlenginedebugservice.cpp \ $$PWD/qdebugmessageservice.cpp \ $$PWD/qv4debugservice.cpp \ @@ -22,7 +21,6 @@ HEADERS += \ $$PWD/qqmldebugstatesdelegate_p.h \ $$PWD/qqmlinspectorservice_p.h \ $$PWD/qqmlinspectorinterface_p.h \ - $$PWD/qv4profilerservice_p.h \ $$PWD/qqmlenginedebugservice_p.h \ $$PWD/qqmldebug.h \ $$PWD/qdebugmessageservice_p.h \ diff --git a/src/qml/debugger/qqmldebugserver.cpp b/src/qml/debugger/qqmldebugserver.cpp index b1eb130ee8..0a99030897 100644 --- a/src/qml/debugger/qqmldebugserver.cpp +++ b/src/qml/debugger/qqmldebugserver.cpp @@ -44,7 +44,6 @@ #include "qqmldebugservice_p_p.h" #include "qqmlenginedebugservice_p.h" #include "qv4debugservice_p.h" -#include "qv4profilerservice_p.h" #include "qdebugmessageservice_p.h" #include "qqmlprofilerservice_p.h" diff --git a/src/qml/debugger/qv4profilerservice.cpp b/src/qml/debugger/qv4profilerservice.cpp deleted file mode 100644 index d8f69aecd9..0000000000 --- a/src/qml/debugger/qv4profilerservice.cpp +++ /dev/null @@ -1,310 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtQml module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qv4profilerservice_p.h" -#include "qqmlconfigurabledebugservice_p_p.h" - -#include <QtCore/QHash> -#include <QtCore/QMutex> -#include <QtCore/QWaitCondition> - -QT_BEGIN_NAMESPACE - -Q_GLOBAL_STATIC(QV4ProfilerService, v4ProfilerInstance) - -#if 0 -// ### FIXME: v4 -class DebugServiceOutputStream : public v8::OutputStream -{ -public: - DebugServiceOutputStream() - : v8::OutputStream() {} - void EndOfStream() {} - WriteResult WriteAsciiChunk(char *rawData, int size) - { - QByteArray data; - QQmlDebugStream ds(&data, QIODevice::WriteOnly); - ds << QV4ProfilerService::V4SnapshotChunk << QByteArray(rawData, size); - messages.append(data); - return kContinue; - } - QList<QByteArray> messages; -}; -#endif - -// convert to a QByteArray that can be sent to the debug client -QByteArray QV4ProfilerData::toByteArray() const -{ - QByteArray data; - //### using QDataStream is relatively expensive - QQmlDebugStream ds(&data, QIODevice::WriteOnly); - ds << messageType << filename << functionname << lineNumber << totalTime << selfTime << treeLevel; - - return data; -} - -class QV4ProfilerServicePrivate : public QQmlConfigurableDebugServicePrivate -{ - Q_DECLARE_PUBLIC(QV4ProfilerService) - -public: - QV4ProfilerServicePrivate() - :initialized(false) - { - } - - // ### FIXME: v4 -// void takeSnapshot(v8::HeapSnapshot::Type); -// void printProfileTree(const v8::CpuProfileNode *node, int level = 0); -// void sendMessages(); - - QList<QV4ProfilerData> m_data; - - bool initialized; - QList<QString> m_ongoing; -}; - -QV4ProfilerService::QV4ProfilerService(QObject *parent) - : QQmlConfigurableDebugService(*(new QV4ProfilerServicePrivate()), QStringLiteral("V8Profiler"), 1, parent) -{ -} - -QV4ProfilerService::~QV4ProfilerService() -{ -} - -QV4ProfilerService *QV4ProfilerService::instance() -{ - return v4ProfilerInstance(); -} - -void QV4ProfilerService::stateAboutToBeChanged(QQmlDebugService::State newState) -{ - Q_D(QV4ProfilerService); - QMutexLocker lock(configMutex()); - - if (state() == newState) - return; - - if (state() == Enabled) { - foreach (const QString &title, d->m_ongoing) { - QMetaObject::invokeMethod(this, "stopProfiling", Qt::BlockingQueuedConnection, - Q_ARG(QString, title)); - } - QMetaObject::invokeMethod(this, "sendProfilingData", Qt::BlockingQueuedConnection); - } -} - -void QV4ProfilerService::messageReceived(const QByteArray &message) -{ - Q_D(QV4ProfilerService); - - QQmlDebugStream ds(message); - QByteArray command; - QByteArray option; - QByteArray title; - ds >> command >> option; - - QMutexLocker lock(configMutex()); - - if (command == "V8PROFILER") { - ds >> title; - QString titleStr = QString::fromUtf8(title); - if (option == "start") { - QMetaObject::invokeMethod(this, "startProfiling", Qt::QueuedConnection, Q_ARG(QString, titleStr)); - } else if (option == "stop" && d->initialized) { - QMetaObject::invokeMethod(this, "stopProfiling", Qt::QueuedConnection, Q_ARG(QString, titleStr)); - QMetaObject::invokeMethod(this, "sendProfilingData", Qt::QueuedConnection); - } - d->initialized = true; - } - - if (command == "V8SNAPSHOT") { - if (option == "full") - QMetaObject::invokeMethod(this, "takeSnapshot", Qt::QueuedConnection); - else if (option == "delete") { - QMetaObject::invokeMethod(this, "deleteSnapshots", Qt::QueuedConnection); - } - } - - // wake up constructor in blocking mode - stopWaiting(); - - QQmlDebugService::messageReceived(message); -} - -void QV4ProfilerService::startProfiling(const QString &title) -{ - Q_D(QV4ProfilerService); - // Start Profiling - - if (d->m_ongoing.contains(title)) - return; - -// v8::Handle<v8::String> v8title = v8::String::New(reinterpret_cast<const uint16_t*>(title.data()), title.size()); - // ### FIXME: v4 -// v8::CpuProfiler::StartProfiling(v8title); - - d->m_ongoing.append(title); - - // indicate profiling started - QByteArray data; - QQmlDebugStream ds(&data, QIODevice::WriteOnly); - ds << (int)QV4ProfilerService::V4Started; - - sendMessage(data); -} - -void QV4ProfilerService::stopProfiling(const QString &title) -{ - Q_D(QV4ProfilerService); - // Stop profiling - - if (!d->m_ongoing.contains(title)) - return; - d->m_ongoing.removeOne(title); - -#if 0 - // ### FIXME: v4 - v8::HandleScope handle_scope; - v8::Handle<v8::String> v8title = v8::String::New(reinterpret_cast<const uint16_t*>(title.data()), title.size()); - const v8::CpuProfile *cpuProfile = v8::CpuProfiler::StopProfiling(v8title); - if (cpuProfile) { - // can happen at start - const v8::CpuProfileNode *rootNode = cpuProfile->GetTopDownRoot(); - d->printProfileTree(rootNode); - } else { -#endif - // indicate completion, even without data - QByteArray data; - QQmlDebugStream ds(&data, QIODevice::WriteOnly); - ds << (int)QV4ProfilerService::V4Complete; - - sendMessage(data); -#if 0 - } -#endif -} - -void QV4ProfilerService::takeSnapshot() -{ -// Q_D(QV4ProfilerService); - // ### FIXME: v4 -// d->takeSnapshot(v8::HeapSnapshot::kFull); -} - -void QV4ProfilerService::deleteSnapshots() -{ - // ### FIXME: v4 -// v8::HeapProfiler::DeleteAllSnapshots(); -} - -void QV4ProfilerService::sendProfilingData() -{ -// Q_D(QV4ProfilerService); - // Send messages to client - // ### FIXME: v4 -// d->sendMessages(); -} - -#if 0 -// ### FIXME: v4 -void QV4ProfilerServicePrivate::printProfileTree(const v8::CpuProfileNode *node, int level) -{ - for (int index = 0 ; index < node->GetChildrenCount() ; index++) { - const v8::CpuProfileNode* childNode = node->GetChild(index); - QString scriptResourceName = QJSConverter::toString(childNode->GetScriptResourceName()); - if (scriptResourceName.length() > 0) { - - QV4ProfilerData rd = {(int)QV4ProfilerService::V4Entry, scriptResourceName, - QJSConverter::toString(childNode->GetFunctionName()), - childNode->GetLineNumber(), childNode->GetTotalTime(), childNode->GetSelfTime(), level}; - m_data.append(rd); - - // different nodes might have common children: fix at client side - if (childNode->GetChildrenCount() > 0) { - printProfileTree(childNode, level+1); - } - } - } -} - -void QV4ProfilerServicePrivate::takeSnapshot(v8::HeapSnapshot::Type snapshotType) -{ - Q_Q(QV4ProfilerService); - - v8::HandleScope scope; - v8::Handle<v8::String> title = v8::String::New(""); - - DebugServiceOutputStream outputStream; - const v8::HeapSnapshot *snapshot = v8::HeapProfiler::TakeSnapshot(title, snapshotType); - snapshot->Serialize(&outputStream, v8::HeapSnapshot::kJSON); - QList<QByteArray> messages = outputStream.messages; - - //indicate completion - QByteArray data; - QQmlDebugStream ds(&data, QIODevice::WriteOnly); - ds << (int)QV4ProfilerService::V4SnapshotComplete; - messages.append(data); - - q->sendMessages(messages); -} - -void QV4ProfilerServicePrivate::sendMessages() -{ - Q_Q(QV4ProfilerService); - - QList<QByteArray> messages; - for (int i = 0; i < m_data.count(); ++i) - messages.append(m_data.at(i).toByteArray()); - m_data.clear(); - - //indicate completion - QByteArray data; - QQmlDebugStream ds(&data, QIODevice::WriteOnly); - ds << (int)QV4ProfilerService::V4Complete; - messages.append(data); - - q->sendMessages(messages); -} -#endif - -QT_END_NAMESPACE diff --git a/src/qml/debugger/qv4profilerservice_p.h b/src/qml/debugger/qv4profilerservice_p.h deleted file mode 100644 index b1a58dae03..0000000000 --- a/src/qml/debugger/qv4profilerservice_p.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtQml module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QV4PROFILERSERVICE_P_H -#define QV4PROFILERSERVICE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <private/qqmlconfigurabledebugservice_p.h> - -QT_BEGIN_NAMESPACE - - -struct Q_AUTOTEST_EXPORT QV4ProfilerData -{ - int messageType; - QString filename; - QString functionname; - int lineNumber; - double totalTime; - double selfTime; - int treeLevel; - - QByteArray toByteArray() const; -}; - -class QQmlEngine; -class QV4ProfilerServicePrivate; - -class Q_AUTOTEST_EXPORT QV4ProfilerService : public QQmlConfigurableDebugService -{ - Q_OBJECT -public: - enum MessageType { - V4Entry, - V4Complete, - V4SnapshotChunk, - V4SnapshotComplete, - V4Started, - - V4MaximumMessage - }; - - QV4ProfilerService(QObject *parent = 0); - ~QV4ProfilerService(); - - static QV4ProfilerService *instance(); - -public Q_SLOTS: - void startProfiling(const QString &title); - void stopProfiling(const QString &title); - void takeSnapshot(); - void deleteSnapshots(); - - void sendProfilingData(); - -protected: - void stateAboutToBeChanged(State state); - void messageReceived(const QByteArray &); - -private: - Q_DISABLE_COPY(QV4ProfilerService) - Q_DECLARE_PRIVATE(QV4ProfilerService) -}; - -QT_END_NAMESPACE - -#endif // QV4PROFILERSERVICE_P_H diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index d378d77bb0..610bbcfe1e 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -69,7 +69,6 @@ #include <private/qqmlenginecontrolservice_p.h> #include "qqmlincubator.h" #include "qqmlabstracturlinterceptor.h" -#include <private/qv4profilerservice_p.h> #include <private/qqmlboundsignal_p.h> #include <QtCore/qstandardpaths.h> @@ -823,7 +822,6 @@ void QQmlEnginePrivate::init() isDebugging = true; QQmlEngineDebugService::instance(); QV4DebugService::instance(); - QV4ProfilerService::instance(); QQmlProfilerService::instance(); QDebugMessageService::instance(); QQmlEngineControlService::instance(); diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 5e0e68472d..0bb77d8077 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -48,7 +48,6 @@ #include <private/qqmllocale_p.h> #include <private/qv8engine_p.h> -#include <private/qv4profilerservice_p.h> #include <private/qqmlprofilerservice_p.h> #include <private/qqmlglobal_p.h> |