aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Get rid of most QT_NO_FOO usagesLars Knoll2016-11-29105-565/+550
| | | | | | | | Instead use QT_CONFIG(foo). This change actually detected a few mis-spelled macros and invalid usages. Change-Id: I06ac327098dd1a458e6bc379d637b8e2dac52f85 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.7' into 5.8" into refs/staging/5.8Liang Qi2016-11-2825-133/+297
|\
| * Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-2825-133/+297
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The renderers added in 5.8 had to be adapted to the changed profiling macros from 5.6. Conflicts: src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp src/quick/util/qquickprofiler_p.h tests/auto/qml/qjsengine/tst_qjsengine.cpp tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp Change-Id: Icb370b7c95aab12589ad73881ac6d178759a5c6b
| | * Merge remote-tracking branch 'origin/5.6' into 5.75.7Liang Qi2016-11-2521-108/+249
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/qml/v8/qqmlbuiltinfunctions.cpp src/quick/util/qquickprofiler_p.h Change-Id: I11a89c2a166115d6697adfba09928805643e709e
| | | * Doc: fix incorrect syntax in "Code-Behind Implementation Resource"Mitch Curtis2016-11-251-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ie86302f12d4ad65ff46335a1ea248bbb4c5559f3 Task-number: QTBUG-56008 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| | | * QmlProfiler: Explicitly specify the offsets for scene graph eventsUlf Hermann2016-11-249-82/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The profiler can be switched on in the middle of a frame. In that case the last offset into the timing data would be some random number, which may lead to a crash when recording the sample. However, as we know all the data points we are going to record, we can as well specify where they are supposed to go. The timings themselves may still be random for frames of which we only recorded parts, but the clients can deal with this. Task-number: QTBUG-57304 Change-Id: I1d507f2591516e43d5b3cd25f7939716f2b64ed9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | | * V4: Fix JIT codegen for null/undefined conditional jumpsErik Verbruggen2016-11-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When checking for undefined, both the tag and the value need to be checked. When loading the tag, it shouldn't end up in the same register that is used to hold the address of the QV4::Value. Change-Id: I380fce432ba489fdabe569dd2c9cac31e9905260 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | | * Improved robustness of the optimizer when removing expressionsSimon Hausmann2016-11-221-9/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For example during dead code elimination we may invalidate statements, but at the same time there may still be instances left in the work list of optimizeSSA(). When we encounter then, we should not process them any further. Task-number: QTBUG-56255 Change-Id: I4c24b1a225ce1bde112172e9606f91c426c19f19 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| | | * Text: Make use of the new cached isSmoothlyScaled attribute on QFontEngineRobin Burchell2016-11-181-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Relies on qtbase/f2205c48c21a6b135f2f59d0cf46e72f90f9f0f4. Asking QFontDatabase whether or not the font can be smoothly scaled is expensive Now that the attribute is available on QFontEngine, we can bypass all that. Benchmark results from qmlbench on creation/delegates_text on a 2011 mbp. Before: Average: 173.2 ops/frame; using 5/5 samples; MedianAll=173; StdDev=1.94, CoV=0.0112 - StdDev (all samples included)=1.94 After: Average: 180.8 ops/frame; using 5/5 samples; MedianAll=182; StdDev=1.94, CoV=0.0107 - StdDev (all samples included)=1.94 Change-Id: I56efd903037a29ee014de0cbf482cfbef7fce494 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | | * Fix binding re-evaluation when list model properties changeSimon Hausmann2016-11-184-3/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a regression from commit 4876ea6a18ccdfd72014582aa5d50ab9f6b6ec9e, which avoided returning an expensive QObject when calling get() but also lost the ability to perform binding captures when accessing the properties. This change restores the captures by performing them by hand in get() and also triggering the notifiers directly when the values change, without creating the QObject. Task-number: QTBUG-52356 Change-Id: Ia429ffafd4032b63d3e592aa63bb0864a24e0965 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | | * Doc: fix incorrect argument name for createQmlObject()Mitch Curtis2016-11-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | "string" is the argument type, not its name. Change-Id: Ia8f1afe01363eb6bfa69247aca5c0849c56000c4 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
| | | * Fix reading of enum properties from gadgetsSimon Hausmann2016-11-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QMetaProperty::type() maps an un-registered enum to QMetaType::Int, and so if a property cache is created for a gadget with enum properties, then their type will be int and we'll correctly read enum properties as ints in JavaScript. However if the enum is registered at the time we create the cache, then the property type will be the specific type and not QMetaType::Int. The property reading code in QV4::QObjectWrapper can deal with that, but the property reading code in the gadget value type wrapper code did not. [ChangeLog][Qt][Qml] Fix reading of enum properties from gadgets / value types when the enum was registered with qRegisterMetaType(). Change-Id: I7812b216a276dcc95c36e313507e1a1142250d0b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| | | * Doc: improve FolderListModel::rootFolder documentationMitch Curtis2016-11-151-3/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: I33ca6140d89041f89f0e3db9db7206aca50361d7 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
| | | * QML: Check for failing realloc/malloc in the QmlJS memory poolErik Verbruggen2016-11-151-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should make (properly functioning) static code checkers stop complaining. Task-number: QTBUG-57025 Change-Id: Ic7e6f1b0b02f2e9324dbc891ab4620d53d9f9a18 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | D3D12: Output error messagesFriedemann Kleint2016-11-281-23/+49
|/ / / | | | | | | | | | | | | | | | | | | Format error messages via struct _com_error. Change-Id: Ice755597ec56a106e9fc5ac0288b69d9411a6ea8 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | Cleanup of builtin JS helpers for qmljsSimon Hausmann2016-11-262-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the hand-written gc and print functions with the print and gc functions also used in Qml and QJSEngine. And while we're at it, this also adds the console object. Change-Id: Ia3a0ff24936b7ed5149cb689838b987f9178131e Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | D3D12: Fix RESOURCE_BARRIER_BEFORE_AFTER_MISMATCHLaszlo Agocs2016-11-251-1/+4
| | | | | | | | | | | | | | | | | | Change-Id: I531d53c81d5ab19bba22f883bc802ecc8d02590d Task-number: QTBUG-57234 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | V4: check for exceptions after convertThisToObjectErik Verbruggen2016-11-243-11/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | The method_convertThisToObject method was invalidly tagged as not needing exception checks. As a side-effect method_pushCatchScope and method_popScope are now correctly tagged with a NoThrowEngine. Change-Id: I11d987e62136216a29eadcbd641546311030058f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Fix OS platform label documentationMaurice Kalinowski2016-11-241-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-49033 Change-Id: I2e8157f8d2b40299799cbf31b424060ff89ab75a Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | | Fix support for QML declared default list propertiesSimon Hausmann2016-11-235-1073/+1130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The grammar was not permitting to write default property list<Item> myChildren; and instead developers had to work around it with an alias property list<Item> myChildrenData; default property alias myChildren: myChildrenData which is not nice. Fortunately this is easy to fix in the grammar. Task-number: QTBUG-10822 Change-Id: I4e914ddb9588913da09e9fb6c6aa154cf8a9e18f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix up QML grammar fileSimon Hausmann2016-11-231-14/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 45bd04ba73bd3e71c070e5724535ba87f6771323 changed the embedded license headers to the $LGPL tag but accidentally removed the header that is embedded in the output. In addition there have been changes to the generated code that were not reflected in the .g file. With these changes the qlalr output matches the files that are checked in. Change-Id: I693e20cf5237098425ba79182089d213179e6dfa Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix handling of qrc:/// urls with disk cachingSimon Hausmann2016-11-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the right function for converting a qrc:/// url to a local path. QUrl::toLocalFile() gives us an empty path, which prevents us from getting a time stamp and comparing it against the stamp in the cache file. This fixes disk caching with samegame. Change-Id: Id3eb270f1f7a7f25143d2f075a45f32bdb0384c5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Move rebuildGeometry() functions of nodesFriedemann Kleint2016-11-229-99/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move QSGDefaultImageNode::rebuildGeometry(), QSGDefaultNinePatchNode::rebuildGeometry() to QSGImageNode::rebuildGeometry(), QSGNinePatchNode::rebuildGeometry() respectively. This makes it possible to use then from the D3D12 plugin when built without OpenGL support. Task-number: QTBUG-57185 Change-Id: Ib88c5622f7048618151a63d7536d76296a25842e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | 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>
* | | QSGDistanceFieldUtil: Make use of the newly added QRawFont qHash functionRobin Burchell2016-11-182-25/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Relies on qtbase/094b64fb605b39d1ae88d91d2b9a0672b9ff4780. This was previously responsible for around 1.1% of CPU samples when profiling text creation & rendering under qmlbench. Change-Id: I287067b994231a39881ba8208ad3b802233c7486 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | | QSGRendererInterface: Add Resource suffix for consistencyLaszlo Agocs2016-11-184-12/+12
| | | | | | | | | | | | | | | Change-Id: I60e674760725d4c4dd13f53b31c3abb6b09c1790 Reviewed-by: Simon Hausmann <simon.hausmann@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-159-17/+21
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-159-11/+33
| |\| | | | | | | | | | | | | | | | | | | | | | 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>
| | * Fix QtQuickTest::mouseMove not having timestampsFrederik Gladhorn2016-11-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | af002b8df9b084fd7f26e9eead9844aab36bdc4d added timestamps to press and release events. It did not add the timestamp to move events though. When using the quick test functionality to send events to flickable, this leads to great confusion since the move events will be from a completely different time than the release, in which case flickable responds with "you waited a long time before releasing, I think you didn't want to flick". Adding the timestamp also to move events is consistent and makes tests in qtlocation happy. Change-Id: I33653c435eff5b62eeaf5a03653d917b7acc4fed Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
| | * Fix more cases where DSE would optimize out too many storesErik Verbruggen2016-11-102-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC5/6 do aggressive dead store elimination on memory passed to placement-new. This resulted in the Heap::Object::prototype being a nullptr. qml.pro already contained the -fno-lifetime-dse flag, but there are other places where we ask the memory manager to allocate data. This is temporary band-aid, and is already fixed in 5.8. Change-Id: Ia61a69f65fab351068a588cfc36b5b3d762ffc9f Task-number: QTBUG-56932 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Add checking "before" as child nodeInhye Seo2016-11-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qquickitem_before_paintNode returns the transform node for the rectangle as child node. But the node has no parent. It leads to following assertion case at QSGNode::insertChildNodeAfter(). But, I tested it in release mode, so no assertion happened. So, Some node not be able to add group node from this cause. Task-number: QTBUG-56657 Change-Id: Ie032dc6c56984bcb58cfcd348ff532f56e39e5b8 Reviewed-by: Inhye Seo <inhye.seo@lge.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | * Fix crash when using custom OpenGL functionsJesus Fernandez2016-11-071-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | The code was using the ::glGetString function and this could fail if we are using a custom platform plugin. Change-Id: Idb9ccd178ea52255b9d6f0f6d3fd529094c15292 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | * QV4String: properly detect overflow when trying to convert to an array indexGiuseppe D'Angelo2016-11-042-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| | * Doc: replace "textEdit" with "TextEdit" in lineCount documentationMitch Curtis2016-10-311-1/+1
| | | | | | | | | | | | | | | Change-Id: I24a186af0538027719beb464c2b489825ddd9420 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
| | * Fix crash when trying to allocate in a filled atlas textureJohn Brooks2016-10-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Atlas::create returns null when allocating space in the atlas texture fails, including when the texture is full. Manager::create assumed that this function would never fail. Change-Id: I2ed8a1b94640d6a3cc65011e83b88f8bd42ca074 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * | Fix performance regression in rich text with imagesEskil Abrahamsen Blomfeldt2016-11-141-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a3da23d5a92ab0f9b8280b9ed591986f8ac6a2d6 we added linear filtering to the image node in rich text when smooth was set to true (which it is by default). But we also enabled mipmapping, which caused a bad performance regression when updating the text item. If we want to support mipmapping, we would have to add a separate property for this like in the image node, but since the original bug report only called for supporting smooth scaling like in Image, we can simply revert part of the change. [ChangeLog][QtQuick][Text] Fixed a performance regression when rendering a rich text item with scaled images. Task-number: QTBUG-54723 Change-Id: Ib930112b76f0fe0b2e658f86520a9290354b8f6f Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| * | TextEdit: set cursor delegate's height to match the selected fontMitch Curtis2016-11-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RichText can have blocks of text with varying font sizes, so we must ensure that the cursor delegate's height is also set when it's moved to a different position in the text. Change-Id: I00691a94a2360c7d3272571fc4ba0da28b01006a Task-number: QTBUG-54934 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * | Doc: replace "the empty string" with "an empty string" in TestCase docsMitch Curtis2016-11-101-3/+3
| | | | | | | | | | | | | | | Change-Id: Idcc23782f2ed382914a74740ad9f2984d7a98f78 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | Fix flow text objects in beginning of RTL blockEskil Abrahamsen Blomfeldt2016-11-142-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the block is right-to-left and starts with a text object, it should be aligned to the right edge of the QTextLine instead of the left one. [ChangeLog][QtQuick][Text] Fixed placement of flowing text objects in the start of a right-to-left block. Task-number: QTBUG-43133 Change-Id: Id790e88f3464280f124c38b4260386b84cac8826 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>
* | | Quick: Do not calculate the difference in a geometryChangeErik Verbruggen2016-11-109-32/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This difference is only used by the ListView, so calculating it and storing it (on the stack) introduces a penalty for all items. As the new geometry is already applied, the old geometry is passed along. This has the added advantage that the ListView does not have to re-calculate that either. This fixes a performance regression. Change-Id: Id5e67bb663a5b11a55ec15ff24ca5b213d1fcef5 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | | Change implementation of shadow nodes to use a double-linked listGunnar Sletta2016-11-102-46/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since eea8fa64ab27854b71f46ef143e35b6c9acbba14, we're seeing increased times in QSGNode::removeChildNode(). The reason for this seems to be that iteration through the linked list is significantly slower than iteration through a QList<> due to that each node needs to be loaded in memory to iterate to the next, compared a more plain sequential pointer compare with QList<>. This implementation changes the nodes to use a circular double-linked list so we can drop the iteration when removing nodes. This brings us slightly better performance than the original QList based implementation while still using the same amount of memory as the single-linked list one. Change-Id: I0b693730f5b82ad7767e507accafd90551e03fbc Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Update Window plugins.qmltypesMarco Benelli2016-11-091-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some signals (ie onClosing) as marked as error by QtCreator because they are registered with version 1 or 2, while QQuick is exported only as version 0. Exporting version 1 or 2 of QQuickWindow seems to cause some conflicts with QQuickWindowImpl. So the plugins.qmltypes has been manually updated. Task-number: QTBUG-47917 Change-Id: I2ddacfbf0564d8ecfbaadc0323011dbd18439c36 Reviewed-by: Erik Verbruggen <erik.verbruggen@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>
* | | Quick: Hint that a reparent action will most probably work fineErik Verbruggen2016-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | When assigning an item a new parent item, a check is done if it is already part of the children tree below that parent. This is an unlikely case, so hint the compiler that it can optimize the loop that way. Change-Id: Ic9f1810aa4b83d84be88f0049e61d21c4add7767 Reviewed-by: Simon Hausmann <simon.hausmann@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>
* | | Quick: Only take a copy of changeListeners when there are someErik Verbruggen2016-11-081-64/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the case where there are no change listeners, there is no need to do an ref() operation (which involves atomic loads) only to find out that it's an empty vector (!isSharable). Better still: the whole loop start-up can be skipped. Change-Id: I94fd22029a321a5dbef571145007071a54f5b04b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Quick: Move counters out of a bitfield in QQuickitemErik Verbruggen2016-11-082-71/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Storing the anchor-loop-detection counters in a bitfield has the disadvantage that the full field has to be read and masked in order to use (increment) them. The same for the subsequent store. By putting them in their own byte, this can be done a lot faster. Those bytes were available, because they were needed for padding. By making them signed, there is also no need for the compiler to insert overflow handling. Change-Id: I3c250983c74de2ecfd33fe72ea8df04e24b8cd0c Reviewed-by: Lars Knoll <lars.knoll@qt.io>