aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* V4: Add int32 fastpath for add/sub/mul in the JITwip/new-backendErik Verbruggen2017-11-212-36/+88
| | | | | Change-Id: I21b0e31c7c93ae51b4ab406948450e566546e246 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* V4: Shorten code by introducing an IntegerTag constantErik Verbruggen2017-11-181-13/+15
| | | | | Change-Id: If8f9bee79def412a16c163099705329a6860f752 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* V4: Add a baseline JITErik Verbruggen2017-11-1716-12/+3823
| | | | | | | | This patch add a JIT back in for all platforms that supported JITting before, with the exception of MIPS. Change-Id: I51bc5ce3a2ac40e0510bd72a563af897c5b60343 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* V4: Remove left-overs from previous 32bit Value encodingErik Verbruggen2017-11-161-29/+0
| | | | | Change-Id: I0eb3300ac2e3e29b5311f9b7599d85eab7f775c5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Optimize Value::toObject/toStringLars Knoll2017-11-152-4/+4
| | | | | Change-Id: Iccfe50c967560deee9e2903bbe3a293b13fe8b48 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Fixup nInlinePropsLars Knoll2017-11-151-0/+2
| | | | | Change-Id: Ie8f162366ea5fa2d3100930e5ca9a6831e121a94 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Speed up Object::internalGet()Lars Knoll2017-11-151-4/+3
| | | | | | | There's no need for a scope here. Change-Id: I7e4ed199df632293b6a010c1fa7662a5446b73ee Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Allow tuning the amount of inline properties per object typeLars Knoll2017-11-153-1/+6
| | | | | | | | | Different JS objects need different amount of properties by default. Tune the amount of inline properties we pre-allocate by what's usually needed for the object. Change-Id: I2703d123939f9b7e3a06531361cbb6a3a3c04944 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Don't create a CallContext if arguments are being used in strict modeLars Knoll2017-11-153-4/+4
| | | | | | | The strict arguments object doesn't need a callcontext. Change-Id: I1d6419c456b28741167f76937906faffd2d5d3b4 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Don't copy unnamed arguments onto the JS stackLars Knoll2017-11-153-9/+16
| | | | | | | | | These can only be referenced through the arguments objects, and have so far messed up initialization of local variables. Change-Id: I3100520ed55c93204dd7953da8cc3d2b7d200d11 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* V4: Get rid of Reference::This and treat it as a stack slotErik Verbruggen2017-11-142-14/+2
| | | | | | | | | | | | | | This actually generates better code, for example for 'this.x'. Previously: LoadReg (this) GetLookupA acc(0) Now: GetLookup (this)(0) Change-Id: I7e4125d3dff707e9af9691f8b00c5c398087e395 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* V4: Tweak JumpTrue/JumpFalse interpreter instructionsErik Verbruggen2017-11-141-8/+14
| | | | | | | | | For JumpTrue, when the accumulator held false/0, the Value::toBoolean method would be called even though the value was already a boolean. The same for JumpFalse and a true value. Change-Id: I0d0e8b9d090dcd4fb69ec9df4f60ed37cfce32ba Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Clean up ArgumentsObject handlingLars Knoll2017-11-146-32/+55
| | | | | | | Introduce a proper strict arguments object. Change-Id: Ie4e7f904b3a0e03893b18b3c6709f4f25dbc1030 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Allow for encoding a nullptr Heap::Base as a ValueErik Verbruggen2017-11-141-1/+0
| | | | | | | The encoding will end up being the same as undefined. Change-Id: I2427e96f98d410c291234615969791de6bf4f833 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Avoid marking on simple array data'sLars Knoll2017-11-144-4/+27
| | | | | | | Speeds up things by 2-3%. Change-Id: Ib17ab126cf91ce48a0ced7dd7b06c4f7f0a70a3b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Simplify inline gettersLars Knoll2017-11-143-13/+20
| | | | | | | Precalculate the offset inside the object. Change-Id: I61faf463677fe9602fe235a39dcf9e16c5d013cd Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Bring back markObjects(), this time generatedLars Knoll2017-11-1433-191/+151
| | | | | | | | Doing the marking of objects in a function instead of using the table seems to be somewhat faster. Change-Id: I9ec00cc0264f9a15c69b285db493bee31d99bf96 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Get rid of the last usage of the V4_OBJECT macroLars Knoll2017-11-142-27/+15
| | | | | | | It's been deprecated for quite a long time. Change-Id: I075f8c0204edbadb7430ca6e380b2760e1775b4e Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* 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>
* Convert methods of Error to new calling conventionLars Knoll2017-11-132-6/+6
| | | | | Change-Id: I1012e5b2f7ebac32de50b7bafe8394060fe6aa86 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert TypedArray and friends to new calling conventionLars Knoll2017-11-136-94/+93
| | | | | Change-Id: Ia532b98738edb1bcc3fa5b81456763f2ec49952a Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert more builtin methods to new calling conventionLars Knoll2017-11-134-53/+53
| | | | | | | | Convert the methods of the global object and the remaining methods in in the Function object. Change-Id: I7c9a5f39b07f9c9cb0f31e83cdf41fade71a7dc5 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert Date methods to new calling conventionLars Knoll2017-11-133-210/+205
| | | | | Change-Id: I5b80eb9d9f18b113a04461fc8b5217a3695269a4 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert methods of Number to new calling conventionLars Knoll2017-11-133-52/+52
| | | | | Change-Id: Ib4eea41bbf6db6ad555daae357c7010c736bbd50 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert String methods to new calling conventionLars Knoll2017-11-133-165/+149
| | | | | Change-Id: I6de932817fc26c7a35b004926cd3ca84e42272ad Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert methods of RegExp to new calling conventionLars Knoll2017-11-135-33/+57
| | | | | Change-Id: Ie364357b5e1ecf09eb264181e11b0247b07fad6c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert methods of BooleanObject to new calling conventionLars Knoll2017-11-132-19/+28
| | | | | Change-Id: I8677025b26a77109d2c60601d25980c8d065b21c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert methods of Array to new calling conventionLars Knoll2017-11-132-200/+185
| | | | | Change-Id: Iaac17004f36a20099bdebaca23d0d310191c2acc Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert runtime methods of Object to new calling conventionLars Knoll2017-11-133-124/+146
| | | | | Change-Id: Ic34164af0ad86347a791a56a438a71d458f198a4 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert Math object's methods to new calling conventionLars Knoll2017-11-132-63/+63
| | | | | | | Makes e.g. calls to Math.abs() around 20% faster. Change-Id: I11b52e3c8693675defbc6f230db896c42acca15d Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Inline Runtime::method_instanceOf into the VMELars Knoll2017-11-131-2/+9
| | | | | | | Seems to give some slight performance improvements Change-Id: I8740ec25b373caab187d0874f5d4403bcb001d0f Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Convert Array.push/pop to new calling conventionLars Knoll2017-11-132-15/+15
| | | | | Change-Id: Id2c53adf56dff308f3953e4cea17b04f842bb2ff Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Introduce new calling convention for builtin functionsLars Knoll2017-11-134-54/+91
| | | | | | | And implement Function.apply()/call() with it. Change-Id: I028c82d5f9adfd23328d669db1adccec9de5824c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Cut out one more C++ layer when doing JS function callsLars Knoll2017-11-137-80/+74
| | | | | Change-Id: I0e2ac30b7e6d77fe41deb84a97b0a7f220437c6a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Inline callValue and callPropertyLookupLars Knoll2017-11-131-2/+16
| | | | | Change-Id: I782fe0ca325dd5b0e35d9a980f531cf12bce6269 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Finally get rid of the QV4::Function pointer in the contextLars Knoll2017-11-1311-94/+24
| | | | | Change-Id: Iad6018f67faa956d385087865fca9d73419e363e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Set Jump locations for loopsUlf Hermann2017-11-082-6/+32
| | | | | | | | 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>
* Fastpath any integer compatible value in add/sub/mulErik Verbruggen2017-11-081-3/+3
| | | | | Change-Id: Idc0a272e6ee0ae032f9ff1b492e0b5e777ae5f9d 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-081144-3967/+15937
|\ | | | | | | Change-Id: I1a49b4a242ed0764101521d06ec612e96bff0e4c
| * Add new PathAngleArc typeMichael Brasser2017-11-078-15/+339
| | | | | | | | | | | | | | | | | | | | | | | | | | This type allows working with arcs in different ways (based on angles rather than start/end positions) that can be more intuitive for certain use cases (such as a circular progress indicator). [ChangeLog][QtQuick][Path] Add new PathAngleArc type Change-Id: Icbe5fc0450edd9a4d92f9a8d03438842b72a312d Task-number: QTBUG-62684 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| * Temporarily remove dependency on qml-debug featureUlf Hermann2017-11-071-1/+0
| | | | | | | | | | | | | | | | This is so that we can integrate a qt5.git without that feature, before pushing another change that re-adds it to qtdeclarative. Change-Id: I648f368893927fabc80a12494d039609060b03f6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-061097-3842/+15349
| |\ | | | | | | | | | Change-Id: I1ed923d72566af663555898c3ec708191eef8ae9
| | * Fix a bug with TapHandler+DragHandler on top of FlickableJan Arve Sæther2017-10-274-17/+188
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If an item that had a TapHandler and a DragHandler was placed inside a Flickable it would call sendFilteredPointerEvent() for each of the handlers, even if they were siblings. This is not ideal, and because of a mechanism in flickable it even caused the DragHandler to not drag the item as expected. This is because of a mechanism in Flickable where the value returned is actually derived from the previous call to filterMouseEvent() (stored in member variable stealGrab). Below are the relevant steps it went through when the mouse drag exceeded the drag threshold (mouse pointer started on the item): Precondition: QQuickFlickablePrivate::stealMouse == false 1. Mouse Drag (which exceeded drag threshold) 2. sendFilteredPointerEvent(tapHandler->parentItem()) returns false. (but since it moved beyond threshold, it would set stealGrab-> true). 3. tapHandler->handlePointerEvent() declined and ungrabbed (due to DragThreshold gesture policy). 4. sendFilteredPointerEvent(dragHandler->parentItem()) returns true (because the previous call to sendFilteredPointerEvent() set stealGrab to true). As a consequence of (4), dragHandler->handlePointerEvent() was not called, and the flickable would start to flick instead of the item starting to drag. Change-Id: Ia99eae91cad0903ebbaedaaafcdf92a25705a922 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Fix Logically dead codeJesus Fernandez2017-10-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The indicated dead code may have performed some action; that action will never occur. In QQuickPointerHandler::onGrabChanged(QQuickPointerHandler *, QQuickEventPoint::GrabState, QQuickEventPoint *): Code can never be reached because of a logical contradiction Coverity-Id: 182646 Change-Id: Ic3ccffddf3052337d22d5dd7fabb8bfa7af35dbe Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| | * Merge remote-tracking branch 'origin/5.9' into 5.10v5.10.0-beta3Liang Qi2017-10-258-34/+54
| | |\ | | | | | | | | | | | | Change-Id: Ie5d0b2d9bece98553262f8af1ce66459f03a73e1
| | | * Minor documentation improvements for Matrix4x4Michael Brasser2017-10-242-0/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: I5340dfb214de63ad848b2c9c322c89a19b770fc2 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | | * Return "qnx" for Qt.platform.os when appropriateLiang Qi2017-10-242-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQml] Qt.platform.os returns "qnx" when running on QNX platforms. Task-number: QTBUG-52515 Change-Id: Ie46f235248f7832fff12906cf858e8527e8060b1 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| | | * QQuickAnimatorProxyJob: Disconnect from window when unsetting itUlf Hermann2017-10-242-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise we may get called back when the window's scene graph is ready, but we don't have a controller anymore then. This leads to a crash. Change-Id: I8075619e1fd3c69ca0f7d0b1d72952b8cc5040f8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | | * skip part of tst_qquickwindow::testWindowVisibilityOrder on UnityShawn Rutledge2017-10-231-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's flaky: on the CI machines, the first three windows are shown stacked on top of each other, and none of them has focus, because the terminal which is running the tests continues to have focus. If this happened to a user, he would just click in whichever window he wants to have focus. (Good thing it's visible, at least.) So this looks like broken window manager behavior. Ubuntu will switch to Gnome soon anyway; then maybe the behavior will be different. Task-number: QTBUG-62604 Change-Id: Id0db8a61e8335e7f591a38e07c488c055b236239 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>