aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* V4 JIT: enable register allocator on Linux/ARM.Erik Verbruggen2014-02-171-2/+29
| | | | | Change-Id: Ieab86edebcc265063904e78c8c8d0014ace64199 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4 JIT: move registers for regalloc out of method.Erik Verbruggen2014-02-172-26/+40
| | | | | | | | | This is a clean-up: by moving the description of the registers available for allocation out of the run method, the method gets easier to read, and the lists are easier to extend when adding more platforms. Change-Id: I840a15cda0e02488b7e038aa23cedd23508ed736 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4 ARM JIT: make CONFIG+=disassembler work on ARM.Erik Verbruggen2014-02-171-1/+1
| | | | | Change-Id: I164813c8939849e63103c447a7f64699003d00da Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Fix reported error location for unknown type assignmentsSimon Hausmann2014-02-171-1/+1
| | | | | Change-Id: Ib564002f790921d4e233bb56d1a6ff6ef6aa6c2b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Compile time check for objects assigned to script stringsSimon Hausmann2014-02-171-0/+3
| | | | | Change-Id: I873bded73a0d2210910c496312fb3b7b04e4a65f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Fix location of id property in error messagesSimon Hausmann2014-02-171-2/+2
| | | | | Change-Id: If7cde17acb1dd63a51e2e31415533a21302d8b41 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Implement compile time error handling for listsSimon Hausmann2014-02-172-1/+31
| | | | | Change-Id: Ic26e8a01995c296ab9cd4deb8714a5cf17cfdf2b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Match class and file nameSimon Hausmann2014-02-1613-36/+36
| | | | | | | QmlObjectCreator -> QQmlObjectCreator Change-Id: I23da2d9c7fa0dcd760f5cc695c1759b44d1e72f0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Cleanup object creator membersSimon Hausmann2014-02-163-91/+91
| | | | | | | | Collect variables shared across recursive instances in a SharedData structure, get rid of some other members. Change-Id: I8d52fbb34820ce17d754b91c3fdee9e534a95753 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* [new compiler] Fix test with aggressive gcSimon Hausmann2014-02-161-0/+5
| | | | | | | | We need a scope object protector right after creating the JS wrapper, which is right after creating the VME meta object. Change-Id: I76668027486a44bab35a3193b4c1c6fbab5c3e0e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Reduce memory usage for object literals with integral keysSimon Hausmann2014-02-162-2/+9
| | | | | | | | | | | | Be more aggressive about using sparse arrays for object literals than for regular array handling, to reduce the memory usage in this use case. The current heuristic is that indices over 0x1000 switch to sparse, which means a simple { "3000" : "test" } creates a long vector instead of a sparse array. Task-number: QTBUG-36803 Change-Id: Id05c76f0f597cd016114cd27ec54effbebe26e48 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Avoid Nearest mipmap filtering for BorderImage.Gunnar Sletta2014-02-161-0/+1
| | | | | | | | | | QSGOpaqueTextureMaterial has Nearest as the default mipmap filtering, which BorderImage inherited. That default value is not ideal, but I would prefer to not change behavior, so request None from borderimage instead. Change-Id: I9857f1434ae9f067c3b0e460ea552d3e854b9d64 Reviewed-by: aavit <eirik.aavitsland@digia.com>
* Reapply 612785f39e325b0578be89e09b0e32d7d08d471e fixing GCC warningsThiago Macieira2014-02-162-1/+5
| | | | | | | | See 612785f39e325b0578be89e09b0e32d7d08d471e for details. The warning is exactly the same as before, with the exact same solution as before. Change-Id: I2f6cbc64234696f1d240611f376ab5daf8d0f89c Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add dedicated QML profiler and adapterUlf Hermann2014-02-1512-528/+611
| | | | | | | | The remaining "profiling" parts of the QML profiler service are engine specific and are best accessed through their own adapter. Change-Id: Idb763104bdd80e4dabdf132ec1a496b9bc9f6f46 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Move QtQuick profiling to own profiler adapterUlf Hermann2014-02-1516-121/+490
| | | | | | | | The QtQuick parts of the QML profiler service thus become a proper global profiler which can be independently enabled and disabled. Change-Id: Ifad03801cab2be66a264fc46fdebdae582fcc99b Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix polishItems bugFabian Bumberger2014-02-151-6/+10
| | | | | | | | | | | | updatePolish is not called for items which are not visible. However if a polish is scheduled, updatePolish has to be called when the item becomes eventually visible. This patch makes sure, that invisible items are not removed from the itemsToPolish list. Change-Id: I1ad929dc6de8e61edbd1c4df88ae5bc951979ff1 Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* V4: Do not reverse-propagate int32 conversion through unary minus.Erik Verbruggen2014-02-141-4/+29
| | | | | | | | | Conversion to int32 might truncate, and because int32 is two's complement, INT_MIN might get converted incorrectly. Change-Id: Iaf893d3bd619f4c5791654e609f96cffca5c6917 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4 IR: remove unused phi targets.Erik Verbruggen2014-02-141-0/+12
| | | | | | | | | Remove all phi nodes whose target temps have no uses. This obvious optimization was missing. Change-Id: I24354e225ba7b01a3c2a6f4b2e40dd78d6ee3d7d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4 IR: changed worklist used while doing optimizations.Erik Verbruggen2014-02-141-36/+138
| | | | | | | | | | Change the worklist in the optimizeSSA function to allow only one entry for a statement. This prevents re-processing a statement multiple times, and could lead to crashes when the statement was removed in an earlier pass. Change-Id: I2f09cf74525cfe19708ec7a8bc6d555218625e87 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Compile fix for MSVC2013Andrew Knight2014-02-141-1/+1
| | | | | | | | This fixes an inclusion error caused by eb8a091 under WinRT x64 MSVC2013. Change-Id: I3ebae0788264f4e3ccc0ae9f2bb4dbc4cceaa155 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
* V4 profiler adapterUlf Hermann2014-02-134-2/+199
| | | | | | | | This adapter attaches the V4 profiler to the QML profiling infrastructure. Change-Id: Ifaf77a3ba0790bc56d4b155260b0e05593ac799e Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Infrastructure for supporting multiple profilers in qqmlprofilerserviceUlf Hermann2014-02-137-137/+646
| | | | | | | | | The concepts of "global" and "engine" profilers are introduced. Profilers can either be attached to specific QML engines and run in their threads or they can be unspecific global profilers running in arbitrary threads. Change-Id: I3862fc65c07ccb33a1ca08cd2425e4079d3ffc02 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* [new compiler] Fix context ownership for anonymous componentsSimon Hausmann2014-02-131-1/+1
| | | | | | | | | | | | When instantiating an anonymous component, we must also set the context ownership to true. Fixes garbage collection of item view delegates, where when the destructor run, their context wasn't cleared properly and child items would re-evaluate bindings that use "parent" with null. Change-Id: I8c67c679c12ce987a0dec405571647270373881c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Satellite profiler for V4Ulf Hermann2014-02-126-6/+293
| | | | | | | | Self-contained profiler for V4. By itself it doesn't have any connections to qqmlprofilerservice. Change-Id: I471a6119e07eab9c5f4712a16835be49c8886d1a Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* V4 JIT: remove unused register constant.Erik Verbruggen2014-02-121-3/+0
| | | | | Change-Id: Ic456b680ab4ef9643a1ba85d0d62f8a116764cb0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Simon Hausmann2014-02-1228-78/+162
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-02-1128-78/+162
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/jsruntime/qv4arrayobject.cpp src/qml/jsruntime/qv4context.cpp Change-Id: Ied5b23bec4dc14abe51127c507aed668f855c1e1
| | * Warn when attaching Keys to an invalid itemFrederik Gladhorn2014-02-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using Window { Keys.onPressed: ... } does not work because window is not a QQuickItem. Warn at least. Change-Id: Ibd472f7b551ff2089cbc39ba43da27e6f8e0e97f Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| | * Fix origin for short reversed item viewsJohn Brooks2014-02-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reversed (BottomToTop and RightToLeft) item views would report an impossible positive value for origin when contentHeight < height. The correct value will be effectively equivalent to the position of the footer, and always negative. Match other logic using lastPosition() by negating its value for reversed views. This fixes a bug with content disappearing in a Controls ScrollView on a BottomToTop view. Change-Id: Ieedbb64ce8fc7c0fb36e5256e437ddeb3e757761 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | * Doc: note about visible and enabled in PropertyChangesFrederik Gladhorn2014-02-101-0/+5
| | | | | | | | | | | | | | | Change-Id: I0928737f1651fa98213a84dc4f8b5225d5239502 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| | * Fix exception thrown in slot without Qml EngineSimon Hausmann2014-02-071-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Don't crash when an exception is thrown in a JS slot but we don't have a Qml engine. Change-Id: I1530d5c1c8cb9b9b33b9fdd0d45639fd4a0516f7 Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Updated documentation for QML Locale.measurementSystemAnders Gunnarsson2014-02-071-3/+6
| | | | | | | | | | | | | | | | | | | | | Added documentation for ImperialUSSystem and ImperialUKSystem. Change-Id: I1a628121dce4a7566bd8769843c487e28f3dd6fe Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Fix scenegraph backend API for material shaders.Michael Brasser2014-02-063-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | Without this change, it is not possible to implement a custom renderer (it has no way to compile or initialize material shaders). Change-Id: Ie8778f739f3551f88f0d44ccb9769063a87ff276 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * Doc: Merge duplicated example directoriesSze Howe Koh2014-02-064-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | examples/quick/customitems contains all the examples found in examples/quick/ui-components, plus 2 more (maskedmousearea and painteditem). There are some very minor differences between the duplicated files, regarding the "smooth" property. Apart from that, the examples are identical. The only file that is unique to examples/quick/ui-components is example-slideswitch.qdoc. Moving it does not change the generated HTML filename. The other examples do not produce any documentation. Change-Id: I507d9064a60fd1f3a1469c1e423d4c0a72c7dc41 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| | * Avoid renderlist rebuilds in the scene graph renderer.Gunnar Sletta2014-02-062-30/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Transform, material, opacity and geometry changes all used to trigger full rebuilds, which meant that very little geometry could be retained between frames. For instance, a rotating spinner on top of a gridview this would cause a full rebuild where nothing is retained. This change introduces new concept to the renderer: partial rebuilding based on render order ranges. Since the render order of nodes is strictly defined by their position in the tree and nothing else, we should use that for the majority of rebuilds. When a change comes in for a node, we invalidate its batch and all batches which it has overlapping render orders with. Render order rebuilds only happen when nodes are added and removed. Change-Id: Ib4cb284164892b409e3fff5c492a54d60a5de2d7 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * Fix alignment exception in newCallContext on ARMSamuli Piippo2014-02-062-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CallContext::locals was not at multiple of 8, which caused an alignment exception on ARM. Size for the context is also increased. Change-Id: I136418f89945cd3fec74463659107c6dab7cad0a Reviewed-by: aavit <eirik.aavitsland@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * [Regression] Fix lazy binding evaluationSimon Hausmann2014-02-063-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 04774bb14c81688f86a2b31b8624bde8ebf59062 long time ago introduced the concept of fixed order binding initialization with lazy evaluation, where a bit is reserved for each binding that indicates whether it's been initialized the first time or not. When reading a property on a QObject, we'd check if the corresponding binding for the property has been initialized or not and flush (i.e. execute) the binding if necessary. As part of the V4/V8 clean-up, commit 1eb41200948ab414f1c47d93123b41c547a993df removed the StoreV8Binding instruction, which made the call for setting the this-binding-is-not-evaluated-yet bit. Nowadays we only use StoreBinding, for which this optimization was never implemented (and not needed really). Now that we have a unified JS code path, we need to set the pending binding bit and also make sure that we call flushPendingBinding for any JS side property access (accelerated or not). Also flushPendingBindingImpl had two bugs: * In an attempt of trying to find the binding to flush, it could happen that we'd try to flush a previously destroyed binding (m_mePtr is null), so the b variable would remain the first binding in the object and we'd flush the wrong one (instead of none). Added a missing check to verify that the property index matches. * Also resetting the mePtr must be done through clear(), to ensure that the pointer in bindValues in the VME is also cleared, to avoid re-enabling the same binding again in complete(); Task-number: QTBUG-36441 Change-Id: Icdb0c8fb036051fd5d6c4d33b10cd0c0ed9a9d5c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Fix backend API, broken since 5.2.0Gunnar Sletta2014-02-045-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | Without this change, it is not possible to implement a custom context without also implementing a renderloop. Change-Id: Iac2aa732251cdf7221b28f665394cdd336a3d846 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * V4 regalloc: fix interval splitting when register pressure is high.Erik Verbruggen2014-01-311-7/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a register is needed for an interval, but none is available, one of the used registers will be chosen and spilled to the stack (meaning it will be split) before the current position. However, if a register is used at the current position for an incoming parameter, its interval has to be split after the current position. This patch adds/fixes the latter case. This fixes crypto.js on x86. The specific problem there was that the result of an operation needed a register, and chose the one from one of the incoming parameters (which then should get spilled/split). However, this interval was already split, and started exactly at that the current position. So splitting before the current position did nothing, resulting in it staying alive and using the same register as the result. So any subsequent use of would have the invalid value. Task-number: QTBUG-36430 Change-Id: I228fc210b009aa0b16b08a374fc955fabfbb6d12 Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * V4: fix range sortingErik Verbruggen2014-01-311-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a life-time interval is split from another interval, it has to come before an interval that starts at the same position but is not split. This also means that a means that the all ranges in a split interval are uses, which is important for allocation: all incoming parameters for an operation need to be allocated before allocating a register for the result as the result will only start its life "at the end" of the operation. This patch fixes a problem register allocation is done in a function where register pressure is high (e.g. on platforms that have few registers to start with). Specifically, crypto.js on x86 triggered it. Change-Id: Iee3e5d82a887b8de573dfc23513844143d0c8073 Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * V4 JIT: save/restore ebx (GOT ptr) on linux/x86.Erik Verbruggen2014-01-312-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On linux/x86, ebx is used to store the global offset table. When using this register for temporary values, we have to save it at the entry of a generated function, and restore it before doing calls and at the end. Task-number: QTBUG-36289 Change-Id: I30194be3ce44f58b793ee52f6201906bcb68d46a Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Fix crash in header when regenerating view.Michael Brasser2014-01-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Unregister for geometry changes before reparenting, as reparenting may trigger those changes. Task-number: QTBUG-36481 Change-Id: Ia94f1f88880b232dd583b7e63e5da73fb338f7c6 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | * V4: remove unused field.Erik Verbruggen2014-01-292-9/+6
| | | | | | | | | | | | | | | | | | Change-Id: Id1edc073db349cfc7e4b5a9dca045760016ebacf Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
| | * Docs: add a working example to Text::fontSizeMode docsJ-P Nurmi2014-01-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | It's easy to miss the maximum bound specified by either the font.pointSize or font.pixelSize properties. Task-number: QTBUG-30005 Change-Id: If1dadebd6673f0e945a1ca95b64521f27d30f5a9 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | * Fix leak-on-exit of QSGRenderLoop::s_instanceAlex Montgomery2014-01-282-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | s_instance is created with new and never deleted which causes several destructors to never be called. Task-number: QTBUG-35731 Change-Id: Icccb19186958f8bb74c5fd2b4b41165255debc46 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * V4: Array.push() on QStringList should invoke putIndexed()Alberto Mardegan2014-01-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wrapped sequence types should cause putIndexed() method to be called when Array.push() is used. Fix suggested by Simon Hausmann. [ChangeLog][QtQml] Fix JavaScript Array.push() not working on QStringList properties. Task-number: QTBUG-36491 Change-Id: Id04409dd7466a943d8ea8d57cd0514e8de732480 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Add a function dumping out a GBMI stack trace of the V4 engine.Friedemann Kleint2014-02-121-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add an exported C-function dumping the JS stack trace which can be invoked by a debugger with the address of an execution context it finds in a complete stack trace. Task-number: QTCREATORBUG-11144 Change-Id: I5314f6b24868f12d4f9dedd1c261658957e581ba Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Add Image::mipmap to support mipmapping of images.Gunnar Sletta2014-02-1211-22/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick] New feature: Image.mipmap Task-number: QTBUG-19961 Change-Id: I13acb2408d5b126790adaf9d324ad4beda1e3646 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Fixed wrong baseline alignment for TextInputJan Arve Saether2014-02-121-0/+12
|/ / | | | | | | | | | | | | | | [ChangeLog][QtQuick][Fixed wrong baseline alignment for TextInput] Task-number: QTBUG-36749 Change-Id: I6920fb0681f30d9e9943d1bd01f76cc3ae204f30 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Add a debug service for controlling qml enginesUlf Hermann2014-02-104-2/+249
| | | | | | | | | | | | | | | | Like this we can control the starting and stopping of qml engines from the client without having to extend each of the other debug services. Change-Id: I5f1c077b6cfa0e628c32e8bcdea2ec053e310509 Reviewed-by: Kai Koehne <kai.koehne@digia.com>