aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
Commit message (Collapse)AuthorAgeFilesLines
* QmlDebug: Allow specifying debug connectors on the command lineUlf Hermann2016-11-241-0/+10
| | | | | | | | | | With this change arbitrary debug connector plugins can be loaded by specifying them in the "-qmljsdebugger=..." argument. It was already possible to load them by using startDebugConnector(...), but that requires source code modification. Change-Id: I06ec7f54ec65add7cff2846ed4083ea878a04765 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QmlDebug: Add more information about available debug servicesUlf Hermann2016-11-232-1/+14
| | | | | | | | There is a native debug service that can be used with a native debuger and the QML profiler can make use of the debug messages service. Change-Id: Ie1b2b148e7555d980e03a18c97ec725748c473c7 Reviewed-by: hjk <hjk@qt.io>
* Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-11-238-7/+24
|\ | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4object_p.h Change-Id: Iff4d3aba7710a999b8befdc493cbe959e1ce02f9
| * Add a missing break statementLars Knoll2016-11-221-0/+1
| | | | | | | | | | | | | | | | Converting a constant to null or undefined shouldn't happen in practice, but it still shouldn't run into the Q_UNIMPLEMENTED. Change-Id: I994a55defd7f4e29628732a8a9071bc785a80ee2 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * QML: Add another specialization for QQmlPropertyCache::propertyErik Verbruggen2016-11-162-0/+9
| | | | | | | | | | | | | | | | | | QQmlListReference passes a QLatin1String in, which can behandled by the stringCache just fine. So if there is a cache entry, then this will skip toQString conversion. Change-Id: I13afe4f6e63d486b313ac58cbd86fb7f9e1a80f6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Merge remote-tracking branch 'origin/5.7' into 5.8Simon Hausmann2016-11-152-2/+3
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4string.cpp The conflict resolution for qv4tsring.cpp is to essentially omit the change of commit 64714ea431f2fd355ed27edc69dba4e992511e75 as the code in 5.8 already uses the add/mul_overflow functions. This merge also reverts commit f4ac007f4a19bc095ff15d415a6629986de78e49 as we can deal with dead store elimination now. Change-Id: Iee08c87cbe1a2ff23a73ce621d56262b4e007c56
| | * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-11-152-5/+11
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qmldevtools/qmldevtools.pro tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp Change-Id: I12255c16716bd8a74e7047cdb1f9302a4d1ea827
| | | * Setting Connection's target to null should disconnect implicit targetMichael Brasser2016-11-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Id7c8c7080e6db8bb6d09c1df13cddaef047cf611 Task-number: QTBUG-56499 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| | | * QV4String: properly detect overflow when trying to convert to an array indexGiuseppe D'Angelo2016-11-041-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A wrong overflow detection caused strings like "240000000000" to pass the conversion, even though they would not fit into a uint when converted into base-10. This mis-conversion to uint then caused all sorts of side effects (broken comparisons, wrong listing of properties, and so on). So, properly fix the overflow detection by using our numeric private functions. Change-Id: Icbf67ac68cf5785d6c77b433c7a45aed5285a8c2 Task-number: QTBUG-56830 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | Work around -Wtautological-compare warnings on clang 3.6Lars Knoll2016-11-111-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Same workaround as for gcc 6.0 Change-Id: I6137b226c05ddc287bea7230d1f546c5fcf8371f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | V4: Replace memset by a for loopErik Verbruggen2016-11-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC would often generate a call to a special "safe" version of memset, which would in turn prevent inlining in many cases. A simple for loop does not prevent inlining, and compilers can still decide to replace it with a memset. It also makes it easier for the compiler to do dead store elimination. Change-Id: I60fa3e321c2edb9225699bf57e8a31a3f8356ddc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | qv4object_p.h: Replace QtPrivate::is_same by std::is_sameFriedemann Kleint2016-11-091-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-57007 Change-Id: I05cabe53e7993cd63498334e95917fe6c3077ab6 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | | | QQmlPropertyCache: adapt qQmlPropertyCacheCreateAnton Kudryavtsev2016-11-221-9/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... to make good use of QL1S Change-Id: I7c3ac1cefb30bee9baa31a3f8ec08f5f57eb5d5b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | | Introduce qmlRegisterModule()J-P Nurmi2016-11-184-7/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is particularly useful for keeping the versions of related modules in sync. For example, when QtQuick.Controls introduces new types or revisions and bumps up the minor version, qmlRegisterModule() can be used to make the same version available for QtQuick.Controls.Styles in case it doesn't have new types or revisions to register. [ChangeLog][QtQml] Introduced qmlRegisterModule() that can be used to make a certain module version available, even if no types or revisions are registered for that version. Change-Id: I5ec457465cd778bb0adda55771d195f69cd4b31a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | QmlTooling: Move native debug service into own pluginUlf Hermann2016-11-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QV4DebugService and QQmlNativeDebugService cannot coexist at the same time. Thus, there is no point in putting them into one plugin. Change-Id: Ic042f7472fce23d504c62ccf96756b0f1bd68534 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | Qml: add missing 'override'Jake Petroules2016-11-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and drop redundant 'virtual' Change-Id: I2a57685e342208d7ef1f13f97a56cb3ff7a31422 Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | | Add ECMAScript 6 Array find and findIndex methodsKai Uwe Broulik2016-11-103-0/+80
| | | | | | | | | | | | | | | | | | | | Change-Id: I318fa243ab68b8a714923ab816d62e8c544fca8c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | QQmlProperty: use new QQmlPropertyCache::property() with QStringRef argAnton Kudryavtsev2016-11-081-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Recude memory allocations. Change-Id: I259e47e3c47a562817d1b9585a89c9f8a00260c0 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | QQmlPropertyCache: add property() overload with QStringRef argAnton Kudryavtsev2016-11-082-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now we can pass 'name' arg as QStringRef. Client code can reduce allocations. Change-Id: I444f7135f4912f54d57e0a1193f330a3976fc186 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | | Use std::is_same instead of Qt's implementationGiuseppe D'Angelo2016-11-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation for the removal of Qt's own type traits. Change-Id: Ie97b6a62b2e3f5e5c59b5175ef05cf8c342746db Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | Merge remote-tracking branch 'origin/5.8' into devJ-P Nurmi2016-11-037-12/+47
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tools/qmljs/qmljs.cpp Change-Id: Ifa9e74bdb780eaff22fbc9ba1c514d0078a3fb29
| * | | Merge remote-tracking branch 'origin/5.7' into 5.8v5.8.0-beta1Liang Qi2016-10-272-6/+3
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/quick/qquicktextedit/BLACKLIST Change-Id: I0b9e5bea5da5d2666887c202e62d889b4aa56900
| | * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-276-23/+44
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickwindow.cpp tests/auto/quick/qquicktext/BLACKLIST tests/auto/quick/qquicktextedit/BLACKLIST Change-Id: I8bd68b0b5e853b7908791d2cbddd18dd527c76ae
| | | * Fix QML Compiler crashSimon Hausmann2016-10-251-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After commit 2afb54fb51091765f79548b0b057795bc3c6eb38, Primitive::undefinedValue() uses setM() to clear out all bits. Previously that code was #ifndef'ed out for the bootstrap build, but now that we can do the correct boxing in host builds (as we know the pointer size), we can re-enable setM() in bootstrap builds and fix this crash that was a Q_UNREACHABLE() assertion. Change-Id: I49036792c06c9a17272aba65261ab8f32beb2ad8 Task-number: QTBUG-56658 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | | * Fix docs about ownership when QObject has a parentSérgio Martins2016-10-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you return a QObject with parent from a Q_INVOKABLE it *does* get QQmlEngine::JavaScriptOwnership. It just doesn't get deleted by JavaScript (until you unset it's parent). Change-Id: Id56debe06253ea1dd31dee844f5047d4ac055024 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Change Import::type from quint8 to LEUInt32James McDonnell2016-10-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Import::type used to be a quint32. The switch from quint32 to quint8 changed the alignment of other structures in the compiled blob. On QNX, the alignment isn't appropriate for some of the instructions that the compiler uses to access/modify the structures and a BUS error occurs. Changing Import::type to LEUInt32 puts the alignment back the way it was before. Simpler than trying to figure out how to get everything aligned correctly with a quint8 at the front of the structure. Task-number: QTBUG-56341 Change-Id: Ia6f4daff5f615f9c5dbcc34ce8c3c9a89bab2b69 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | QML: Hint LTO to never inline QQmlPropertyCache::resolveErik Verbruggen2016-10-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... so the fast-path doesn't get bogged down by accidental slow-path inlining. Change-Id: Ifb3eadf5e96b5a61f41fb1f0d32269e43f13be57 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | Fix crash when loop peeling and basic block mergingSimon Hausmann2016-10-251-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When trying to merge the second (original) loop header block of a peeled loop, we would end up with dangling references to that block from the loop body blocks. There's no trivial way to find all these quickly from the header, so for now don't merge these blocks into the predecessor. Change-Id: I2b5e39c5596ffd8c21ca9871af3a8150a019f2a8 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | Add the ability to explicitly enable the code cache in qmljsSimon Hausmann2016-10-232-2/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also requires mapping the label pointers in the byte code back to the instruction enum. Fortunately this reverse mapping is only needed in the qmljs case. Normally in the QML engine we persist the byte-code to disk before linking the compilation unit to the engine (where we map the enum to goto labels). Change-Id: If0b79288274bb1031161841b63a85f164502aaec Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | QQmlImportsPrivate: remove homebrew 'greaterThan'Anton Kudryavtsev2016-10-271-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Use std::greater Change-Id: I30554cd85b05e8c6ce13402d4b318751315cd0e6 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | | Qml: mark some methods as constAnton Kudryavtsev2016-10-2410-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These methods do not modify objects. Change-Id: Iefe8effa97e6f6142308d61d57d08f9dc14a7709 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-10-2216-56/+156
|\| | | | | | | | | | | | | | | Change-Id: I171c7dbb6a74fe743c2eec63e86e9c0bef7c7dfd
| * | | Fix crash with v4 lookups on changing objectsSimon Hausmann2016-10-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When lookups are enabled for property access and the property exists, we change the type of the lookup from the generic fallback to a more specialized direct property access. When upon subsequent access the internal class has changed, we fall back to the case of two alternating classes/shapes. If during that fallback we fail to find the property altogether, then we should revert back to the overall fallback, instead of continuing with an invalid property data index. Ran into this while running the typescript compiler in V4 itself. Change-Id: If5975d6c18ff41b9fb21c40f0cbaeed37da4b489 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | Fix bootstrap and qtquick compiler buildSimon Hausmann2016-10-211-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to always include the checksum generating code, even if dummy (for the lack of the md5 code being in the bootstrap library). Change-Id: I3dd9c585a23ffea9bd7c79dbe6dae29b9f93fa6d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | QML: Create a fast-path for QV4::WeakValue::setErik Verbruggen2016-10-212-24/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | And hint the compiler (with LTO) to never inline the slow path. Change-Id: Idad15498bca457d3f1f063031ad1a08415e9b3db Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-10-201-6/+3
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickitemsmodule.cpp tests/auto/quick/rendernode/tst_rendernode.cpp Change-Id: I90582df69feb95a4e4aafb0b9793c23714654f19
| | * | Fix gcc6 buildAllan Sandfeld Jensen2016-10-161-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Complete the patch for tautological-compare warnings after it was merged form 5.6. Task-number: QTBUG-56266 Change-Id: I39f25f429b90deb8d8830fb15f45ce29a5a4c51c Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| | * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-129-28/+50
| | |\ \ | | | | | | | | | | | | | | | Change-Id: Ib31008e593442ca5813fb14ae6b02f7ab2577395
| * | | | Improve QML development experienceSimon Hausmann2016-10-182-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the cache files it is tricky to do changes to the code generator and it is easy to forget that the cache files need to be re-generated. So facilitate this, we add the sha1 checksum of the QtQml library to the checksum embedded in the cache files. This is currently only implemented on Unixy platforms and it is limited to developer builds with shared libraries. This is not intended for release builds. Change-Id: If59f31f700254f7e9c6e3384d2fae4e5396fb698 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | QML: Split two QQmlData methods into fast/slow pathsErik Verbruggen2016-10-182-10/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The common case is that the property cache and the QQmlData itself are already created. By splitting the creation off into a slow-path method, these simple methods are cheap to inline. Change-Id: I73c702b5e66f35379647946a0c431561fd87499b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | | Fix excessive invalidation of QML disk cachesSimon Hausmann2016-10-187-7/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We use an MD5 checksum over the meta-object data to verify that the types a QML file depends on haven't changed since the cache was generated. However when the dependent types are QML types, then the meta-object data contains dynamically generated type names such as QMLTYPE_1234, which is non-deterministic. To address this, we resort to the checksum over the meta-object data only for C++ types (if those change it's likely an incompatible change) and for QML types use the fact that all the information about the QML declared types comes from the QML file only, which means we can in that case simply use a checksum over the QV4::CompiledData memory chunk. In addition we need to ensure that the generated CompiledData memory chunk is deterministic by avoiding any uninitialized bytes (memset) and using a map instead of a hash for the mapping of object index to object id. Task-number: QTBUG-55926 Change-Id: I27c840b1960ad36b486198e504b70989c22a3972 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | QML: allow QObjectWrapper::init to be inlinedErik Verbruggen2016-10-182-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And also hint that wrap_slowPath should not be inlined with LTO, otherwise the fast-path wrap method will lose any advantage it has. Change-Id: I30d52fa2f64b813aaeb5c0d62f6d48ec1ba03fa1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | | QQmlMetaType: replace QString::left with QString::leftRefAnton Kudryavtsev2016-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reduce memory allocations. Change-Id: Idfa6284757524396e6154cf8150be4228e9218be Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | | | Add QQuickApplication::displayName propertyBenjamin Terrier2016-10-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick] Add Qt.application.displayName property. Task-number: QTBUG-53091 Change-Id: I810eb381ac8e6151cbc07f3f66f2e661ff3e09f4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | | | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-10-18125-984/+1533
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4variantobject.cpp src/qml/types/qquickworkerscript.cpp src/quick/scenegraph/util/qsgdefaultpainternode_p.h tools/qmljs/qmljs.cpp Change-Id: I876242714ec8c046238d8fd673a5ace2455b2b59
| * | | | Fix written time stamp in QML cache files for QRC sourcesSimon Hausmann2016-10-141-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For loading and verification we compare against the time stamp of the executable, so we should do the same thing when generating the cache data. Task-number: QTBUG-55926 Change-Id: If5922e76b8ae86185f6eacb6aeeb5c3afbc1f8d5 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | QML: Prevent unnecessary QUrl->QString->QByteArray conversionsErik Verbruggen2016-10-142-30/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QQmlMemoryProfiler is not used, do not convert the filename URL of a component to be converted from QUrl to a UTF8 char array. Change-Id: I741ec5b58678f3a25badac38f0198c9cff203eb1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | | Merge remote-tracking branch 'origin/5.6' into 5.8Simon Hausmann2016-10-1313-45/+91
| |\ \ \ \ | | | |_|/ | | |/| | | | | | | Change-Id: I175b27337b534c0b8f46a4a792d2c43cde73ffc4
| | * | | V4: Fix usage of QV4::Value tags/typesErik Verbruggen2016-10-135-17/+41
| | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | These two were mixed, but have completely different values. Task-number: QTBUG-56471 Change-Id: Ifbf6da3032335ea89bfbc3acde17f64a571b9dc0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Fix V4 on big-endianAllan Sandfeld Jensen2016-10-101-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't both invert offset position and inter-value positions of tag and value. This patch changes 32-bit big-endian to use the same order inside the tag/value but just at different offsets. This also make it compatible with how we use it with doubles. This fixes value/tag reads on 32-bit big-endian and offsets on 64-bit. Task-number: QTBUG-56271 Change-Id: I95cf792c29ac3f42a4018ce1f115193c143a0df0 (cherry picked from commit 2a658344397729450f869138bf77e063a0a6166b) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>