QV8DebugService: v8::AfterCompile Events
authorAurindam Jana <aurindam.jana@nokia.com>
Tue, 17 Apr 2012 09:00:18 +0000 (11:00 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 17 Apr 2012 09:10:04 +0000 (11:10 +0200)
Do not send v8::AfterCompile events. This speeds up the
debugger.

Change-Id: I84f5d90e24878af42d514e5d26c9e051502605f6
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
src/qml/debugger/qv8debugservice.cpp
src/qml/debugger/qv8debugservice_p.h
tests/auto/qml/debugger/qqmldebugjs/data/test.qml
tests/auto/qml/debugger/qqmldebugjs/tst_qqmldebugjs.cpp

index 7d54a59ac0793dcca0e14dd7d45ea769c7537c3f..f8831db6c67a78bb4dde31f030dfe7352b93f814 100644 (file)
@@ -67,7 +67,6 @@ const char *V8_DEBUGGER_KEY_DISCONNECT = "disconnect";
 const char *V8_DEBUGGER_KEY_REQUEST = "v8request";
 const char *V8_DEBUGGER_KEY_V8MESSAGE = "v8message";
 const char *V8_DEBUGGER_KEY_BREAK_ON_SIGNAL = "breakonsignal";
-const char *V8_DEBUGGER_KEY_BREAK_AFTER_COMPILE = "breakaftercompile";
 
 QT_BEGIN_NAMESPACE
 
@@ -92,10 +91,15 @@ void DebugMessageHandler(const v8::Debug::Message& message)
 {
     v8::DebugEvent event = message.GetEvent();
 
-    if (event != v8::Break && event != v8::Exception &&
-            event != v8::AfterCompile && event != v8::BeforeCompile)
+    if (message.IsEvent()) {
+        if (event == v8::AfterCompile || event == v8::BeforeCompile)
             return;
-    v8ServiceInstancePtr->debugMessageHandler(QJSConverter::toString(message.GetJSON()), event);
+    } else if (event != v8::Break && event != v8::Exception &&
+               event != v8::AfterCompile && event != v8::BeforeCompile) {
+        return;
+    }
+
+    v8ServiceInstancePtr->debugMessageHandler(QJSConverter::toString(message.GetJSON()));
 }
 
 class QV8DebugServicePrivate : public QQmlDebugServicePrivate
@@ -103,7 +107,6 @@ class QV8DebugServicePrivate : public QQmlDebugServicePrivate
 public:
     QV8DebugServicePrivate()
         : connectReceived(false)
-        , breakAfterCompile(false)
         , engine(0)
     {
     }
@@ -113,7 +116,6 @@ public:
     static QByteArray packMessage(const QString &type, const QString &message = QString());
 
     bool connectReceived;
-    bool breakAfterCompile;
     QMutex initializeMutex;
     QStringList breakOnSignals;
     const QV8Engine *engine;
@@ -160,12 +162,9 @@ void QV8DebugService::setEngine(const QV8Engine *engine)
     d->engine = engine;
 }
 
-void QV8DebugService::debugMessageHandler(const QString &message, const v8::DebugEvent &event)
+void QV8DebugService::debugMessageHandler(const QString &message)
 {
-    Q_D(QV8DebugService);
     sendMessage(QV8DebugServicePrivate::packMessage(QLatin1String(V8_DEBUGGER_KEY_V8MESSAGE), message));
-    if (event == v8::AfterCompile && d->breakAfterCompile)
-        scheduledDebugBreak(true);
 }
 
 void QV8DebugService::signalEmitted(const QString &signal)
@@ -262,11 +261,6 @@ void QV8DebugService::messageReceived(const QByteArray &message)
                 d->breakOnSignals.removeOne(signalName);
             sendMessage(QV8DebugServicePrivate::packMessage(QLatin1String(V8_DEBUGGER_KEY_BREAK_ON_SIGNAL)));
 
-        } else if (command == V8_DEBUGGER_KEY_BREAK_AFTER_COMPILE) {
-            QDataStream rs(data);
-            rs >> d->breakAfterCompile;
-            sendMessage(QV8DebugServicePrivate::packMessage(QLatin1String(V8_DEBUGGER_KEY_BREAK_AFTER_COMPILE)));
-
         }
     }
 }
