Simon Hausmann [Fri, 20 Sep 2013 10:09:04 +0000 (12:09 +0200)]
[new compiler] Fix scope object for binding expressions in signal handlers of attached objects
In populateInstance the QObject instance to populate with properties, etc. may
not necessarily be the scope object (in qml lookup terms), so it needs to be provided
as a separate parameter.
Change-Id: I05db123c249e8582469bcfb76f56eb3f7bfbc4a2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Thu, 19 Sep 2013 07:32:42 +0000 (09:32 +0200)]
Fix destruction of QV4::CompiledData::CompilationUnit objects
Now that we store them per QML file, they live in the type cache and
can outlive the engine. Therefore the engine needs to free to unlink
any remaining units upon destruction. This needs to be done after the
"death" of the memory manager, which is likely to sweep away any
function objects that also hold a reference to the compilation units.
Change-Id: I3968d5995289e8d2bc1e3abbb1f8be88a0ab4e03
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Thu, 19 Sep 2013 05:18:42 +0000 (07:18 +0200)]
[new compiler] Implement dependency type availability checking
Change-Id: I9c2c69dbf88574cbce85898b2b54654445cdb552
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Wed, 18 Sep 2013 19:41:24 +0000 (21:41 +0200)]
[new compiler] Fix crash with non-existent attached property objects
Produce an error message as expected by auto-tests.
Change-Id: I28caf2ac20692e2e3b055a61289bb02372047a65
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Wed, 18 Sep 2013 19:37:35 +0000 (21:37 +0200)]
[new compiler] Fix crash with empty function bodies
Change defineFunction back to taking AST::SourceElements for the body (how it
was originally)
Then in the new compiler, do the same "function->body ? function->body->elements
: 0" dance for function expressions and for binding expressions, synthesize the
AST::SourceElements.
Change-Id: Iaedb15925a6bb8482cde2b371a6e781477252435
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Wed, 18 Sep 2013 19:33:55 +0000 (21:33 +0200)]
[new compiler] Fix off-by-a-few in meta object creator
When reserving space for the methods, properties and signals, take into account
that each property for example also adds a notify signal. The calculation is
the same as in the older compiler.
Change-Id: I84f38d7c3016261a844d188978428ed021e7f9b8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Wed, 18 Sep 2013 19:13:03 +0000 (21:13 +0200)]
Allow delayed deallocation in the executable memory allocator
Allow for allocations to outlive the allocator itself. When the allocator dies,
it invalidates any remaining non-free allocations, making them safe to delete
later.
Change-Id: I6c71cddbbd5dcaff1ad50f3991a3c710d4f96737
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 20 Sep 2013 08:11:54 +0000 (10:11 +0200)]
[new compiler] Correctly handle attempts to set invalid group properties
Don't crash, bail out with an error message (expected by tst_qqmllanguage)
Change-Id: I357281d009d92c4b0248ba648c88e20334aabb5b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 20 Sep 2013 08:10:30 +0000 (10:10 +0200)]
Fix crash in QV4::CompiledData::CompilationUnit
Don't crash when a CompilationUnit is created, never linked into an engine but instead
deleted (because there was an error elsewhere compililing the rest of QML
before it could reach the link-to-engine stage)
Change-Id: Iff535009b6b4d1fc4004987c98730251a3a7d8d8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Wed, 18 Sep 2013 14:02:05 +0000 (16:02 +0200)]
[new compiler] Initial support for composite types
Change-Id: I01030814a978d8a52a086b0389fe62af42a4bbba
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 15:27:07 +0000 (17:27 +0200)]
[new compiler] Initial support for components
We use a dedicated pass through the objects in QV4::CompiledData::QmlUnit to determine
which objects are QQmlComponents. We remember their object indices as well as to which
component other objects belong to (if any).
Change-Id: I97929c57e2ccb2fd380d612002d128359c4bc253
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 15:23:49 +0000 (17:23 +0200)]
[new compiler] Improve error handling and sanity checking for object ids
Disallow properties called id.foo.bar as well as id: Object {}
Change-Id: I3e31875a5863b5b4d4f9f7dd6c74d337eea3dfb2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 15:21:11 +0000 (17:21 +0200)]
[new compiler] Fix id parsing
id: foo;
produces a statement on the right hand side that includes the semicolon.
Strip it off - reduce expression statements similar to setBindingValue.
Change-Id: I22a02ce364a309b4364476166402f8284e01ef98
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 13:55:39 +0000 (15:55 +0200)]
[new compiler] Fix function-local variable declarations
Make sure to call defineFunction with FunctionCode as compile mode when
compiling functions or signal handler functions, to assign an index to local
variables.
Change-Id: I8948840dba68ce6293a87c55d3386df69d5f6a5c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 10:47:47 +0000 (12:47 +0200)]
[new compiler] Cleanups
Collect code for collecting errors and string access for different compile
passes (vme creation, qobject creation) in a QQmlCompilePass base class.
Change-Id: Ib2119e730ce7d3181599ba29da12273f041f2b70
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 07:59:10 +0000 (09:59 +0200)]
[new compiler] Cleanups
Make the v4 context to use for binding expressions/functions/signal handlers
a member variable instead of a function parameter, as it doesn't change
frequently.
Change-Id: I8a73bbc3f37c116d29172d5c935c66ecf2f67a38
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 16 Sep 2013 15:25:53 +0000 (17:25 +0200)]
[new compiler] Finish support for initializing list properties
Setting a value on a list property is always just appending to the list instead
of replacing it. Based on that, initializing list properties with multiple
items is done with one binding per item to the same list property. So
myList: [ Item{}, Item{} ]
is mapped to
myList: Item {}
myList: Item {}
Change-Id: Iadc048ab3a8d73ac824aa6b2ae5dec33731fa362
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 16 Sep 2013 15:01:40 +0000 (17:01 +0200)]
[new compiler] Add initial support for assigning single objects to list properties
Just like in the old VME, setting a value to a list property appends instead of
replacing.
Change-Id: Ie70bf45c6badba6cac09248dc2e41ec6a6a7538b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 16 Sep 2013 13:59:22 +0000 (15:59 +0200)]
[new compiler] Implement setting object properties
This includes assigning to interface properties, variants that hold QObject
pointers and regular QObject <> QObject assignments (assuming that they are
compatible)
Change-Id: Icd82c672e6899c6bfeb7f0ec758a81f8b70275ab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 16 Sep 2013 12:38:58 +0000 (14:38 +0200)]
[new compiler] Cleanup attached and group property determination
Determine when a qualified identifier signifies an attached property or a group
property in one place and set the Binding::Type accordingly.
This simplifies the object builder code, too.
Change-Id: I9f572441e9b5b43338752b848649fbd507cabe4c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 16 Sep 2013 12:47:12 +0000 (14:47 +0200)]
[new compiler] Fix timing of binding enabling
Enabling bindings right before emitting Component.onComplete
Change-Id: I4cc330f5e59b326368c617f16a7d4fd51b6c50db
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 16 Sep 2013 10:17:01 +0000 (12:17 +0200)]
[new compiler] Implement remaining literal binding value assignments
Ported over the code from genLiteralAssignment and testLiteralAssignment
to converting the AST type (string, bool, number) to the expected property
meta-type.
Change-Id: I709b97efdd741dbc4217ee0b9712de58dd32b82d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 13 Sep 2013 14:39:00 +0000 (16:39 +0200)]
[new compiler] Initial support for attached properties
Attached properties are implemented similarly to group properties, except that
the object operated on isn't a QQmlValueType from a property (i.e. font) but the
QObject that implements the attached properties.
Change-Id: If73751162c191c65512ca1bddadd6270e6e33793
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Sat, 14 Sep 2013 12:41:18 +0000 (14:41 +0200)]
[new compiler] Add support for finalization callbacks
This is needed for Component.onCompleted (the signal emission) as well
as the private finalization callback API in QQmlEngine, used by QtQuick.
The creator - similar to the VME - tracks the attached properties object
of QQmlComponent through a linked list.
Change-Id: I8ada94009a7ce2078feefd359485657626c300fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 13 Sep 2013 13:03:51 +0000 (15:03 +0200)]
[new compiler] Initial implementation of signal handler support
Signal handlers start out in the parser as binding expressions. A new
SignalHandlerConverter converts the bindings then so that the expression is
turned into a function declaration where the function parameters match the
parameters of the signal.
Change-Id: I3ea5aa3b80a6ee3b095c6841c63c3e3bb0b47e4f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 13 Sep 2013 13:22:54 +0000 (15:22 +0200)]
[new compiler] Avoid type reference lookups with empty strings
For example when declaring
signal mySignal(string blah)
then we don't need to try to "resolve" the type "string".
Change-Id: I80924ebf244c6b8e2827d19f9c78faf93031fe15
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 13 Sep 2013 11:43:15 +0000 (13:43 +0200)]
[new compiler] Fix function and binding expression setup
Binding expressions and QML used to be set up so that they were written
as function closure:
(function(...) {
expression here
})
and then evaluated inside qml scope. With the new setup we do that closure
setup manually now.
For that we have to define a dummy outter "context scope" function in the
codegen, that will later be used to look up the context ids.
Change-Id: I0656419d67a1728451fcd46f402b03979f118b0b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 13 Sep 2013 07:08:41 +0000 (09:08 +0200)]
Cleanup: Fold CompiledData::Value into CompiledData::Binding
Value isn't needed anywhere else
Change-Id: Ib12d85332a6096e6232a790a7e6fd63961329e3b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Thu, 12 Sep 2013 14:53:32 +0000 (16:53 +0200)]
[new compiler] Add support for id properties
Change-Id: Idb4a0ad06f6cbe5d040da075a8f43d067a27ebc4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Thu, 12 Sep 2013 12:43:56 +0000 (14:43 +0200)]
[new compiler] Initial support for group properties
This implements support for "font.pixelSize: 24" for example. The representation
in the compile data structure is so that font.pixelSize is short-hand for
font {
pixelSize: 24
}
which means that inside the braces is a complete object initializer. For that
initializer we create a dedicated CompiledData::Object, which however has its
type name empty. When populating the outer instance then, the "font" property
is read as QQmlValueType (a QObject) and instead of creating a new QObject we
use that value type as instance to run the rest of the QML object initializer
(everything in braces).
Change-Id: Ic0a37ac77ab88f582546b9c09a3d06a07726420b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 20 Sep 2013 06:21:42 +0000 (08:21 +0200)]
Merge branch 'dev' of ssh://codereview.qt-project.org/qt/qtdeclarative into HEAD
Conflicts:
src/qml/compiler/qv4isel_masm.cpp
src/qml/jsruntime/qv4script.cpp
src/qml/qml/qml.pri
src/qml/qml/qqmltypeloader_p.h
Change-Id: Ia784d855a2131e3289454f12d841ca2c65be15c1
Lars Knoll [Thu, 19 Sep 2013 17:11:27 +0000 (19:11 +0200)]
Disable gui tests on Mac for now
Qt base is still broken on the mac, leading to random
crashes in UI tests.
Change-Id: If636c44169c2386ea2f49d7936ef8d6fe1488537
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Alan Alpert [Fri, 17 May 2013 22:32:19 +0000 (15:32 -0700)]
Add qmlProtectModule
A C++ analog to the protected qmldir syntax, this is also a potential
performance improvement because we can avoid some file system accesses.
Change-Id: I41781a6cc72aa65bd2d397800345ea16ef442e90
Reviewed-by: Antti Piira <apiira@blackberry.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Mitch Curtis [Tue, 17 Sep 2013 11:31:02 +0000 (13:31 +0200)]
Register Locale object in the QtQml namespace.
It was previously registered with QtQuick, which meant QtQuick had to
be imported in order to use Locale; a basic QML object.
Task-number: QTBUG-32505
Change-Id: I9d49cc0d87c0fae07b46885fcdec4f27fb0e0708
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Alan Alpert [Fri, 5 Jul 2013 21:31:06 +0000 (14:31 -0700)]
Apply file selectors to QQmlApplicationEngine apps
You can also manually apply them to a QQmlEngine using
setUrlInterceptor(new QQmlFileSelector(parent)), or using
your own QQmlAbstractUrlInterceptor subclass.
Change-Id: I0c0ff8b080c138686b3c03e0bc3b9f25bcd11a85
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fawzi Mohamed [Mon, 10 Jun 2013 09:16:38 +0000 (11:16 +0200)]
qmlplugindump: adding verbose output for the instantiation operations
Change-Id: Ic18d85de92f05c01b6ce00b071ef9b94d878434f
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
Aurindam Jana [Tue, 10 Sep 2013 15:32:00 +0000 (17:32 +0200)]
QmlDebugging: Process commands in v4DebugService
Change-Id: I6371db756f72ee373884268fc49a5b16cb66fd34
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Aurindam Jana [Tue, 10 Sep 2013 14:57:45 +0000 (16:57 +0200)]
QmlDebugging: Replace QV8DebugService with QV4DebugService
Change-Id: Ic8c99e3984d9ef6d122f7d8834df97eeb1f1fda3
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Aurindam Jana [Tue, 10 Sep 2013 14:47:14 +0000 (16:47 +0200)]
QmlDebugging: Add v4DebugService
Initial checkin
Change-Id: Id38166bcc4a63e0543033d25515a135ad492ee2e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Sergio Ahumada [Thu, 19 Sep 2013 15:38:18 +0000 (17:38 +0200)]
Merge "Merge branch 'stable' into dev" into refs/staging/dev
Sergio Ahumada [Thu, 19 Sep 2013 13:50:28 +0000 (15:50 +0200)]
Merge branch 'stable' into dev
Conflicts:
src/qml/qml/v8/qqmlbuiltinfunctions.cpp
tests/auto/qml/qml.pro
Change-Id: Ib373aed6a8f8df9521740fb5b080daed38546cd2
Shawn Rutledge [Mon, 26 Aug 2013 08:31:54 +0000 (10:31 +0200)]
Adding QtQuick.Dialogs.MessageDialog
Change-Id: Ifa3de21e6f611c24742118d6d178edbe14f243be
Reviewed-by: Liang Qi <liang.qi@digia.com>
Gunnar Sletta [Wed, 18 Sep 2013 08:48:41 +0000 (10:48 +0200)]
Fix zero pointer access in renderer.
Change-Id: I185af453684c7223c0c9de103eb707d4918b8ae0
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Alan Alpert [Tue, 17 Sep 2013 04:47:37 +0000 (21:47 -0700)]
Make QQmlAbstractUrlInterceptor public
A supporting class for file selectors and qml import control, it allows
redirecting local file paths (use a QNAM for remote paths).
All work was done previously for Qt 5.1, including tests. This is just
making it public for Qt 5.2.
Change-Id: Icb319cc23200541c8e4088b2d400e9af94f3eee5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Liang Qi [Wed, 11 Sep 2013 05:22:08 +0000 (07:22 +0200)]
Add FontDialog to QtQuick.Dialogs
As with FileDialog, it tries QPA, then QFontDialog, and falls back to
a QML implementation (which is also provided here) if neither type of
native dialog is available.
The update of plugins.qmltypes files will be in a separate commit.
Task-number: QTBUG-31852
Done-with: Shawn Rutledge <shawn.rutledge@digia.com>
Change-Id: I066ebbcf44c413af26020ddf8414252b99f5218b
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Caroline Chao [Wed, 18 Sep 2013 09:25:45 +0000 (11:25 +0200)]
qmlplugindump: Update the description for the generated file
The full command was written in the generated file including
the full path to the qmlplugindump tool.
Now only the tool name without its full path will be
printed with the adjacent arguments.
Change-Id: I03aa7350d1cd6b96ce00341796f8944669989793
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Caroline Chao [Wed, 18 Sep 2013 09:18:31 +0000 (11:18 +0200)]
qmlplugindump: Add --defaultplatform argument
QT_QPA_PLATFORM is set to minimal by default unless
--defaultplatform is set when running the qmlplugindump tool.
This is for example useful for the QtQuick.Dialogs module.
Change-Id: I1194526ee0641d11802c4db20bd3043aebd1e261
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Caroline Chao [Wed, 18 Sep 2013 07:32:45 +0000 (09:32 +0200)]
qmlplugindump: QMetaMethod signals have public access
Since
56bbf3c2d5b31142e5a1b872a0118479edcf874b (qtbase)
So public signals must be dumped.
Change-Id: Ic7047660fbac40f78c7a205e760c059256c71d6f
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Shawn Rutledge [Wed, 4 Sep 2013 11:18:40 +0000 (13:18 +0200)]
rerun qmlplugindump for QtQuick.Dialogs, now including QML types
Task-number: QTBUG-33106
Change-Id: Ib2ee0563f423bf7fe1d5990c621c46950f81516a
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Liang Qi <liang.qi@digia.com>
Simon Hausmann [Tue, 17 Sep 2013 08:31:10 +0000 (10:31 +0200)]
Android: Fix compilation when doing ARM builds
Clean up the code to determine when to _disable_ the JIT and add
Android to that list when targeting ARMv5 (dubbed armeabi as opposed
to armeabi-v7a)
Task-number: QTBUG-33507
Change-Id: Id78e08e888df8f8075d5655e15bb754cede70638
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Lars Knoll [Wed, 18 Sep 2013 11:29:38 +0000 (13:29 +0200)]
Correctly convert an invalid QDateTime to JS
Task-number: QTBUG-33539
Change-Id: I645db2e12e3b46731c0bef04e2d48abb71650974
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Mitch Curtis [Wed, 18 Sep 2013 13:53:38 +0000 (15:53 +0200)]
Temporarily disable tst_QJSEngine tests to allow qtbase dev integration
Temporarily disables:
- tst_QJSEngine::dateConversionJSQt()
- tst_QJSEngine::dateConversionQtJS()
so that https://codereview.qt-project.org/#change,65560 can merge.
Change-Id: I415daf1c5bd137e1905773f88fe5ebaaab1e0a06
Reviewed-by: John Layt <jlayt@kde.org>
Topi Reinio [Fri, 13 Sep 2013 12:26:40 +0000 (14:26 +0200)]
Doc: Reintroduce docs for Qt Quick Models and Views examples
The .qdoc files/images for these examples were lost during
modularization. This change adds them back and fixes related
links.
Change-Id: Id5260daad1c38284e3aa8178ae82d24067f4e88c
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Lars Knoll [Mon, 16 Sep 2013 13:27:16 +0000 (15:27 +0200)]
Fix handling of empty Values
Make things consistent between 32 and 64 bit again
Adjust test results after the changes
Almost all uses of Value::empty() will get removed
in the future, but for now this gets all our tests
to pass again.
Change-Id: I44784a43432e78febbdfe78115c9be2a3e3ece76
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 18 Sep 2013 06:08:04 +0000 (08:08 +0200)]
Skip unstable tests
We can't test GC reliably due to our GC being conservative
currently. Once we moved over to an exact GC, we can re-enable
the test.
Change-Id: I6778ed9bee3b41372705f6b41c1379d224335e53
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 16 Sep 2013 18:30:04 +0000 (20:30 +0200)]
Fix regression with isNaN and isInf
We use std::isnan and std::isinf to determine whether a number is
NaN or Inf. Unfortunately some versions of these methods seem to
return int instead of bool, breaking the Encode() call.
Change-Id: Iec58eb3a5f344373a389ddbc7f6ee81cdead2726
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 16 Sep 2013 12:57:58 +0000 (14:57 +0200)]
Initialize variables
They could end up being used uninitialized otherwise.
Change-Id: I169f0023a8079f32b42508d39f7655985eba5d6b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Sun, 15 Sep 2013 13:46:36 +0000 (15:46 +0200)]
Refactor our NaN boxing to be more efficient
* Use a unified way to store all Managed objects inside
a Value, instead of distinguishing between strings
and other objects.
* On 64 bit we store pointers as pointers, so accessing them
through Scoped<> objects is cheap. This implies that doubles
are now stored in a mangled form (xor'ed with a mask).
Change-Id: I582e0fb167a62c0c527c6bfa3452550e37944069
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Sat, 14 Sep 2013 13:08:11 +0000 (15:08 +0200)]
Optimize some runtime methods
This prings performance up by ~25% again.
Change-Id: I680466e11b722b2eac0edda0fe4199b717d23855
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Sat, 14 Sep 2013 09:25:02 +0000 (11:25 +0200)]
Convert more methods to return a Returned<>
Change-Id: If294c9c4f574824c308b63a11da1337226180105
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 19:54:21 +0000 (21:54 +0200)]
Convert some methods to use Returned<>
Change-Id: I631606cb5ab3b35b72104e70092a5200dd235fbc
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 15:07:44 +0000 (17:07 +0200)]
Convert a few more methods in ExecutionEngine to use protected pointers
Change-Id: I2e6b1b9dff52bbd16f35a00152c9ac557f8346eb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 14:19:22 +0000 (16:19 +0200)]
Convert methods in qv4runtime to use Returned<X>
Change-Id: I1f68ecb298b049f3fa90de26b4b39233d48fb8e0
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 12:11:55 +0000 (14:11 +0200)]
Extend the ReturnedValue mechanism to pointers to Managed objects
Add a Returned<T> that we can return instead of raw pointers
to Managed objects.
Start using the Returned<T> for a few methods.
Also clean up all our classes to use the Q_MANAGED macro instead
of manually defining their vtable.
Change-Id: I0a2962e47f3de955cd2cd8474f8f3fcc9e36d084
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 12:10:56 +0000 (14:10 +0200)]
Make QJSValue::prototype() gc safe
Change-Id: Ia93af291f97fd2b6473267e95520bc0759034029
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 10:49:46 +0000 (12:49 +0200)]
Don't polish items if the screen is 0
The current code leads to an assertion during qapp
destruction time, as the screen gets set to 0, which
triggers a force polish that in turns accesses the qapp instance.
In addition, we don't need to do any work when the screen is 0,
as the window can't be visble in that case. Once it gets visible
again, forcePolish() will be called again.
Change-Id: I81d9a11e494b4573a56d06bca651cc6b5fa785c7
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Lars Knoll [Thu, 12 Sep 2013 20:37:41 +0000 (22:37 +0200)]
Convert most remaining return values from Value to ReturnedValue
Change-Id: If8b0c3b91be50678693868c10fefc3678008834d
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 13 Sep 2013 06:37:49 +0000 (08:37 +0200)]
Fix regression in Object.isExtensible()
We need to encode a bool, but the extensible flag
in Object is a bitfield (ie uint).
Change-Id: I2461c8ae90e92840da737c0c7ee88b9a2cee21e3
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 12 Sep 2013 13:27:01 +0000 (15:27 +0200)]
Convert more methods to use ReturnedValue
Change Exception.value() and a few other places.
Change-Id: I53ce17e5656e260138b1ac7f6d467e4636c0a0b9
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 12 Sep 2013 09:13:03 +0000 (11:13 +0200)]
Convert builtin methods to return a ReturnedValue
Change-Id: I6b75adbf53a5be0deab023d2eed98ce2a7915551
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 12 Sep 2013 07:23:34 +0000 (09:23 +0200)]
Rename BuiltinFunctionOld to BuiltinFunction
This is the correct abstraction for a builtin method.
Time to get rid of the 'old' in the name.
Change-Id: Ia386d2cc8ef0e6c269ab24da6fc8ebfac52d7f69
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 12 Sep 2013 07:18:47 +0000 (09:18 +0200)]
Don't check whether Scoped<T> really contains a T
When retriveing a pointer to T, there's no need to check
that we really have a Managed stored in the value, as the
type checking is already done by the constructor and
assignment operators.
Change-Id: I246610b8d6e33848e6a2e2179a5e6e6d9d0975ca
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 20:45:47 +0000 (22:45 +0200)]
Convert lookups to use ReturnedValue
Change-Id: Idbcd1fbd2aa43775ce8c1a3d8fac29a6b58b678a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 19:48:23 +0000 (21:48 +0200)]
Use a ReturnedValue for Managed::getIndexed()
Change-Id: I0371ed21c4ef99564d3ffa1082dd109e890a78bf
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 14:28:17 +0000 (16:28 +0200)]
Use ReturnedValue for Managed::get().
Change-Id: Ia8f35d227b69d32e1f6a041283abbbd083aa34ca
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 13:09:25 +0000 (15:09 +0200)]
Use ReturnedValue for Managed::construct()
Change-Id: I9e702d60c4e1b7ba19a699ff7a8d53876d6cd5f7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 12 Sep 2013 10:58:39 +0000 (12:58 +0200)]
Don't access out of bounds arguments
QQmlV4Function wasn't checking argc correctly when
accessing the arguments it contains.
Change-Id: I475c1366d46a5ef9c91104c12343507e469a69bb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 12:47:34 +0000 (14:47 +0200)]
Rename QV4::ValueScope to QV4::Scope
The class is going to be used all over the place, so let's
give it a short name :)
Change-Id: If61543cb2c885e7fbb95c8fc4d0e870097c352ed
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 12:36:01 +0000 (14:36 +0200)]
Require a ValueScope for ScopedCallData as well
This brings things more in line with ScopedValue, and
also simplifies cleanup of Scoped values.
Change-Id: If5f1466b4e13c629d56c1e7c638937f61ba48f77
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 11:55:01 +0000 (13:55 +0200)]
Use a ReturnedValue for Managed::call()
Change-Id: Ief2d75e9789dd367c603d90dc0fe5316a0d055e3
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 11 Sep 2013 11:10:42 +0000 (13:10 +0200)]
Adjust return values to use ReturnedValue
Change-Id: I03822d360ad90cc659da66252439472ecb1a52bb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Wed, 11 Sep 2013 10:46:20 +0000 (12:46 +0200)]
Change calling convention in JIT to use ReturnedValue
This simplifies the masm backend as well and should be faster.
Change-Id: I64ad5d9ee1b6caca950471e3aec4ef19d7503e62
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Lars Knoll [Wed, 18 Sep 2013 11:15:47 +0000 (13:15 +0200)]
Disable quick autotests on mac until qtbase is fixed
Change-Id: I8c4fecfe42f93b3d6c272d2552a856e3ed1fce28
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Robin Burchell [Tue, 17 Sep 2013 13:20:22 +0000 (15:20 +0200)]
Avoid copying touchpoints, and only check until we find a match.
Change-Id: I46fad782e93fe1f940acec05f4e1bb4afb5be230
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Yoann Lopes [Thu, 29 Aug 2013 15:18:06 +0000 (17:18 +0200)]
Expose "Qt.application.state".
This deprecates Qt.application.active.
The new property can indicate more states than just active or inactive
(currently Suspended and Hidden exists in addition to the
aforementioned).
Change-Id: I8d5bf72f89a357c13daf1625c20e8e7311dac013
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Gunnar Sletta [Fri, 13 Sep 2013 06:27:47 +0000 (08:27 +0200)]
These files are not used anywhere.
Change-Id: I0aa3b7ad944375ec53d8bd831a233d8055d21582
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Sergio Martins [Sun, 25 Aug 2013 20:08:13 +0000 (21:08 +0100)]
wince: Build fix, Windows can also run on ARM.
Change-Id: I113a9fd86215700fe11fa5b2bfb8461953b1255b
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
David Faure [Fri, 13 Sep 2013 13:35:44 +0000 (15:35 +0200)]
Doc: PathView::currentItem is an Item, not an int.
Change-Id: If06c747b424ac8dd6b880aa296af5e5957bb9b51
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Caroline Chao [Mon, 16 Sep 2013 10:40:30 +0000 (12:40 +0200)]
qmlplugindump: fix prototypes identification for composite types
The prototype name for the composite type is the first "default"
prototype found in the reachable types. If none is found then
the default value is QObject.
Change-Id: I40b4fefaab40e4c9f83d24c89bd026579be63e7b
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Mitch Curtis [Tue, 17 Sep 2013 09:38:40 +0000 (11:38 +0200)]
Improve QML Date object documentation.
Carrying on from https://codereview.qt-project.org/#change,61255, I've
added documentation for the from*String() functions, as they weren't
actually documented. I've also formatted some arguments and linked to
Locale documentation where the format enums are mentioned. Note that,
because of QTBUG-32505, I can't link to the format enum directly, so I
just link to the Locale page itself.
The import QtQuick 2.0 should also be removed from the documentation
when that bug is fixed.
Task-number: QTBUG-32492
Change-Id: I19c6c8450746ef2a68bc55fd3ef7db776f4acc35
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Shawn Rutledge [Mon, 5 Aug 2013 13:41:11 +0000 (15:41 +0200)]
Qt Quick Dialogs: can see and control geometry of QML implementations
QQuickAbstractDialog had x/y/width/height properties already but they
didn't do anything. It's still not possible with the native dialogs
because neither QPlatformDialogHelper nor QFileDialogOptions etc.
have any geometric properties; but the application author can now
see and control the geometry of any QML dialog implementation.
Change-Id: Icdac9592c72e81175436436027f7fe3d75ff7f42
Reviewed-by: Liang Qi <liang.qi@digia.com>
Alex Blasche [Fri, 13 Sep 2013 08:53:12 +0000 (10:53 +0200)]
Fix wrong return type
Android g++4.8 errors out with
jsapi/qjsvalueiterator.cpp: In member function 'QString QJSValueIterator::name() const':
jsapi/qjsvalueiterator.cpp:155:16: error: converting 'false' to pointer type for argument 1
of 'QString::QString(const char*)' [-Werror=conversion-null]
return false;
Change-Id: I589418e34c7e1ae72f2bf547067ea8e5944119b8
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Tomasz Olszak [Sun, 15 Sep 2013 20:53:15 +0000 (22:53 +0200)]
Removed strange character from MacroAssemblerARM.cpp file.
It caused:
error: stray ‘\302’ in program
error: stray ‘\304’ in program
when cross-compiling for ARM with gcc 4.5
Change-Id: Ibd80a21b436b65b355181b1e304ade22f9ff7404
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Topi Reinio [Fri, 13 Sep 2013 07:23:48 +0000 (09:23 +0200)]
Doc: Move properties of Locale QML type to correct module
Moves property and method documentation for QML Locale type
from Qt Quick to Qt Qml module, and fix a number of broken
links in locale-related docs.
Change-Id: Id9e01314ea867987f5159ca3bffcc40abb27b289
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Eskil Abrahamsen Blomfeldt [Tue, 10 Sep 2013 09:57:31 +0000 (11:57 +0200)]
Don't depend on widgets plugin in QtQuick
Since the accessible directory contains plugins for both the
widgets and quick plugins, we need to specify the precise
plugin, otherwise all QtQuick apps will depend on QtWidgets
on Android.
Change-Id: I8016afc64f8a75cc4ac0a3a69871df9cb2894f8a
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Mitch Curtis [Fri, 23 Aug 2013 13:14:33 +0000 (15:14 +0200)]
Add currentColor property to ColorDialog.
QColorDialog has this property. This patch effectively means that
the color property will be set when the dialog closes, instead of
whenever the current color in the dialog changes, so pressing cancel
will revert the color to what it was before the dialog was opened.
[ChangeLog][QtDeclarative][ColorDialog] Added currentColor property.
Change-Id: I2ef6b32954342cd2469cf1552d53f9e2fbf3420b
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Shawn Rutledge [Mon, 16 Sep 2013 09:07:35 +0000 (11:07 +0200)]
fixed warnings in dialog module when PURE_QML_ONLY is defined
There are a couple of unused parameters in that case.
Change-Id: Ica81621e7d74474cbfa0b54c20501ecc72661c08
Reviewed-by: Liang Qi <liang.qi@digia.com>
Alan Alpert [Fri, 28 Jun 2013 04:15:04 +0000 (21:15 -0700)]
Fix qmlClearTypeRegistrations tests
The manual test now tests that QtQuick can be loaded second try, and an
autotest has been added to ensure that the function does not affect
correctness.
Task-Number: QTBUG-32078
Change-Id: Ifd55e12c2c31e2e181054f897f10f02a2811c5d1
Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
Alan Alpert [Tue, 10 Sep 2013 07:25:07 +0000 (00:25 -0700)]
Mark tst_qquicktrailsemitter insignificant on windows
Has been blocking CI intermittently, but not locally reproducable.
Task-number: QTBUG-33421
Change-Id: I0e876fe1f236a00a9ecad2231aa7ff50a4b8d590
Reviewed-by: Simo Fält <simo.falt@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Alan Alpert [Fri, 21 Dec 2012 23:42:47 +0000 (15:42 -0800)]
Add qml tool
This tool simply runs QML files using a QQmlApplicationEngine.
It is configurable so as to behave, by default, like qmlscene in
that it will automatically place non-Window QtQuick 2 Items inside
a QQuickWindow with the size of the root item. The configuration
is extensible so that other GUI scenes can also use it by altering
the configuration files in their installation.
On OS X, it is an app bundle, and handles the QFileOpenEvent so that
it can be the tool with which qml files are usually launched by
double-clicking. (This does not break the ability to use it on the
command line too: the options still work, you just have to give the
path to the executable inside the bundle.)
Change-Id: I6bac813ce188be54842a78d7b532fcf2d54dc443
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>