aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2014-05-07 11:21:40 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-09 13:20:46 +0200
commitcabc944f0e7070fa8834999d88e7d82d62e428a8 (patch)
treead13f8f52ad08d9fa0e341f1ba7c34102d264749 /src
parentc43c387b86bd308ae01ddb5088f2309eaac132ed (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')
-rw-r--r--src/qml/debugger/debugger.pri2
-rw-r--r--src/qml/debugger/qqmldebugserver.cpp1
-rw-r--r--src/qml/debugger/qv4profilerservice.cpp310
-rw-r--r--src/qml/debugger/qv4profilerservice_p.h115
-rw-r--r--src/qml/qml/qqmlengine.cpp2
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp1
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>