index 8ff4adc778c43eb1913917959abef4f5eed0e2cf..84b300cee42d819e8dc3da8a52fdd5fe18edba35 100644 (file)
@@ -74,7 +74,7 @@ public:
     static QV8DebugService *instance();
     static void initialize(const QV8Engine *engine);
 
-    void debugMessageHandler(const QString &message, const v8::DebugEvent &event);
+    void debugMessageHandler(const QString &message);
 
     void signalEmitted(const QString &signal);
 
index 200f26b1c3f6f83dcec32f5bb7988651b961fcf8..e6c6faa912f797b97225097d6e5596df73b6bddb 100644 (file)
@@ -50,5 +50,11 @@ Item {
             var c
             var d = 12
     }
+    function foo() {
+        var a = [1, 2]
+        var b = {a: "hello", d: 1 }
+        var c
+        var d = 12
+    }
 }
 
index 8293ec6cdaab60ac28a89896e1748b9ebfb2c156..b93be16e0e844b59fdda2ac76ab2d0606ae4d97a 100644 (file)
@@ -107,7 +107,6 @@ const char *GARBAGECOLLECTOR = "gc";
 
 const char *CONNECT = "connect";
 const char *INTERRUPT = "interrupt";
-const char *BREAKAFTERCOMPILE = "breakaftercompile";
 
 const char *REQUEST = "request";
 const char *IN = "in";
@@ -173,7 +172,6 @@ private slots:
 
     void connect();
     void interrupt();
-    void breakAfterCompile();
     void getVersion();
     void getVersionWhenAttaching();
 
@@ -270,7 +268,6 @@ public:
 
     void connect();
     void interrupt();
-    void breakAfterCompile(bool enabled);
 
     void continueDebugging(StepAction stepAction, int stepCount = 1);
     void evaluate(QString expr, bool global = false, bool disableBreak = false, int frame = -1, const QVariantMap &addContext = QVariantMap());
@@ -301,7 +298,6 @@ signals:
     void enabled();
     void connected();
     void interruptRequested();
-    void breakAfterCompileRequested();
     void result();
     void stopped();
     void scriptsResult();
@@ -334,14 +330,6 @@ void QJSDebugClient::interrupt()
     sendMessage(packMessage(INTERRUPT));
 }
 
-void QJSDebugClient::breakAfterCompile(bool enabled)
-{
-    QByteArray request;
-    QDataStream rs(&request, QIODevice::WriteOnly);
-    rs << enabled;
-    sendMessage(packMessage(BREAKAFTERCOMPILE, request));
-}
-
 void QJSDebugClient::continueDebugging(StepAction action, int count)
 {
     //    { "seq"       : <number>,
@@ -957,9 +945,6 @@ void QJSDebugClient::messageReceived(const QByteArray &data)
                     emit stopped();
                 }
 
-        } else if (type == BREAKAFTERCOMPILE) {
-            emit breakAfterCompileRequested();
-
         }
     }
 }
@@ -1074,18 +1059,6 @@ void tst_QQmlDebugJS::interrupt()
     QVERIFY(QQmlDebugTest::waitForSignal(client, SIGNAL(interruptRequested())));
 }
 
-void tst_QQmlDebugJS::breakAfterCompile()
-{
-    //void breakAfterCompile(bool enabled)
-
-    QVERIFY(init());
-    client->breakAfterCompile(true);
-    client->connect();
-
-    QVERIFY(QQmlDebugTest::waitForSignal(client, SIGNAL(breakAfterCompileRequested())));
-    QVERIFY(QQmlDebugTest::waitForSignal(client, SIGNAL(stopped())));
-}
-
 void tst_QQmlDebugJS::getVersion()
 {
     //void version()
@@ -1146,9 +1119,9 @@ void tst_QQmlDebugJS::listBreakpoints()
 {
     //void listBreakpoints()
 
-    int sourceLine1 = 47;
-    int sourceLine2 = 48;
-    int sourceLine3 = 49;
+    int sourceLine1 = 53;
+    int sourceLine2 = 54;
+    int sourceLine3 = 55;
 
     QVERIFY(init());
     client->connect();