Skip to content

Commit

Permalink
Debugger: Always disable v4 optimizer if v8 debugger is activated
Browse files Browse the repository at this point in the history
Don't rely on QML_DISABLE_OPTIMIZER environment variable being set.

Change-Id: Ib1a9d83eb9698adcd3c9a5bbcc74cba382836078
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
  • Loading branch information
Kai Koehne authored and Qt by Nokia committed Mar 19, 2012
1 parent bfedb27 commit 69835e0
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
2 changes: 2 additions & 0 deletions src/qml/debugger/qv8debugservice.cpp
Expand Up @@ -42,6 +42,7 @@
#include "qv8debugservice_p.h"
#include "qqmldebugservice_p_p.h"
#include <private/qjsconverter_impl_p.h>
#include <private/qv4compiler_p.h>
#include <private/qv8engine_p.h>

#include <QtCore/QHash>
Expand Down Expand Up @@ -192,6 +193,7 @@ void QV8DebugService::init()
Q_D(QV8DebugService);
v8::Debug::SetMessageHandler2(DebugMessageHandler);
v8::Debug::SetDebugMessageDispatchHandler(DebugMessageDispatchHandler);
QV4Compiler::enableV4(false);
d->initializeMutex.unlock();
}

Expand Down
Expand Up @@ -47,7 +47,9 @@ Item {
Component.onCompleted: {
//Comment

var b = 6;
var x = 6;
}

width : height + 2
}

24 changes: 21 additions & 3 deletions tests/auto/qml/debugger/qqmldebugjs/tst_qqmldebugjs.cpp
Expand Up @@ -191,6 +191,7 @@ private slots:
void setBreakpointInScriptInDifferentFile();
void setBreakpointInScriptOnComment();
void setBreakpointInScriptOnEmptyLine();
void setBreakpointInScriptOnOptimizedBinding();
void setBreakpointInScriptWithCondition();
//void setBreakpointInFunction(); //NOT SUPPORTED
void setBreakpointOnEvent();
Expand Down Expand Up @@ -1019,9 +1020,6 @@ bool tst_QQmlDebugJS::init(const QString &qmlFile, bool blockMode)
process = new QQmlDebugProcess(QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmlscene");
client = new QJSDebugClient(connection);

QStringList systemEnvironment = QProcess::systemEnvironment();
systemEnvironment << "QML_DISABLE_OPTIMIZER=1";
process->setEnvironment(systemEnvironment);
if (blockMode)
process->start(QStringList() << QLatin1String(BLOCKMODE) << testFile(qmlFile));
else
Expand Down Expand Up @@ -1295,6 +1293,26 @@ void tst_QQmlDebugJS::setBreakpointInScriptOnEmptyLine()
QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(BREAKPOINTRELOCATION_QMLFILE));
}

void tst_QQmlDebugJS::setBreakpointInScriptOnOptimizedBinding()
{
//void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1)

int sourceLine = 52;
QVERIFY(init(BREAKPOINTRELOCATION_QMLFILE));

client->setBreakpoint(QLatin1String(SCRIPTREGEXP), QLatin1String(BREAKPOINTRELOCATION_QMLFILE), sourceLine, -1, true);
client->connect();
QVERIFY(QQmlDebugTest::waitForSignal(client, SIGNAL(stopped())));

QString jsonString(client->response);
QVariantMap value = client->parser.call(QJSValueList() << QJSValue(jsonString)).toVariant().toMap();

QVariantMap body = value.value("body").toMap();

QCOMPARE(body.value("sourceLine").toInt(), sourceLine);
QCOMPARE(QFileInfo(body.value("script").toMap().value("name").toString()).fileName(), QLatin1String(BREAKPOINTRELOCATION_QMLFILE));
}

void tst_QQmlDebugJS::setBreakpointInScriptWithCondition()
{
//void setBreakpoint(QString type, QString target, int line = -1, int column = -1, bool enabled = false, QString condition = QString(), int ignoreCount = -1)
Expand Down

0 comments on commit 69835e0

Please sign in to comment.