aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Arguments passed to functions should shadow the function nameLars Knoll2018-01-121-0/+15
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-65140 Change-Id: I6c6b24f081b31ef0f16fec9b2024485acec11c2d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Add setContextProperties()Thomas Hartmann2018-01-121-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting all properties in one batch avoids unnecessary refreshing of expressions and is therefore a lot faster if there are many expressions in the context. In an example I created it takes 500ms to set 10 context properties using setContextProperty() and it takes about 150ms to set the context properties using setContextProperties. Change-Id: Ic7cf03cda292b316198f37f963b61a2388a288c9 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Revert "Blacklist tst_QQmlProfilerService::translationBinding()"Ulf Hermann2018-01-091-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ef318f5751a9f7d0391231f208d767e181b194d5. 53985897ef09a88cd2121962405decf355974e6f fixes the issue. Task-number: QTBUG-65611 Change-Id: Ia7b24ee40b0aef2fa9808d412a56f1af6fd95eb8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-0910-4/+696
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/qml/memory/qv4mm.cpp src/qml/qml/qqmlbinding.cpp Change-Id: I98e51ef5af12691196da5772a07d3d53d213efcc
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-0410-4/+696
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/memory/qv4mm.cpp src/qml/memory/qv4mmdefs_p.h src/quick/items/qquickwindow.cpp src/quick/items/qquickwindow_p.h tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp Change-Id: I7021fa1edf076627a67048f41f7b201220262b09
| | * Add a means to unregister custom qml typesAndy Shaw2017-12-013-0/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cases where Qt is used in a plugin it is possible that a plugin will be unloaded while Qt itself is still loaded and as a result there is a chance that there will be conflicting types registered. Therefore, to ensure that plugins correctly clean up after themselves cleanly, we need to add a means to unregister qml types. This is intended to only be used when the user knows what they are doing. Task-number: QTBUG-56521 Task-number: QTBUG-56532 Change-Id: Ie396e522385004e6e9f3841e04f8072ff29cb15b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * More fine-grained deferred property executionJ-P Nurmi2017-11-251-0/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows Qt Quick Controls 2 to defer the execution of certain building blocks until needed. For example, a button control can defer its background item so that the default background is not executed at all when replaced by a custom background. First of all, this gives a massive performance boost for customized controls. Secondly, this avoids the most burning issue in QQC2, problems with asynchronous incubation ("Object destroyed during incubation"). Task-number: QTBUG-50992 Change-Id: If3616c9dac70e3a474a20070ad0452874d267164 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Re-enable QML memory profilingUlf Hermann2017-11-233-1/+40
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-64674 Change-Id: I48ed1a51f66ef8d55cc026f140d270baaca04fbf Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Don't reject plugin-only qmldir filesUlf Hermann2017-11-222-12/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On QQmlImportsPrivate::updateQmldirContent we need to check if the new module has actually been established after figuring out that it doesn't have any components or scripts. If it has, then we shouldn't fail, as obviously a plugin has been loaded. We don't need to check the component and script versions in that case, as plugins don't have separate versions. Change-Id: Ie328b59038fe65c3f6a2eeecfe969927bba6cd68 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Fix URL interception for qmldir filesUlf Hermann2017-11-223-0/+262
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to intercept the URL when it is created. This relieves us of the need to hack around in it when actually retrieving the content of the qmldir file and prevents the futile attempt to load remote qmldir files via the code path that should load local ones (or vice versa). The back and forth conversion between URLs and strings is unfortunate, but can only be solved by using QUrl rather than QString where we actually mean URL. This would be a bigger change which is unsuitable for 5.9. Mind that nothing changes for code that doesn't use URL interceptors. Task-number: QTBUG-36773 Change-Id: I6bff3ae352009fdc0a17ec209691c7b390367f11 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Blacklist tst_QQmlProfilerService::translationBinding()Liang Qi2018-01-081-0/+3
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-65611 Change-Id: I59fc3dedb74309c3fcf8fb2c685c2dff575d4caf Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Merge "Merge remote-tracking branch 'origin/5.10' into dev" into ↵Liang Qi2018-01-088-1/+106
|\ \ \ | | | | | | | | | | | | refs/staging/dev
| * | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-12-208-1/+106
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/quick/pointerhandlers/flickableinterop/data/FlashAnimation.qml tests/auto/quick/pointerhandlers/flickableinterop/data/Slider.qml tests/auto/quick/pointerhandlers/flickableinterop/data/TapHandlerButton.qml tests/auto/quick/pointerhandlers/flickableinterop/data/flickableWithHandlers.qml tests/auto/quick/pointerhandlers/multipointtoucharea_interop/data/pinchDragMPTA.qml tests/auto/quick/pointerhandlers/qquickdraghandler/data/DragAnywhereSlider.qml tests/auto/quick/pointerhandlers/qquickdraghandler/data/FlashAnimation.qml tests/auto/quick/pointerhandlers/qquickdraghandler/data/Slider.qml tests/auto/quick/pointerhandlers/qquickdraghandler/data/draggables.qml tests/auto/quick/pointerhandlers/qquickdraghandler/data/multipleSliders.qml tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml tests/auto/quick/pointerhandlers/qquicktaphandler/data/FlashAnimation.qml tests/auto/quick/pointerhandlers/qquicktaphandler/data/buttons.qml tests/manual/pointer/content/FakeFlickable.qml tests/manual/pointer/content/FlashAnimation.qml tests/manual/pointer/content/MomentumAnimation.qml tests/manual/pointer/content/MouseAreaButton.qml tests/manual/pointer/content/MouseAreaSlider.qml tests/manual/pointer/content/MptaButton.qml tests/manual/pointer/content/MultiButton.qml tests/manual/pointer/content/ScrollBar.qml tests/manual/pointer/content/Slider.qml tests/manual/pointer/content/TapHandlerButton.qml tests/manual/pointer/fakeFlickable.qml tests/manual/pointer/flickableWithHandlers.qml tests/manual/pointer/flingAnimation.qml tests/manual/pointer/joystick.qml tests/manual/pointer/main.cpp tests/manual/pointer/main.qml tests/manual/pointer/map.qml tests/manual/pointer/map2.qml tests/manual/pointer/mixer.qml tests/manual/pointer/multibuttons.qml tests/manual/pointer/photosurface.qml tests/manual/pointer/pinchDragFlingMPTA.qml tests/manual/pointer/pinchHandler.qml tests/manual/pointer/singlePointHandlerProperties.qml tests/manual/pointer/tapHandler.qml tests/manual/pointer/tapWithModifiers.qml tests/manual/shapestest/main.cpp Change-Id: I4f233a521305fab1ebfecbac801da192434ed524
| | * | Fix issue with circular singleton instantiationsv5.10.0-rc2Michael Brasser2017-11-284-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While a recursion check exists and works, it can lead to instanting the same singleton multiple times (leaking all but one copy). Change-Id: Icf342aad71c5cb225488262341517d95786e1f84 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Prevent crashes when profiling translation bindingsUlf Hermann2017-11-113-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The m_v4Function member can now be a nullptr, which means we cannot use it as ID and we cannot retrieve the source location from it. Change-Id: Ibb49a3e68cf961f9ffe2a83b2a0b83f7d04e149e Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Merge remote-tracking branch 'origin/5.9' into 5.10v5.10.0-beta4Liang Qi2017-11-061-0/+39
| | |\| | | | | | | | | | | | | Change-Id: I8ede7e36592cd21f3e4a0a9b30dbe26bb40fe69b
| | | * QQmlEngineDebugService: Check QML contexts for validityUlf Hermann2017-11-051-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should not operate on invalid QML contexts and once we have established a context to be valid we don't have to check the result of QQmlContextData::get anymore. Change-Id: I9106115ddf925c3572048f1fd334bdfd9a9cfca7 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | Update to new QRandomGenerator APIThiago Macieira2017-11-031-8/+8
| | | | | | | | | | | | | | | | | | | | Change-Id: I69f37f9304f24709a823fffd14e676c097712329 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | | Avoid warning about comparing QVariant::Bool to QMetatype::BoolUlf Hermann2018-01-081-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: Icc2ca6c5cdb259e415abd7a6b43a0e8b0b142af5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | Raise minimum supported MSVC version to 2015Friedemann Kleint2018-01-062-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove code for older versions and streamline #ifdefs. Remove the helpers macros Q_STATIC_ASSERT_FOR_SANE_COMPILERS and V4_ASSERT_IS_TRIVIAL. Task-number: QTBUG-40658 Task-number: QTBUG-51673 Change-Id: Ifa4fab653b10ce7858739adef08364cddc6507cf Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | Fix decoding of bytecode instructions on ARM generated on x86-64Simon Hausmann2018-01-051-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to the difference of sign of the char type, byte code is encoded differently on x86-64 than if it was on ARM and it also is decoded differently. The problem at hand here was that negative jumps were encoded as two-byte instructions (opcode and negative offset as byte) on x86-64 when qmlcachegen is run. At run-time the negative offset was read into a char type and consequently interpreted as a positive jump, leading to crashes. The explicit use of qint8 as signed byte type in encoding/decoding sensitive parts avoids the decoding issue and should also result in consistent encoding. The added auto-test is (among other configurations) run in the CI under qemu, which means the x86-64 host-built qmlcachegen will generate byte code and the tst_qmlcachegen ARM binary will run under qemu and reproduce this scenario. Task-number: QTBUG-65521 Change-Id: I615628f53475dad38a41095c6e7ffea0c34d58ac Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | | Fix failed assertions coming from the QML list modelLars Knoll2017-12-292-6/+4
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QAbstractItemModel has become more strict in sanity checking the arguments of beginInsertRows and friends with change 00c09e752ff7e482e1308e0e34721dc979204595 in qtbase. Unfortunately, the QML list model was feeding it out of bound rows in some cases, leading to failed assertions. Fix this properly, by calculating the inserted/removed and changed rows on the fly when syncing the list model from the worker thread. Adjust the code in the XML list model as well, so it does call things in the proper order. Fix two tests, one for a minimal change in behavior (more correct now), the other to remove an assertion that is not valid anymore in debug builds (where assertions in QtCore will call rowCount()). Change-Id: Ied85269f78d41b64e06388590be3ed227ac88fdb Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | | V4: Only start JITting after a minimum of 3 callsErik Verbruggen2017-12-141-2/+23
| | | | | | | | | | | | | | | | | | Change-Id: I748e06041f3085980ce48391ba2d829a9d86a727 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Fix QJSEngine::evaluate regressionErik Verbruggen2017-12-141-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | The compilation mode used in the evaluate method was changed to eval, breaking existing uses. This patch fixes that. Task-number: QTBUG-65167 Change-Id: I645ad50be36884eb10bf86ecf060b2b62b50f122 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix iterator assignment for for-in loopsErik Verbruggen2017-12-131-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When iterating over an object using an for-in loop, the value for the next iteration should be assigned in the body of the loop. This means that after the loop, the value of the last iteration is still assigned to that variable, not null (which marks the end of the iterable values). Task-number: QTBUG-65104 Change-Id: Icbddbc67723719005120587bcdc63dcdfa52b67f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Update to new QRandomGenerator APIThiago Macieira2017-12-051-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To get latest qtbase dev integrated in qt5 dev again without qtdeclarative 5.10->dev merge. Change-Id: I6905649aca2b06302df8cee2f660f1f92398d36a Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> (cherry picked from commit ee00fa01dc41deaaedfa0d1d5cc6cd750bfe75f4) Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Merge remote-tracking branch 'origin/wip/new-backend' into devSimon Hausmann2017-11-218-83/+88
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4isel_moth.cpp src/qml/compiler/qv4jsir_p.h src/qml/jsruntime/qv4engine_p.h src/qml/jsruntime/qv4vme_moth.cpp tests/auto/qml/qml.pro Change-Id: Ia7b6ec24c7fcbcbb1786d9e798d2df294020ae37
| * | | Temporarily disable the widgetsinqml autotestLars Knoll2017-11-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Requires a fix in qwidget.cpp, so this unblocks CI for now. Change-Id: I2771cbffb3f63f282ad2cc49da6af08e86d72fe0 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | Set Jump locations for loopsUlf Hermann2017-11-081-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't need them for if/else anymore as there are not block terminators anymore. Change-Id: I1ac384e7176cc35faf28028cd274c63dfaa96146 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | V4 debugger: re-enable some more testsUlf Hermann2017-11-081-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | They were fixed by a combination of previous changes. Change-Id: I9551715ff6f149e69b31204f374263c9f4498ed8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | Merge remote-tracking branch 'origin/dev' into new-backendLars Knoll2017-11-0821-45/+308
| |\ \ \ | | | | | | | | | | | | | | | Change-Id: I1a49b4a242ed0764101521d06ec612e96bff0e4c
| * | | | V4 debugger: Fix tests for function expressionsUlf Hermann2017-11-071-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On "function f() {...}", "f" ends up inside the function scope now, so if we want to keep it out, we need to phrase that: "var f = function() {...}" Change-Id: I0c7eba96be5c088c341e0455ff8dbca8dd9c52bc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | Fix evaluation of V4 debug jobsUlf Hermann2017-11-071-13/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There may not be a current stack frame and there may not be a function in either the current frame or the global scope. Change-Id: I15daf10586cf8895a9a80ccc3dd4bf4117a947c5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | V4 Debugger: Allow executing jobs on contexts without v4FunctionUlf Hermann2017-11-071-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously this would crash as it tried to determine strict mode by querying the function. Check the functions of out contexts, too, and finally try the global context if none is found. Change-Id: Ib21c2f4f242a67909944b71640a154ff181c33e1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | Further cleanup JSCallDataLars Knoll2017-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid allocations on the JS stack if possible Change-Id: I344cd6dceb6264314f9d22c94db22b22d1d24d14 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | Simplify JSCallData constructionLars Knoll2017-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ic53532edae9a209aa7125af6f00a9d993d74f1a3 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | Get rid of JSCallData::call()Lars Knoll2017-11-071-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I6b99e9a7102b3dcb6a7699f54b6456eba6248699 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | Rename JSCall to JSCallDataLars Knoll2017-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As, this is going to change in a simple stack based structure to keep pointers to the data to pass to calls. Change-Id: Ia9aa3f81ee3eeba36affd16aac7b2fe97d59aea9 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | Codegen: Set source location for return instructionUlf Hermann2017-11-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need that in order to be able to break on the closing brace of a function. Change-Id: I4049f0553b01442025bda32c34fac6ce3d77246d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | Re-enable Debug instructions and locations for QML functionsUlf Hermann2017-11-062-34/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Debug instructions are used to trigger break points and are added for every source line. We also need to insert Debug instructions before Ret, so that we can step out. We also need to assign line numbers to the entry and return points of "abbreviated" QML functions (by simulating lbrace and rbrace) so that we can set break points on them. The line numbers on Ret need to be negative, so that you cannot (accidentally) set break points on them. A typical signal handler or binding in QML consists of only one line and if you set a break point on that line, you want it to hit only once, when entering the function. If the line numbers on Ret were positive, it would be hit again on exit. Some of the tests in tst_qqmldebugjs implicitly check for that. Also the new interpreter does something on the left brace, so a function actually starts there, not on the first statement. Change-Id: Id9dfb20e35696b420d0950deab988f7cc5197bfc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | Fix JavaScript profilingUlf Hermann2017-11-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The FunctionCallProfiler cannot be temporary, as it should live to the end of the scope. Change-Id: I164d2903cc6070c56bf8fdc4c44009d6c63a870a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | Re-enable tests/auto/qml/debuggerUlf Hermann2017-10-244-4/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enable the tests, make them compile, and QSKIP the ones that don't work for now. Change-Id: Iaa175a8160b219be4054e8b9f7a3edff90f56505 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | | | Never truncate the JS stackLars Knoll2017-10-231-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Truncating it can lead to all sorts of crazy side effects, especially as we'd be extending it again when leaving the function. When that happens already freed JS objects could suddenly become visible to the GC again. Fix this by copying the CallData to set up a new stack frame. This is not yet ideal, as we're copying too much data, but that can be fixed separately. Change-Id: I02a39ce479475bae326f9eddfe6654fbcf8e6d35 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | | | Merge remote-tracking branch 'origin/dev' into HEADLars Knoll2017-10-2232-57/+656
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4codegen.cpp src/qml/compiler/qv4compileddata.cpp src/qml/compiler/qv4compileddata_p.h src/qml/compiler/qv4isel_moth_p.h src/qml/compiler/qv4ssa.cpp src/qml/jit/qv4assembler_p.h src/qml/jit/qv4isel_masm_p.h src/qml/jit/qv4regalloc.cpp src/qml/jsruntime/qv4engine.cpp src/qml/jsruntime/qv4qmlcontext_p.h src/qml/jsruntime/qv4regexp.cpp src/qml/jsruntime/qv4regexp_p.h src/qml/jsruntime/qv4regexpobject.cpp src/qml/jsruntime/qv4runtime.cpp src/qml/jsruntime/qv4vme_moth.cpp src/qml/qml/v8/qqmlbuiltinfunctions.cpp tests/auto/qml/qml.pro tests/auto/qml/qmlplugindump/tst_qmlplugindump.cpp tools/qmlcachegen/qmlcachegen.cpp Change-Id: I1577e195c736f3414089036b957a01cb91a3ca23
| * | | | | Fix delayed loading of arguments in binary expressionsErik Verbruggen2017-09-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following functions: function f(x) { return x + (++x) } function g(x) { return x + x } In f() it is not correct to delay the load of x on the left-hand side of the + operator, while in g() it is. The reason is that calculating the right-hand side of the + operator in f() will change the value of x. So, if an argument is written to in an expression in a statement, it cannot be delay-loaded. The same is true for member/field accesses, because the accessors can be overwritten and do anything. Change-Id: I5bed4b0d03919edc1c94a82127e2dd705fc1d9b1 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | | | Merge remote-tracking branch 'origin/dev' into wip/new-backendSimon Hausmann2017-09-0825-276/+569
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4isel_moth.cpp src/qml/compiler/qv4jsir.cpp src/qml/jsruntime/qv4mathobject.cpp Change-Id: I426f1f4f0a5302b5bcff021de11766a03fec7637
| * | | | | | Make tst_qmlplugindump run with shadow buildsErik Verbruggen2017-09-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I37914e0bcabd36e4974fd1e27001c3405d5e4cd9 Reviewed-by: Marco Benelli <marco.benelli@qt.io>
| * | | | | | Fix function offset check in compiled data cached on diskErik Verbruggen2017-09-081-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code for a function are now stored inline to the function, so the previous offsets were bogus. Change-Id: Ia8f28e56116bd9bcce1c5619e45af866f1bbf5e4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | | | | Always set the correct FunctionObject when calling JS functionsLars Knoll2017-09-021-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Renamed ScopedCallData to JSCall, enforced passing a JS FunctionObject to it, and added call() and callAsConstructor() methods to it. Change-Id: I30db65c9765c2896b5909fe2105c0934c6dad861 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | | | | Move ScopedCallData and ScopedStackFrame into a separate fileLars Knoll2017-09-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I9ae42aa7a811aa93fe0950725e9d253a0c5e8dba Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>