diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-03 13:41:13 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-08-04 07:08:02 +0000 |
commit | be70a025c19bfbfadcab957df7b1185109f5e88e (patch) | |
tree | 103bfd243bd7bd786214bac7a2d7f41fda243284 /src/qml/qml | |
parent | 40aa22e0fd8234a7a71abf0ef8f42524d306e0df (diff) |
Don't store the current line number in the ExecutionContext
Instead modify our StackFrame struct to hold the
QV4::Function and have a linked list of those for
the frames.
Change-Id: I8676e16bc51a5ba6cf25a5b3423576d44e8a926a
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 58 |
2 files changed, 31 insertions, 31 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index ce47ab9fa9..bca7391ffc 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -472,13 +472,13 @@ bool QQmlValueTypeWrapper::put(Managed *m, String *name, const Value &value) if (auto binding = QQmlPropertyPrivate::binding(referenceObject, QQmlPropertyIndex(referencePropertyIndex, pd->coreIndex()))) { Q_ASSERT(!binding->isValueTypeProxy()); const auto qmlBinding = static_cast<const QQmlBinding*>(binding); - const auto stackFrame = v4->currentStackFrame(); + const auto stackFrame = v4->currentStackFrame; qCInfo(lcBindingRemoval, "Overwriting binding on %s::%s which was initially bound at %s by setting \"%s\" at %s:%d", referenceObject->metaObject()->className(), referenceObject->metaObject()->property(referencePropertyIndex).name(), qPrintable(qmlBinding->expressionIdentifier()), metaObject->property(pd->coreIndex()).name(), - qPrintable(stackFrame.source), stackFrame.line); + qPrintable(stackFrame->source()), stackFrame->line); } } QQmlPropertyPrivate::removeBinding(referenceObject, QQmlPropertyIndex(referencePropertyIndex, pd->coreIndex())); diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 9d8498f6ed..8fc048b5f3 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -1326,8 +1326,8 @@ void Heap::QQmlBindingFunction::init(const QV4::FunctionObject *originalFunction QQmlSourceLocation QQmlBindingFunction::currentLocation() const { - QV4::StackFrame frame = engine()->currentStackFrame(); - return QQmlSourceLocation(frame.source, frame.line, 0); + QV4::StackFrame *frame = engine()->currentStackFrame; + return QQmlSourceLocation(frame->source(), frame->line, 0); } DEFINE_OBJECT_VTABLE(QQmlBindingFunction); @@ -1475,13 +1475,13 @@ static QString jsStack(QV4::ExecutionEngine *engine) { QString stackFrame; if (frame.column >= 0) - stackFrame = QStringLiteral("%1 (%2:%3:%4)").arg(frame.function, - frame.source, + stackFrame = QStringLiteral("%1 (%2:%3:%4)").arg(frame.function(), + frame.source(), QString::number(frame.line), QString::number(frame.column)); else - stackFrame = QStringLiteral("%1 (%2:%3)").arg(frame.function, - frame.source, + stackFrame = QStringLiteral("%1 (%2:%3)").arg(frame.function(), + frame.source(), QString::number(frame.line)); if (i) @@ -1530,10 +1530,10 @@ static void writeToConsole(const BuiltinFunction *, Scope &scope, CallData *call if (!loggingCategory) loggingCategory = v4->qmlEngine() ? &qmlLoggingCategory : &jsLoggingCategory; - QV4::StackFrame frame = v4->currentStackFrame(); - const QByteArray baSource = frame.source.toUtf8(); - const QByteArray baFunction = frame.function.toUtf8(); - QMessageLogger logger(baSource.constData(), frame.line, baFunction.constData(), loggingCategory->categoryName()); + QV4::StackFrame *frame = v4->currentStackFrame; + const QByteArray baSource = frame->source().toUtf8(); + const QByteArray baFunction = frame->function().toUtf8(); + QMessageLogger logger(baSource.constData(), frame->line, baFunction.constData(), loggingCategory->categoryName()); switch (logType) { case Log: @@ -1583,10 +1583,10 @@ void ConsoleObject::method_profile(const BuiltinFunction *, Scope &scope, CallDa { QV4::ExecutionEngine *v4 = scope.engine; - QV4::StackFrame frame = v4->currentStackFrame(); - const QByteArray baSource = frame.source.toUtf8(); - const QByteArray baFunction = frame.function.toUtf8(); - QMessageLogger logger(baSource.constData(), frame.line, baFunction.constData()); + QV4::StackFrame *frame = v4->currentStackFrame; + const QByteArray baSource = frame->source().toUtf8(); + const QByteArray baFunction = frame->function().toUtf8(); + QMessageLogger logger(baSource.constData(), frame->line, baFunction.constData()); QQmlProfilerService *service = QQmlDebugConnector::service<QQmlProfilerService>(); if (!service) { logger.warning("Cannot start profiling because debug service is disabled. Start with -qmljsdebugger=port:XXXXX."); @@ -1602,10 +1602,10 @@ void ConsoleObject::method_profileEnd(const BuiltinFunction *, Scope &scope, Cal { QV4::ExecutionEngine *v4 = scope.engine; - QV4::StackFrame frame = v4->currentStackFrame(); - const QByteArray baSource = frame.source.toUtf8(); - const QByteArray baFunction = frame.function.toUtf8(); - QMessageLogger logger(baSource.constData(), frame.line, baFunction.constData()); + QV4::StackFrame *frame = v4->currentStackFrame; + const QByteArray baSource = frame->source().toUtf8(); + const QByteArray baFunction = frame->function().toUtf8(); + QMessageLogger logger(baSource.constData(), frame->line, baFunction.constData()); QQmlProfilerService *service = QQmlDebugConnector::service<QQmlProfilerService>(); if (!service) { @@ -1656,15 +1656,15 @@ void ConsoleObject::method_count(const BuiltinFunction *, Scope &scope, CallData QV4::ExecutionEngine *v4 = scope.engine; QV8Engine *v8engine = scope.engine->v8Engine; - QV4::StackFrame frame = v4->currentStackFrame(); + QV4::StackFrame *frame = v4->currentStackFrame; - QString scriptName = frame.source; + QString scriptName = frame->source(); - int value = v8engine->consoleCountHelper(scriptName, frame.line, frame.column); + int value = v8engine->consoleCountHelper(scriptName, frame->line, frame->column); QString message = name + QLatin1String(": ") + QString::number(value); - QMessageLogger(qPrintable(scriptName), frame.line, - qPrintable(frame.function)) + QMessageLogger(qPrintable(scriptName), frame->line, + qPrintable(frame->function())) .debug("%s", qPrintable(message)); scope.result = QV4::Encode::undefined(); @@ -1679,9 +1679,9 @@ void ConsoleObject::method_trace(const BuiltinFunction *, Scope &scope, CallData QString stack = jsStack(v4); - QV4::StackFrame frame = v4->currentStackFrame(); - QMessageLogger(frame.source.toUtf8().constData(), frame.line, - frame.function.toUtf8().constData()) + QV4::StackFrame *frame = v4->currentStackFrame; + QMessageLogger(frame->source().toUtf8().constData(), frame->line, + frame->function().toUtf8().constData()) .debug("%s", qPrintable(stack)); scope.result = QV4::Encode::undefined(); @@ -1710,9 +1710,9 @@ void ConsoleObject::method_assert(const BuiltinFunction *, Scope &scope, CallDat QString stack = jsStack(v4); - QV4::StackFrame frame = v4->currentStackFrame(); - QMessageLogger(frame.source.toUtf8().constData(), frame.line, - frame.function.toUtf8().constData()) + QV4::StackFrame *frame = v4->currentStackFrame; + QMessageLogger(frame->source().toUtf8().constData(), frame->line, + frame->function().toUtf8().constData()) .critical("%s\n%s",qPrintable(message), qPrintable(stack)); } |