From da54d7f1a6f44a32c062094baf9ed1cb7156348d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 4 Dec 2013 15:34:07 +0100 Subject: QQmlInstructionData: fix warning 'code' {is,might be} used uninit'ed This is a compile-error for -release -developer-build builds. Change-Id: I7ea5363260ce35a013fbf6d1c538c763023a8dc0 Reviewed-by: Simon Hausmann Reviewed-by: Lars Knoll --- src/qml/qml/qqmlinstruction_p.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/qml/qml') diff --git a/src/qml/qml/qqmlinstruction_p.h b/src/qml/qml/qqmlinstruction_p.h index bda8c3db0d..8b27cf06dd 100644 --- a/src/qml/qml/qqmlinstruction_p.h +++ b/src/qml/qml/qqmlinstruction_p.h @@ -151,8 +151,10 @@ QT_BEGIN_NAMESPACE #ifdef QML_THREADED_VME_INTERPRETER # define QML_INSTR_HEADER void *code; +# define QML_INSTR_HEADER_INIT this->code = 0; #else # define QML_INSTR_HEADER quint8 instructionType; +# define QML_INSTR_HEADER_INIT this->instructionType = 0; #endif #define QML_INSTR_ENUM(I, FMT) I, @@ -547,6 +549,8 @@ FOR_EACH_QML_INSTR(QML_INSTR_META_TEMPLATE); template class QQmlInstructionData : public QQmlInstructionMeta::DataType { +public: + QQmlInstructionData() : QQmlInstructionMeta::DataType() { QML_INSTR_HEADER_INIT } }; QT_END_NAMESPACE -- cgit v1.2.3 From 1b53fb1b6f00fe6bef787d385dddc48d52b090c6 Mon Sep 17 00:00:00 2001 From: Daniel Pesch Date: Mon, 20 Jan 2014 18:37:32 +0100 Subject: qmplugindump is not able to dump all registered components This patch implements a new function QQmlMetaType::qmlAllTypes() used by qmlplugindump that returns list of all registered components. Previous implementation used QQmlMetaType::qmlATypes() call that returned only components with defined QML name. Task-number: QTBUG-36199 Change-Id: I85acba61cfa511973a004934cf0650f38cc46ed9 Signed-off-by: Daniel Pesch Reviewed-by: Fawzi Mohamed --- src/qml/qml/qqmlmetatype.cpp | 11 +++++++++++ src/qml/qml/qqmlmetatype_p.h | 1 + 2 files changed, 12 insertions(+) (limited to 'src/qml/qml') diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp index ed0c0afd6f..37f26a236f 100644 --- a/src/qml/qml/qqmlmetatype.cpp +++ b/src/qml/qml/qqmlmetatype.cpp @@ -1835,6 +1835,17 @@ QList QQmlMetaType::qmlTypes() return data->nameToType.values(); } +/*! + Returns the list of all registered types. +*/ +QList QQmlMetaType::qmlAllTypes() +{ + QReadLocker lock(metaTypeDataLock()); + QQmlMetaTypeData *data = metaTypeData(); + + return data->types; +} + /*! Returns the list of registered QML singleton types. */ diff --git a/src/qml/qml/qqmlmetatype_p.h b/src/qml/qml/qqmlmetatype_p.h index 2f473f5f46..64f7702b64 100644 --- a/src/qml/qml/qqmlmetatype_p.h +++ b/src/qml/qml/qqmlmetatype_p.h @@ -80,6 +80,7 @@ public: static QList qmlTypeNames(); static QList qmlTypes(); static QList qmlSingletonTypes(); + static QList qmlAllTypes(); static QQmlType *qmlType(const QString &qualifiedName, int, int); static QQmlType *qmlType(const QHashedStringRef &name, const QHashedStringRef &module, int, int); -- cgit v1.2.3 From d5f5b3f87dc376b237c81d150a8d36cbb525e12e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 16 Dec 2013 16:19:56 +0100 Subject: Retrieve detailed location information when profiling signal handlers Use the Functions associated with signal handlers to find out which exact code is being executed. Task-number: QTCREATORBUG-11100 Change-Id: Idfae9d188b17977b55f551e6fe766042fe24e786 Reviewed-by: Simon Hausmann --- src/qml/qml/qqmlboundsignal.cpp | 11 +++++++++++ src/qml/qml/qqmlboundsignal_p.h | 1 + 2 files changed, 12 insertions(+) (limited to 'src/qml/qml') diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 68160edf5e..bc56fe1f2d 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -136,6 +136,17 @@ QString QQmlBoundSignalExpression::expression() const } } +QV4::Function *QQmlBoundSignalExpression::function() const +{ + if (m_expressionFunctionValid) { + Q_ASSERT (context() && engine()); + QV4::Scope scope(QQmlEnginePrivate::get(engine())->v4engine()); + QV4::Scoped v(scope, m_v8function.value()); + return v ? v->function : 0; + } + return 0; +} + // Parts of this function mirror code in QQmlExpressionPrivate::value() and v8value(). // Changes made here may need to be made there and vice versa. void QQmlBoundSignalExpression::evaluate(void **a) diff --git a/src/qml/qml/qqmlboundsignal_p.h b/src/qml/qml/qqmlboundsignal_p.h index feb79d5484..fe0dbd380e 100644 --- a/src/qml/qml/qqmlboundsignal_p.h +++ b/src/qml/qml/qqmlboundsignal_p.h @@ -90,6 +90,7 @@ public: quint16 lineNumber() const { return m_line; } quint16 columnNumber() const { return m_column; } QString expression() const; + QV4::Function *function() const; QObject *target() const { return m_target; } QQmlEngine *engine() const { return context() ? context()->engine : 0; } -- cgit v1.2.3 From 4cf8a6ad7189991ff6852f4096fa8673ffa98bf0 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 16 Dec 2013 15:30:22 +0100 Subject: Parse source location for signal handling functions Previously the source location of signal handlers was always line 0 and column 0. This poses problems when trying to extract meaningful profiling information. The change assigns the source location of the statement declaring the function as the function's source location. Task-number: QTCREATORBUG-11100 Change-Id: I4bb8682b35147a7cfe4ecec342d4a00623bb1e0d Reviewed-by: Simon Hausmann --- src/qml/qml/qqmlcompiler.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/qml/qml') diff --git a/src/qml/qml/qqmlcompiler.cpp b/src/qml/qml/qqmlcompiler.cpp index 3dd9d6a14d..71e803a4c8 100644 --- a/src/qml/qml/qqmlcompiler.cpp +++ b/src/qml/qml/qqmlcompiler.cpp @@ -1681,6 +1681,7 @@ static AST::FunctionDeclaration *convertSignalHandlerExpressionToFunctionDeclara AST::FunctionBody *body = new (pool) AST::FunctionBody(elements); AST::FunctionDeclaration *functionDeclaration = new (pool) AST::FunctionDeclaration(jsEngine->newStringRef(signalName), paramList, body); + functionDeclaration->functionToken = statement->firstSourceLocation(); return functionDeclaration; } -- cgit v1.2.3 From 9262f8f1d66c44bd48080a1ecf961d5e28f455eb Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 22 Jan 2014 12:38:31 +0100 Subject: Fix compile error with clang 3.4 Change-Id: Iaf43f0527142bb5615e8c97bb1a80faf7b8b2e00 Reviewed-by: Simon Hausmann --- src/qml/qml/qqmlmetatype.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/qml/qml') diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp index 37f26a236f..d1ab50c4af 100644 --- a/src/qml/qml/qqmlmetatype.cpp +++ b/src/qml/qml/qqmlmetatype.cpp @@ -664,7 +664,7 @@ void QQmlTypePrivate::insertEnums(const QMetaObject *metaObject) const { // Add any enum values defined by 'related' classes if (metaObject->d.relatedMetaObjects) { - const QMetaObject **related = metaObject->d.relatedMetaObjects; + const QMetaObject * const *related = metaObject->d.relatedMetaObjects; if (related) { while (*related) insertEnums(*related++); -- cgit v1.2.3