aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
Commit message (Collapse)AuthorAgeFilesLines
* Limit the amount of memory we allocate on the stackLars Knoll2013-11-186-3/+93
| | | | | | | | | | | | | | | | | | | Setup limits for both the C and the JS stack, and check them before entering functions. If we run out of space, throw a RangeError exception. Be careful and recheck the stack bounds when things go outside. This catches the case where the engine got moved to another thread changing the stack boundaries. Windows currently uses an unsafe fallback implementation, this needs to be fixed later on. Task-number: QTBUG-34568 Change-Id: I22fbcbec57b28f9cc8a49e12f1cc6e53e4f07888 Reviewed-by: Erik Verbruggen <[email protected]> Reviewed-by: Gunnar Sletta <[email protected]>
* Fix === operator for value typesLars Knoll2013-11-152-3/+6
| | | | | | | | | Fix === comparison for urls and other QML value types. Task-number: QTBUG-33546 Change-Id: I4a7066e6bbc7de7c599fe2c7b2fdfb75e0ff5196 Reviewed-by: Simon Hausmann <[email protected]>
* Don't crash when trying to assign to null.propLars Knoll2013-11-151-0/+2
| | | | | | | | | | Fixes a regression introduced during the exception handling refactoring. Task-number: QTBUG-34544 Change-Id: Ib751274d759030db3e5d3b1380b30dc07ec85f83 Reviewed-by: Simon Hausmann <[email protected]>
* V4 debugging: fix step-over and step-out.Erik Verbruggen2013-11-144-37/+54
| | | | | | | | | | | | | | | | - step-out: only stop if we’re leaving the context for the function we previously stopped at, so intermediate calls between the current position and the end do not stop the engine - step-over: set breakpoints on all lines in current function and continue to run. When hitting a breakpoint, see if we are in the same context, because recursive calls might happen. Breakpoints on all lines are needed, because the (pure) next line might be jumped over (like when doing step-over a single-line then clause, where the next line might be in the else clause). Change-Id: Idf35dc740ca64fae5079162162906490a96af2a7 Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Kai Koehne <[email protected]>
* Allow passing qmlRegisterSingletonType QObjects to C++ as QObject*Albert Astals Cid2013-11-143-0/+14
| | | | | | | | | | | | | At the moment you can pass them as their FinalType* or as one of their ParentType* but not as QObject* which does not make much sense to me Task-number: QTBUG-34617 Task-number: QTBUG-30730 Change-Id: Id5cfb7bbb123456ef43f44f33b450f8966a7641a Reviewed-by: Alan Alpert <[email protected]> Reviewed-by: Simon Hausmann <[email protected]>
* Fix native compilation on linux/arm with gcc 4.7.2Erik Verbruggen2013-11-131-1/+1
| | | | | | | | | | | /disk/qt5-dev/qtdeclarative/src/qml/jsruntime/qv4function.cpp: In instantiation of ‘int QV4::LineNumberMappingHelper<field, SearchType>::lowerBound(int, int, SearchType) [with int field = 0; SearchType = int]’: /disk/qt5-dev/qtdeclarative/src/qml/jsruntime/qv4function.cpp:142:49: required from here /disk/qt5-dev/qtdeclarative/src/qml/jsruntime/qv4function.cpp:106:13: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] cc1plus: all warnings being treated as errors Change-Id: Ic97d6a2a9acd392d565e9c66f30159552473e092 Reviewed-by: Simon Hausmann <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* Revert ffaf39e9a7f11d4e2800b3b37160a2a952795614Alan Alpert2013-11-1310-10/+13
| | | | | | | | | Making it public right now seems a little premature, given all the work happening on the engine now (and for 5.3). We'll be in a better position to commit to it or not next release. Change-Id: Ib7b14afeb9205fb8a87ed16a6d38b1f468b2bbbb Reviewed-by: Lars Knoll <[email protected]>
* Polish up QQmlFileSelectorAlan Alpert2013-11-134-13/+84
| | | | | | | | Incorporate beta feedback, and hide QQmlAbstractUrlInterceptor as the implementation (instead of making that "the API"). Change-Id: Ib7b14afeb9205fb8a87ed16a6d38b1f468b2aaaa Reviewed-by: Lars Knoll <[email protected]>
* Fix warnings about deprecated string conversions in V4-debugservice.Friedemann Kleint2013-11-131-3/+3
| | | | | Change-Id: I1b45876d2016fdcf1117c4f77b33c75f7d712657 Reviewed-by: Lars Knoll <[email protected]>
* Fix property dependency generation for accelerated QML QObject propertiesSimon Hausmann2013-11-1217-155/+65
| | | | | | | | | | | | | | The previous approach of collecting the dependencies through an IR visitor doesn't work, because it relies on a fixed structure - for example MEMBER(NAME, prop) - which we can't guarantee (it's usually MEMBER(TEMP, prop)). But it turns out that we can only pre-calculate dependencies for context, scope or id properties, so we can do that right away in the QML specific JS codegen, store that information in the IR function and use it from there in the data structure generator as well as in the isel as a parameter to getQObjectProperty to tell the run-time whether capture is required or not. Change-Id: I33711c3420d6534c653c2a6a4284f0fc12e941cf Reviewed-by: Lars Knoll <[email protected]>
* Fix out of bounds array index in the generated JIT codeLars Knoll2013-11-121-3/+5
| | | | | | | | | When converting a double to int, make sure we check for >= 0 before using it, otherwise we get out of bounds accesses. Task-number: QTBUG-34635 Change-Id: If72e116c08fe1dff03cd88ce510cf8b96d249b92 Reviewed-by: Erik Verbruggen <[email protected]>
* V4 IR: change basic-block cleanup to remove unreachable cycles too.Erik Verbruggen2013-11-121-22/+57
| | | | | | | | | | | | | | | | | | | | The previous version left unreachable cycles untouched. For example in: function f() { if (false) while (true) { doSomething(); } anotherThing(); } The edge to the then-part would be removed, but the loop itself would not be removed. This resulted in the basic-block scheduler choking when hitting the block with the anotherThing() call, because it wants to have all blocks from incoming edges resolved first. Task-number: QTBUG-34776 Change-Id: I5b3a79140e6058c4ade4ec7687c1a795f1a74f97 Reviewed-by: Fawzi Mohamed <[email protected]> Reviewed-by: Mitch Curtis <[email protected]>
* Fix Object::getArrayHeadRoom()Lars Knoll2013-11-121-0/+1
| | | | | | | | | | The method didn't adjust the size of the allocated array properly, leading to crashes when being called repeatedly. Task-number: QTBUG-34723 Change-Id: Ib58e7dcab6d0f5f46f3cf342eb541c1cc6b6cdc6 Reviewed-by: Gunnar Sletta <[email protected]> Reviewed-by: Erik Verbruggen <[email protected]>
* Remove unused _info on non-debug buildsShawn Rutledge2013-11-121-0/+7
| | | | | | | | | Otherwise clang generates a warning which is fatal because of treating warnings as errors. Change-Id: I47c280edf6b0f8efa5ce24f9e92551304aed15fb Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Gunnar Sletta <[email protected]>
* V4 JIT: fix invalid sanity assert.Erik Verbruggen2013-11-121-2/+22
| | | | | | | | | | | | | If there are multiple incoming edges to a block, and there are one or more phi nodes at the start, then only check the temp uses for the edge we are resolving. Task-number: QTBUG-34770 Change-Id: Ibb5c7c323d6be8bc1ed492b08ed098de2f2726cc Reviewed-by: Fawzi Mohamed <[email protected]> Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Mitch Curtis <[email protected]>
* V4 IR: scan arguments when entering function scope in QML.Erik Verbruggen2013-11-122-1/+8
| | | | | | | | | | | | | When doing IR generation for a function declaration in a QML object, call through the helper methods to check for forbidden names, and most importantly, also checks if the function has parameters. If the latter is the case, they need to be added as a member for the current scope in order to get IR generation correct. Task-number: QTBUG-34493 Change-Id: I0ade15ee19e1b1ac8ee2f2d3fa186d1551800199 Reviewed-by: Lars Knoll <[email protected]>
* V4: fix loop block marking for initializer blocks.Erik Verbruggen2013-11-121-4/+4
| | | | | | | | | | | | | | Any new blocks generated as part of the initializer were incorrectly marked as belonging to a loop. For example, if a LocalForStatement would contain a ternary expression, the generated then and else blocks would be marked. This would confuse the block scheduling, because all blocks are postponed unil the condition block (“group start”) is scheduled. Task-number: QTBUG-33754 Change-Id: I45919ebeac356f015bb91fe0210472b3df0b56d8 Reviewed-by: Lars Knoll <[email protected]>
* V4 interpreter: remove stack-slot allocator.Erik Verbruggen2013-11-124-161/+70
| | | | | | | | | | The life-ranges are only valid when the IR is in SSA form. So the use of them in the interpreter after converting out of SSA form introduced bugs. Instead, allocate a stack-slot for each unique temporary, and re-use the code for this from the JIT. Change-Id: I294f1116064f0b85996cf96a0b408b41a3c785e2 Reviewed-by: Lars Knoll <[email protected]>
* Intercept qmldir files with the url interceptorAlan Alpert2013-11-111-7/+20
| | | | | | | | | | | There's another code path which loads qmldir files directly, and it did not use the interceptor when available. Note that this, like other interceptors, does not affect baseUrl and so any other qmldir file still must have paths relative from the initial URL. Change-Id: I620943c36d488d22fbaf1793514075d31ab76e3e Reviewed-by: Lars Knoll <[email protected]>
* Debugging with V4Erik Verbruggen2013-11-1011-374/+1836
| | | | | | | | | Currently missing, but coming in subsequent patches: - evaluating expressions - evaluating breakpoint conditions Change-Id: Ib43f2a3aaa252741ea7ce857a274480feb8741aa Reviewed-by: Simon Hausmann <[email protected]>
* Add a new variant of qmlRegisterSingletonType for QML singletons.Antti Piira2013-11-092-1/+68
| | | | | | | | | | | | | | Adds a new public API to register a QML based singleton type from C++. This is the equivalent of the the qmlRegisterType, but for singletons. qmldir file is not needed for types registered through this function, but the type still needs to include the following pragma statement among the import statements: pragma Singleton Change-Id: Icb35b665fe2a8605667fe8ac575347be2a60490c Reviewed-by: Alan Alpert <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* For x86 builds, try to detect SSE2 availability early and bail outSimon Hausmann2013-11-091-0/+7
| | | | | | | | | | ...instead of potentially just crashing. This is for the rare case of somebody trying to run a QML2 based application on a Pentium 3 from before 2001 or older. Change-Id: Ia5606fe28ef5579654ec939c86830af70dbb84d7 Reviewed-by: Kai Koehne <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* Remove stray warn_off in pri fileLars Knoll2013-11-091-2/+0
| | | | | Change-Id: I9abf1180aecbd2e87fa7f52b51ad1c59665723fc Reviewed-by: Simon Hausmann <[email protected]>
* Fix a few more compiler warnings in release buildsLars Knoll2013-11-093-14/+7
| | | | | Change-Id: I826226b7ddd4a74037b5bbe9a4a7322d404f53a9 Reviewed-by: Simon Hausmann <[email protected]>
* Remove debug outputEskil Abrahamsen Blomfeldt2013-11-091-1/+0
| | | | | | | | | Some applications (like e.g. the Tweet Search example) prints out a ton of these "scanEscape" messages to the console. Change-Id: Ibfa9c4780705167693c7fb6af8cad1e312549a5f Reviewed-by: Simon Hausmann <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* Move Primitive::emptyValue() to qv4value_def_p.h.Friedemann Kleint2013-11-092-9/+8
| | | | | | | | | | | | Silence MinGW-warnings: warning: 'static QV4::Primitive QV4::Primitive::emptyValue()' redeclared without dllimport attribute after being referenced with dll linkage Task-number: QTBUG-34152 Change-Id: Id6971a20f1901022ab0d1c8f1834b135c71510ae Reviewed-by: Simon Hausmann <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* Initialize variableLars Knoll2013-11-091-0/+1
| | | | | Change-Id: I540b08bd1c60215a63cad1233f09e060b70df66f Reviewed-by: Simon Hausmann <[email protected]>
* Simplify & speed up function callingLars Knoll2013-11-0957-735/+733
| | | | | | | | | Get rid of the SimpleCallContext, instead simply use the CallContext data structure, but don't initialize the unused variables. Change-Id: I11b311986da180c62c815b516a2c55844156d0ab Reviewed-by: Simon Hausmann <[email protected]>
* Generalize check for localtime_rKai Koehne2013-11-081-6/+6
| | | | | | | | | | | | | | | Use the _POSIX_THREAD_SAFE_FUNCTIONS define to decide whether localtime_r is available, instead of guessing by Mingw-w64 version. This copies the logic of qdatetime.cpp in qtbase, and should fix compilations with older Mingw-w64 versions. It replaces ce3e8f93c. Task-number: QTBUG-34038 Change-Id: Iee8a9aa61d2af3e069e6365c40f81007c479d147 Reviewed-by: Mark Brand <[email protected]> Reviewed-by: Simon Hausmann <[email protected]>
* Initialize variables before using them.Sérgio Martins2013-11-061-0/+2
| | | | | Change-Id: I7cd5a17259814b3f2405b63d7f4d2a0fd30cae4d Reviewed-by: Simon Hausmann <[email protected]>
* Replace QString::fromUtf8() with QString::fromLatin1() for literalsKai Koehne2013-11-062-10/+10
| | | | | | | The literals are all latin1 strings, and fromLatin1() is much faster. Change-Id: I25af0358a0a4aa2e973349c027cfac50b7589429 Reviewed-by: Fawzi Mohamed <[email protected]>
* Doc: Updated url variable in qdocconf files.Jerome Pasion2013-11-061-1/+1
| | | | | | | | | | | | | | | In 5.2, the HTML output is in a flatter structure and when they are hosted in qt-project.org/doc, the documentation will be found at http://qt-project.org/doc/qt-$QT_VER The url variable is used by projects outside of Qt 5 which need to link to Qt 5 documentation, such as Qt Creator. Task-number: QTBUG-34584 Change-Id: Ie23c3748fbe780fa00f98404238099809df5ef06 Reviewed-by: Topi Reiniö <[email protected]> Reviewed-by: Leena Miettinen <[email protected]> Reviewed-by: J-P Nurmi <[email protected]>
* Fix build on WinRTAndrew Knight2013-11-062-2/+2
| | | | | | | | Disable JIT and avoid unsupported functions under WinRT. Also add MSVC's ARM flag to the double conversion white list. Change-Id: I22ec340a20b113fdeefb802ac61812f78a527895 Reviewed-by: Simon Hausmann <[email protected]>
* Ensure the this object is set correctly to the scope object in binding ↵Simon Hausmann2013-11-056-37/+2
| | | | | | | | | expressions This is a regression from 5.1 Change-Id: I61ad372a02d937c195dad74bd9fcb8fd4410d97a Reviewed-by: Lars Knoll <[email protected]>
* Fix XHRLars Knoll2013-11-051-1/+1
| | | | | | | Return after throwing an exception. Fixes the XHR autotest Change-Id: Id3412eeb2c9867d3ad9bd64b3a81c4468c5b5bd5 Reviewed-by: Simon Hausmann <[email protected]>
* Generate inline code for "foo == null/undefined"Lars Knoll2013-11-052-12/+79
| | | | | Change-Id: I81f5708034ed50207afde697e377e8f265cbcd1c Reviewed-by: Simon Hausmann <[email protected]>
* Smaller optimisationsLars Knoll2013-11-051-8/+6
| | | | | Change-Id: Idb35d57801472e73b4e77b83e129dbb2a484b734 Reviewed-by: Simon Hausmann <[email protected]>
* Remove 2 unused macrosLars Knoll2013-11-051-3/+0
| | | | | Change-Id: I095673b56166f47969583e9aff30bcef1e50a674 Reviewed-by: Simon Hausmann <[email protected]>
* Move conversion of this object into generated codeLars Knoll2013-11-0517-19/+64
| | | | | | | | | | | | When a non strict mode function uses the this object, we need to make sure it's being correctly converted into a object before being accessed. So far this was being done by ScriptFunction::call. Move this into the generated code to avoid overhead for methods not using 'this', and simplify our ScriptFunction::call() implementation. Change-Id: I739f4a89d29ed8082ce59e48d1523776224fc29d Reviewed-by: Simon Hausmann <[email protected]>
* Don't initialize locals for simple script functionsLars Knoll2013-11-051-3/+0
| | | | | | | There are not being used anyway. Change-Id: Id61b023eeb9d61bbee2874a5fd5005ba9fb08fca Reviewed-by: Simon Hausmann <[email protected]>
* Minor optimisationsLars Knoll2013-11-052-31/+34
| | | | | | | Remove a couple of function calls. Change-Id: I5abc6d96df52787ee7c433239807c851eb9a6d41 Reviewed-by: Simon Hausmann <[email protected]>
* Remove code that's not required anymoreLars Knoll2013-11-051-17/+0
| | | | | | | | | The StackSaver class is not required anymore, as we don't throw C++ exceptions anymore, and masm/moth generated code always cleans up the JS stack. Change-Id: If49d952230f8bd074f3b9353f56c07c8c5134752 Reviewed-by: Simon Hausmann <[email protected]>
* Don't run the GC too oftenLars Knoll2013-11-051-8/+13
| | | | | | | | | | Some test cases were badly trashing the GC, running it way too often. Fix this by only running the GC after we allocated more than 50% of the amount of available items. Change-Id: Icfe6d0730552ef2298963de706213ebc9e3e342c Reviewed-by: Simon Hausmann <[email protected]>
* Optimise string additionsLars Knoll2013-11-057-35/+107
| | | | | | | | Small optimisation for string additions, also add one more check for exceptions in the code where required. Change-Id: I6c14bc88ea5d03f7eeed0e0168c5195f9f823693 Reviewed-by: Simon Hausmann <[email protected]>
* Fix rounding behavior of Qml when assigning doubles to integer propertiesSimon Hausmann2013-11-053-10/+8
| | | | | | | | | | | | The engine used to round, but that is inconsistent with ECMAScript's way of converting doubles to integers by truncation. With this patch we can also enable the propagation of integer type information into the IR, but we have to be careful not to utilize it when writing properties. Change-Id: I04af4879ba5131349eca2eeff2b27f4598f5267b Reviewed-by: Lars Knoll <[email protected]>
* Remove time type documentationAlan Alpert2013-11-051-30/+0
| | | | | | | | | | | While the time type does technically exist, it cannot be created from QML. Pending a discussion about its future, the doc will be temporarily removed to avoid confusing people. Task-number: QTBUG-32295 Change-Id: Ic171a7f4a5d7c0515427a6d1d65bed0abcfe3643 Reviewed-by: Mitch Curtis <[email protected]> Reviewed-by: Simon Hausmann <[email protected]>
* Refactor marking GC'ed objectsLars Knoll2013-11-0544-189/+199
| | | | | | | | | | | Don't use recursive function calls anymore. Instead, push marked objects onto the JS stack, and then pop them off when their children are being marked. Should reduce stack memory usage, and improves performance by ~5%. Change-Id: I2d37d97579144fcba87ec8e9fd545dd220c01fbb Reviewed-by: Simon Hausmann <[email protected]>
* Doc: Fix broken linksSze Howe Koh2013-11-0511-16/+15
| | | | | | Change-Id: Ie7408409ddbaa354370267f2dd74326ec56a4186 Reviewed-by: Jerome Pasion <[email protected]> Reviewed-by: Topi Reiniö <[email protected]>
* Doc: Fix typosSze Howe Koh2013-11-051-1/+1
| | | | | | Task-number: QTBUG-33360 Change-Id: I913c14d3d6a90d2c20e40e246ad11f50a26c3ad9 Reviewed-by: Jerome Pasion <[email protected]>
* Doc: Fix QUrl conversion detailsSze Howe Koh2013-11-051-1/+1
| | | | | | | Task-number: QTBUG-33360 Change-Id: I2f6889d798c6c10f1412f5adb69dd0362ac790fb Reviewed-by: Alan Alpert <[email protected]>