aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
Commit message (Collapse)AuthorAgeFilesLines
* Allow detaching V4 debuggers in agent destructorUlf Hermann2014-03-111-0/+3
| | | | | | | | We don't know in which order the QML engines and the debug service are deleted on shutdown. Change-Id: I9d23b3c88eee125a93c5b0f8ea85466013233737 Reviewed-by: Simon Hausmann <[email protected]>
* Doc: Qt QML: Document signals (not handlers) under \qmlsignalSze Howe Koh2014-03-113-9/+17
| | | | | | | | Task-number: QTBUG-35846 Change-Id: I989617865a79bfbf1f1ffd3b105598025dde54c5 Reviewed-by: Mitch Curtis <[email protected]> Reviewed-by: Jerome Pasion <[email protected]>
* Don't delete the QML engines from the profiler service destructorUlf Hermann2014-03-111-1/+1
| | | | | | Task-number: QTBUG-37382 Change-Id: Ib40d69813794e18cc7c7f05e10881b1b23a93b4e Reviewed-by: Simon Hausmann <[email protected]>
* Cleanup our runtime methodsLars Knoll2014-03-1125-578/+564
| | | | | | | | | Move all our runtime methods into the QV4::Runtime struct and give them nicer names without underscores. Sort them logically and remove a few unused methods. Change-Id: Ib69b71764ff194d0ba211aac581f9a99734d8180 Reviewed-by: Simon Hausmann <[email protected]>
* Fix copying of Property'sLars Knoll2014-03-1013-46/+68
| | | | | | | | | | Data properties don't contain valid data in the set field if they are being stored in Objects. Thus we should never access that field unless we are dealing with accessor properties. Change-Id: I19dcbaee7ebd042ae24387f92a93571d75ca578a Reviewed-by: Simon Hausmann <[email protected]>
* V4 SSA: remove unused code.Erik Verbruggen2014-03-081-49/+1
| | | | | Change-Id: I56b3e5400e7b9880b9534117ac17a80436ff1733 Reviewed-by: Lars Knoll <[email protected]>
* V4 JIT: enable JIT on win64.Erik Verbruggen2014-03-082-1/+11
| | | | | Change-Id: I640d507c33fd4c4df6d6284b473df5cea9e5c4b4 Reviewed-by: Lars Knoll <[email protected]>
* Use an array of Value's for Object::memberDataLars Knoll2014-03-0710-95/+81
| | | | | | | | | | This cuts the memory required to store properties in an object in half for the common case. Accessor properties require two slots inside memberData, but data properties only one. Change-Id: I0bab1b88ca9ed5930abf065c77c89985b9ed5320 Reviewed-by: Simon Hausmann <[email protected]>
* Reserve a double slot for accessor propertiesLars Knoll2014-03-074-45/+118
| | | | | | | | | | Reserve two slots in the internal class for accessor properties. This opens up reducing the default storage required per data property to one Value. In practice this implies cutting the required memory in half. Change-Id: Ifed897852bbdfd810018f0d6b049fca6690ead2c Reviewed-by: Simon Hausmann <[email protected]>
* Move some methods from ExecutionContext to CallContextLars Knoll2014-03-073-42/+35
| | | | | | | | This is where they really belong. Slightly simplifies and cleans up the code. Change-Id: Ib5782c1f57c761c46f4bc52c3d496220299f8ac9 Reviewed-by: Simon Hausmann <[email protected]>
* Better way of retrieving the prototype property for FunctionObjectsLars Knoll2014-03-074-65/+31
| | | | | | | | | Make sure FunctionObjects always have the prototype property at index 0. This way we can speed up the instanceOf operator even more, and at the same time save 16-28 bytes of memory per FunctionObject. Change-Id: I8527bc8f9dc7b04a9db8395b5f05bab47ddc21ce Reviewed-by: Simon Hausmann <[email protected]>
* Remove the name member of FunctionObjectLars Knoll2014-03-075-14/+30
| | | | | | | | The data is anyway stored in the name property of the FunctionObject, and is not performance critical. Change-Id: If1784b0ec6f368bc474c246bb9c2c50d5e56b689 Reviewed-by: Simon Hausmann <[email protected]>
* Reduce memory consumption of FunctionObjectLars Knoll2014-03-076-52/+39
| | | | | | | | | Remove varCount and formalParameterCount members in FunctionObject and retrieve them from the CompiledFunction instead. Change-Id: I8a6cdc6d354b0f33da9d67a4c3dbfe8a7cc96176 Reviewed-by: Simon Hausmann <[email protected]>
* Remove unused entries in CompiledDataLars Knoll2014-03-072-9/+4
| | | | | Change-Id: Ie5313371fa5dec6630a1d955d4409ea4d6163810 Reviewed-by: Simon Hausmann <[email protected]>
* Fix test failure in qqmldebugjs autotestLars Knoll2014-03-073-5/+13
| | | | | | | | | | | | | | The debugger should only have one breakpoint that can be set per line. Nevertheless, we should have proper line number information available in case we stop at other places. We also need a debug instruction before the return statement, so that step out will always find a last stopping point in the parent frame. Change-Id: I86145fc244148f106a4a97ce69ab60b568c8dac6 Reviewed-by: Simon Hausmann <[email protected]>
* Fixes to breakpoint handlingLars Knoll2014-03-074-37/+42
| | | | | | | | Make sure stepping works correctly, and we always break at a valid breakpoint. Change-Id: I6a3032b3ae204484b8a92b2031904a7f681c7f80 Reviewed-by: Simon Hausmann <[email protected]>
* Add a Line instruction to the interpreterLars Knoll2014-03-0711-150/+31
| | | | | | | | | | This unifies the way we handle line numbers in the JIT and Interpreter. Remove the now unused lineNumberMapping code and data. Change-Id: I1d60b1fbb77e70b531fa73d93410683e84dd1e3c Reviewed-by: Simon Hausmann <[email protected]>
* Simplify our breakpoint handlingLars Knoll2014-03-075-271/+71
| | | | | | | | | | | | | | | | | Only store a Hash of break points in the debugger, instead of the involved logic that currently adds and removes break points. Add the current line number to the Debug statements in the interpreter, and pass them on to the debugger for checking whether we should really break. This adds a slight additional overhead to running inside the debugger, but greatly simplifies the logic and doesn't require modifying the bytecode anymore. This in turn opens up the possibility to run the debugger on JIT generated code later on. Change-Id: If2a3ae8f8d08b69a3a704cbbe0a84000f917a32e Reviewed-by: Simon Hausmann <[email protected]>
* Remove old compiler and VMESimon Hausmann2014-03-0727-9018/+83
| | | | | | | | | | | | This removes the bulk of the code. A few smaller cleanups remain, to be done in smaller changes as they move code around. Additionally the "optimize" option of qqmlbundle was removed. It called QQmlScript::Parser::preparseData, which however was not implemented and always returned an empty QByteArray. Therefore "optimize" would not do anything and the class is gone now :) Change-Id: I0c265e756704cb53c5250be1f69e4a3e1b6e64d5 Reviewed-by: Lars Knoll <[email protected]>
* Add the features of QLoggingCategory to QML's debugging methods.Giorgos Tsiapaliokas2014-03-071-4/+10
| | | | | | | | | | It is now possible to modify the output of QML's debugging methods. Also the prefix of "qml" makes it possible to capture the output from the QML files using qInstallMessageHandler. This commit depends on qtbase/4967c7106568d5df0be4d40bf793583c7c6bdb69 Change-Id: I2c7a2cb96a0b91fd3249dc2dacbab63e6ac68243 Reviewed-by: Kai Koehne <[email protected]>
* V4 JIT: fix stack space reserving codeErik Verbruggen2014-03-071-2/+2
| | | | | | | | sub32 will truncate the register's content, which is a bit problematic when the stack is located outside the first 4G (e.g. on win64). Change-Id: I8c2c55c0e08f4e5b67295ba6a8a26d7d55d4477f Reviewed-by: Lars Knoll <[email protected]>
* V4: fix address printing on 64bit platformsErik Verbruggen2014-03-071-0/+1
| | | | | | | | The addresses were truncated to 32bits, which is a problem on win64, because JITted code ended up outside that range. Change-Id: I0d8b92486714340dffe4b4c2de29cf11a929a149 Reviewed-by: Lars Knoll <[email protected]>
* Fix MSVC2012 compiler warnings in disabled code.Erik Verbruggen2014-03-071-2/+4
| | | | | | | ... that should soon get enabled. Change-Id: I2f8393cab5e99a7f5d3c7df6af6385fefd2d4dd1 Reviewed-by: Lars Knoll <[email protected]>
* V4 JIT: fix up register usage for linux/macos on x86_64.Erik Verbruggen2014-03-072-5/+7
| | | | | Change-Id: Ia6f3a78410fd41c58904a60f4c7a0630cf5230d0 Reviewed-by: Lars Knoll <[email protected]>
* Fix more MSVC2012 compiler warnings.Erik Verbruggen2014-03-071-4/+7
| | | | | | | All are conversions from size_t to int or to unsigned. Change-Id: Ic94c938dcad6d50a32dd6ec62da2341869cf994d Reviewed-by: Simon Hausmann <[email protected]>
* Fix a couple of typos in the documentationLaszlo Papp2014-03-061-6/+6
| | | | | Change-Id: Ie06af2e33e5adf6d56391929bd763b01e57557b0 Reviewed-by: Jerome Pasion <[email protected]>
* Switch the code path from the old compiler and VME to the new code pathSimon Hausmann2014-03-061-3/+1
| | | | | Change-Id: Ib1b38ec07830f8df9fa4caacd00879434608053b Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix crash in tst_qquickpathviewSimon Hausmann2014-03-061-1/+3
| | | | | | | | | | | | | QQuickPathView's attached object uses a dynamic meta-object. So when installing bindings - such as a signal handler - on it and we want to determine the property cache for it, we must not use the QQmlEnginePrivate::cache overload that takes a QObject pointer, as that will - rightly so - return a null pointer. Instead in this case it is okay to go with the static type overload, by using the meta-object of the attached type known at compile time. This is consistent with the VME code path. Change-Id: Iffc64f7ee4677c6cc60d071b80f4032cf8037ab7 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix potential infinite recursion when using the incubatorSimon Hausmann2014-03-061-3/+3
| | | | | | | | | | Some auto-tests use the incubation controller with a one-step boolean, so shouldInterrupt() always returns true. When we're in the finalization phase enabling the bindings one-by-one, pop one off the bindings stack and enable it _before_ doing the shouldInterrupt() check. Otherwise we don't progress at all. Change-Id: Ibd5bbc253f8e8f74b08c91b018533c9e2735d2c8 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix incorrect accelerated lookups to id objectsSimon Hausmann2014-03-062-3/+4
| | | | | | | | | | When compiling JS code in the scope of a component, make sure to always set the id object mapping, even if it is empty. Otherwise the id objects from one scope might leak into another, leading to id object dependencies that are invalid. Change-Id: Ib2bca11203acd6924e8c74f9560a1ee3e00d7e39 Reviewed-by: Lars Knoll <[email protected]>
* Add some leading white space to generated code for QML signals.Ulf Hermann2014-03-051-1/+4
| | | | | | | | | | | | | | | | Like this the column numbers in the generated code are correct. We rely on the column numbers in quite a few places. The alternative solution of extending the Javascript parser to add an initial column offset would result in much more code and complexity. const-casting the column number and adding to it after compiling would be an option but as the column number may be saved in other places, too, this is not desirable. Task-number: QTBUG-37226 Change-Id: I0d11816d96ff4e7c756064646755a3e9874f9790 Reviewed-by: Simon Hausmann <[email protected]>
* [new compiler] Fix designer integrationSimon Hausmann2014-03-051-2/+2
| | | | | | | | If the QML puppet disables onComplete callbacks, we must obey that also in the new code path. Change-Id: Ic9b74c6a5ee04dc5b8e4f545a8e6cc0fa8dd28f1 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix auto component creation with composite typesSimon Hausmann2014-03-051-3/+7
| | | | | | | | | | | | | A binding like this property Component foo: SomeComposite {} should not do an implicit component insertion if SomeComposite is actually a component. The property assignment is compatible and can proceed normally. Fixes tst_qquickcanvasitem, but added a separate unit test for this case. Change-Id: I7221eebd38dba3f2a82b59341739b9b67211e352 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Add support for deferred propertiesSimon Hausmann2014-03-056-10/+133
| | | | | Change-Id: I592518444ef353cfcf153df0e6afa2fbac613560 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix invalid memory reads when JS closures outlive QML typesSimon Hausmann2014-03-055-9/+6
| | | | | | | | | | | | | If QQmlCompiledData gets destroyed while somebody still has refcount on the QV4::CompiledData::CompilationUnit, then unit's _data_ would be freed already by ~QQmlCompiledData. Given that compilationUnit->data is pointing to the same malloc'ed address as QQmlCompiledData::qmlUnit, we can just let the CompilationUnit always own the data. Fixes tst_qquickloader and makes it possible to run the qquickcomponent tests. Change-Id: Ie3f3e5335139236d7c2524a327665bda0a9cc847 Reviewed-by: Lars Knoll <[email protected]>
* Fix MSVC2012 compiler warnings.Erik Verbruggen2014-03-053-1/+8
| | | | | | | | Tested on both win32 and win64. Change-Id: I47755e2da51829e61e1452eaaf84a057224b478b Reviewed-by: Simon Hausmann <[email protected]> Reviewed-by: Gunnar Sletta <[email protected]>
* [new compiler] Fix property initialization order for mixed list and default ↵Simon Hausmann2014-03-044-9/+111
| | | | | | | | | | | | | | | | | | | | | | | | property setups Get a little closer to replicating the old compiler's behavior without introducing a new nested data structure for lists: * List property assignments should happen in declaration order for the items. Instead of doing magic in QmlObject::appendBinding, simply traverse the UiArrayBinding members in reverse order. Within a list, the items remain in order then, due to QmlObject::appendItem prepending. In the overall picture for the entire object, the reverse initialization order for properties is also preserved this way. * When an object has property bindings to the default property and also bindings to a named property that - after meta-object determination - turns out to be the default property, then we need to merge the bindings and preserve the declaration order. (tst_qqmlecmascript::defaultPropertyListOrder checks that) Fixes tst_qqmlenginedebugservice that expects bindings to an entire list to happen in reverse order (like other properties). Change-Id: I7408c97cdb971e06b1ee43a2a85f8cc6f008c444 Reviewed-by: Lars Knoll <[email protected]>
* Fix crash when accessing var properties in objects with invalid contextSimon Hausmann2014-03-041-3/+4
| | | | | | | | | | | | | | | | | | We've had two indepedent reports of people running into the issue of their QML code accidentally trying to access var properties in item view delegates that were on the path of destruction, i.e. their QQmlContext was already marked as invalid. Any such access would cause a failing assertion in debug builds or a crash in release builds. This patch removes the dependency to QQmlContextData for accessing the var properties and adds a test-case that covers this use-case. This is a regression from Qt 5.1.x. Task-number: QTBUG-37227 Change-Id: Icf55d5fa8c15e45974e78086e9e11b2401ea9bad Reviewed-by: Albert Astals Cid <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* Combine the source file, line and column number triplet in a common structureSimon Hausmann2014-03-045-56/+31
| | | | | | | | | This avoids unnecessary function calls when all of the three pieces need to be retrieved from a QQmlBoundSignalExpression. Change-Id: Ibcd498c907ea723baf6439cf32ca5fc704f204b5 Reviewed-by: Ulf Hermann <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix profiler supportSimon Hausmann2014-03-044-1/+21
| | | | | | | | | Add profiler tracing calls during objection creation and make sure to set the function token / source location correctly for the synthesized function declarations of signal handlers. Change-Id: Ie4f8accce3a5c5d1d57bb0646cda588b89b76718 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Fix some qqmlincubator testsSimon Hausmann2014-03-047-12/+79
| | | | | | | | | | | | | | | We need to track the objects created and pass them over to the VME guard used in the incubator. The incremental build nature of the incubator requires that to avoid crashes. For nested incubators we need to set the activeVMEData field in the root QQmlContext, to allow child incubators to locate the parent. Lastly we need can emulate most of the VME behavior in terms of build states when running with QQmlInstantiationInterrupt by presenting four build steps: The initial state, two build steps, a finalization step and the state when we're done. Change-Id: I16cd7f71744decb9d4735ec77e9d944fad18e88d Reviewed-by: Lars Knoll <[email protected]>
* Document qmlContext() and qmlEngine().Mitch Curtis2014-03-043-0/+30
| | | | | | | | | | | | | | | | | | | 146b942d59cca446516652d42718197573d34e46 documented them (Qt 5), but for some reason they aren't visible [1]. c74e4a74ba97d32df7406fb684527d415dd8a6ba (Qt 5.1) then moved them into the QtQml namespace "to avoid symbol conflicts with QtDeclarative", and then did the following trick so that they could be called without qualifying the functions with the namespace: using namespace QtQml; For that reason, qdoc shouldn't see the namespace, so we #ifdef it out. [1] project.org/doc/qt-5.0/qtqml/qqmlengine.html Change-Id: Id815ae4de7f081c22755eef7c37a2bc6e812b440 Reviewed-by: Simon Hausmann <[email protected]> Reviewed-by: Jerome Pasion <[email protected]>
* V4 JIT: enable register allocator on win32.Erik Verbruggen2014-03-042-2/+25
| | | | | Change-Id: I7134bd3721df0e000ad0bd135c01e76c55271156 Reviewed-by: Simon Hausmann <[email protected]>
* Reduce size of QQmlBoundSignalExpression in the common case.Michael Brasser2014-03-042-41/+96
| | | | | | | | | | This reduces the base size of QQmlBoundSignalExpression by 20 bytes, by moving member variables specific to runtime rewrites in to an "extra" structure. Task-number: QTBUG-37134 Change-Id: I235895a395ba4304a7ea071d88aa9aebcfff61cb Reviewed-by: Simon Hausmann <[email protected]>
* Move all binop related code into qv4binop*Lars Knoll2014-03-044-212/+218
| | | | | Change-Id: I8f96b8d570dd4c0139b0a2e595055b3b2c6dae70 Reviewed-by: Simon Hausmann <[email protected]>
* [new compiler] Fix tst_qqmlvaluetypesSimon Hausmann2014-03-034-5/+10
| | | | | | | | | | | | | | * Make sure to remove earlier set bindings for any value type property, not just scripts. We want font.bold: false to also override an earlier actual binding for example. * Propagate on assignments on qualified property names throughout the chain of bindings - that makes it easier to detect them early on. * The group property collection in the bindings validator should only include value bindings to group properties, not on assignments - as they can always appear in parallel. Change-Id: Ib7ec4de755a5a8d269324a77cba36eb945366274 Reviewed-by: Lars Knoll <[email protected]>
* [new compiler] Detect when writing to read-only value type property and bail outSimon Hausmann2014-03-032-4/+9
| | | | | | | | Also annotate QML expressions in the IR with a proper function name, to make debugging easier. Change-Id: I5bacf446f40d35896f50bed0732f6f10408d9c97 Reviewed-by: Lars Knoll <[email protected]>
* Remove unused ExecutionEngine::allFunctionsLars Knoll2014-03-033-11/+0
| | | | | Change-Id: I69a736ac7920a10667949475600460ee43d61480 Reviewed-by: Simon Hausmann <[email protected]>
* Remove unused codeSizesLars Knoll2014-03-038-58/+6
| | | | | Change-Id: I13c7d9dda7cd1e771079f6fdaa175008b3a3e0e5 Reviewed-by: Simon Hausmann <[email protected]>
* Remove nArguments and name from QV4::FunctionLars Knoll2014-03-038-34/+15
| | | | | | | | Saves 12 bytes per Function Change-Id: I9a495805f9201eb6162a520ff5c2defeb73dc37a Reviewed-by: Simon Hausmann <[email protected]> Reviewed-by: Michael Brasser <[email protected]>