MER: Fix memory corruption bug

(This patch can be removed when QTBUG-37834 is addressed upstream)

In QQmlData::destroyed(), release the compiledData after
destroying the context instead of before. The context
contains bindings which may contain references to the
compiledData. (At least with V4 bindings)

This might cause heap corruption in QV4Bindings::Binding::disconnect()
because it uses values from 'program' (one of the datas[] values
from a QQmlCompiledData) to possibly modify memory via sub->setActive().

The reads from a freed program are easily reproduced (just start
an app under lipstick and then close it; detected with valgrind).
I haven't witnessed any heap corruption from this but it may be
behind the occasional crashes of lipstick.
(cherry picked from commit 3cfbd9d3176cbbc95bdbe3712f4accdc1485ed55)
Revert "Squashed commit of the following:"

This reverts commit 69b5f133c52b0de0de3aba0bed6d727b5b3db00a.

This broke boosted applications.
Revert "Revert "Squashed commit of the following:""

This reverts commit 656155db64eeb770bd929338ef5416b96ca79a13.
Destroy render loop when QCoreApplication is cleaned up.

Doing it on 'aboutToQuit' meant we would clean it up whenever an
application ran QCoreApp::exec() which could be multiple times
per application run.

Change-Id: I59e06398a551ae7979e3832dff811937037fa106
Don't crash when render node doesn't have a batchroot

Change-Id: Ib8f70414eb477b4ec45097c8784a5fe1375cf012
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>

Conflicts:
	src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
Merge pull request #8 from sletta/rendernode-crash

[qtdeclarative] Don't crash when render node doesn't have a batchroot
Merge pull request #7 from sletta/next

[qtdeclarative] Revive previous revert and fix startup problems.
MER: Add systrace support.

Not upstreamable, just like the parent feature (systrace support) isn't.
QQuickPinchArea: Don't jump around when a finger is lifted.

Done-with: Martin Jones <martin.jones@jollamobile.com>
Build V4 with JIT, thanks to thumb.
Don't start continuing animation when it doesn't have children.

If we did, it would never stop.

Change-Id: Ie9d8f1731f6fa555f8dd6a56d6967a8f8f19a9f4
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Stop the animation driver when no animations are ticking.

When animations were registered we made a queued connection to
'startAnimations' to start the animation driver and also set the
'startAnimationPending' state to true. In 'stopTimer' we aborted
if 'startAnimationPending' was true, presumeably to avoid stopping
just to restart shortly after.

However, if an animation is registered which triggers the invoke
and then is immediately removed again, 'startAnimationPending' will
be true with no pending animations at the time of 'stopTimer'. As
a result, the driver would not stop and the system would continue
animating and trying to render.

Change-Id: Icbb01d7129c3a1bddef08a9f2a7aee957e3d2909
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Merge pull request #10 from sletta/runaway-animations

[qtdeclarative] Runaway animation fixes.
Fix memory corruption in XHR implementation

Now that the member data of Object is also on the GC heap, it is even more
important to call the base implementation of markObjects when re-implementing
it ;-)

Fixes also three XHR auto tests (text, cdata and stateChangeCallingContext)

Change-Id: Ifd033cac64a8cf27a9186d8cd9eb94369d8a60a5
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Fix marking of prototype objects in chain

With a real prototype chain it can happen that an internal class' prototype's
class itself has a prototype. Therefore the first transition on the empty class
is a PrototypeChange one, but the class the transition leads to may have
PrototypeChange transitions itself, which weren't marked.

There are multiple solutions to this, but this patch is the minimal fix by
recursing fully through the internal class tree. That way it's easier to
back-port the fix also into 5.2.x based branches.

Task-number: QTBUG-37834

Change-Id: I901b13a2663fbad5844003ca5752f2f304de320c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>

Conflicts:
	tests/auto/qml/qjsengine/tst_qjsengine.cpp
Fix wrong register usage for integer binops

When doing of integers where we use a three argument variant of masm
(lhs/rhs/target), we need three general purpose registers. If the target temp
of the binop is a register, we use that as a target, otherwise fall back to
ReturnValueRegister (scratch). In that case we don't need to move from RVR to
target register. Additionally we need to load lhs and rhs into registers, and
for the lhs we use the target register and for the rhs the scratch register.

So we start by loading the lhs into the target register and the rhs into
the scratch register. However if the rhs is already assigned to a register
and that register happens to be the target register, then the earlier load
of the lhs into the target register overwrote our rhs!

This is fixed by being more careful in the choice of the target temp's assigned
register as "scratch" register for the lhs, i.e. don't use it if the target
temp is also assigned to the same register as the rhs.

Task-number: QTBUG-38097
Change-Id: I2ffec55cb98818fa9ebb5a76a32b6dca72175893
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Remove an extra % that caused failed builds on non-ARM.
Compress touch events in QQuickWindow.

Instead of sending multiple touch updates per frame, we
store the last one and flush the pending events just before
we enter into the scene graph sync phase.

Done-with: Robin Burchell <robin.burchell@jollamobile.com>
Change-Id: Ia0169bc4a3f0da67709b91ca65c326934b55d372
Fix crash when accessing var properties in objects with invalid context

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 <albert.astals@canonical.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fix crash when appending arrays to sub models in list models

The elements are still inaccessible, but at least it doesn't crash. This is
consistent with the behavior in Qt 5.0, where it didn't crash because the v8
object handle returned an empty array for the property names because the
individual array element wasn't an object.

Bug QTBUG-12117 tracks support for arrays in list models.

Task-number: QTBUG-35891
Change-Id: Ief446341344977a1473bca474ca5ba934e950468
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>