| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
Without these you may get an infinite sequence when trying to iterate
using const iterators.
Pick-to: 6.10 6.8
Task-number: QTBUG-142097
Change-Id: Iae93063b240ebe9426804197533ed7efd8e007bc
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The change in a7349e6433d092398d76cafa5408753f06892cd7 reduced the
number of readbacks of reference objects by using connections to set
the dirty state only when necessary.
Establishing connections, however, comes at a cost and this introduced a
regression in the delegates_item_childrenRect QmlBench benchmark.
The mitigation introduced in this patch is to delay creating the
connection. When a reference object is created, it does not read or
create a connection but is simply marked as dirty. Only on a subsequent
read from within a different statement than the reference object's
creation's statement, does a connection get created.
This keeps the benefit of reducing unnecessary reads on objects that are
used multiple times while not spending too much on creating connections.
This brings back the benchmark to its original level of performance.
The referenceObjectChainReadsBackAsRequiredBasedOnParentSignals test
was changed to expect 8 reads instead of 4. Since all the accesses are
part of the same statement, no connection is ever created and more
reads are required than before.
The referenceObjectDoesNotFetchWithoutNotifyEventDateObject test is
reformatted to separate the assignment from the reads. Otherwise no
connection is ever created.
The referenceObjectDoesNotLeakAConnectionToTheDestroyedSignalOnANotifyBindable
test can be updated to expect 0 connections. With this change, we only
connect if the reference object is read again from a different
statement.
Amends a7349e6433d092398d76cafa5408753f06892cd7
Fixes: QTBUG-140757
Pick-to: 6.10
Change-Id: I5d02ec6266c51fbbe5f2e01405081dd5a167a833
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
| |
Pick-to: 6.10
Change-Id: I489b515388f9aba9250bfb05687331c92578ca57
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
| |
Change-Id: I71ba63cdde7c8f3e18b89a1a4e35da30202fd8e4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Those are conceptually part of the QObject property cache, even though
they have no property data. So, if the object at hand does not have a
property cache of itself (e.g. because its fully dynamic), look up the
QObject one and use that.
Fixes: QTBUG-141704
Pick-to: 6.10 6.8 6.5
Change-Id: Ia333ac8c29f3797fb4b3ff37863b7c01fae8b076
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Joshua GPBeta <studiocghibli@gmail.com>
|
| |
|
|
|
|
|
|
|
|
| |
-Mark internal functions with \internal
-Sometimes the solution is to have a \class command and marked internal
-Fixed whitespace issues when the new marking introduced them
Task-number: QTBUG-141665
Change-Id: I4f744aa94ca679da74b6c5e846e49a73346e2625
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need the object not only as singleton but also as member of the
global object. If there is a QJSEngine, parent it to the engine and make
it explicitly C++-owned. This way clearSingletons() won't delete it. If
there is no QJSEngine, there can't be any clearSingletons(). Therefore
we're safe in that case. The only known example for an ExecutionEngine
without a QJSEngine is the WorkerScript case, but since ExecutionEngine
is exported, it could be instantiated on its own in other Qt modules.
Amends commit 9dc7a22b212c18215942b9a4bfa17bd16dd5151b.
Pick-to: 6.10 6.8
Task-number: QTBUG-95788
Change-Id: I5a0aa35fadd552af208538ab2715efaff77f8f4e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
| |
This trips up Coverity. Instead use an "if" clause.
Coverity-Id: 896869
Change-Id: I0eddc4b4547a7bb9055734b7304112e9174ff5fc
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce support for obsolete RFC2822 dates that has 2 digitted years,
or 1-digited hours (2 instead of 02), which now should be rejected by
qdatetime and instead parsed via a custom string format in ParseString().
Amends 43eaa77e8ed03153335c0002dcc8b660c39a0beb and
41a5c7b223d958bd40240aee81bb8fb96540735d.
Pick-to: 6.10 6.8
Task-number: QTBUG-100377
Change-Id: I802af9edc7f755b7dba345bf60548714a7335545
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The default safety margin for VxWorks is 1/8 of the stack size, which is read
from the OS. Also adds environment variable QV4_STACK_SOFT_LIMIT, to
overwrite V4 stack safety margin.
These can be used to finetune the application with limited resources, also on
other OSes.
Task-number: QTBUG-115777
Change-Id: I82b5b02e75fae3f5d1971504d16a3dc0f1d5f3fd
Pick-to: 6.8 6.9 6.10
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
| |
We don't need to store the scheme/host part of the origin in a
temporary. The whole string can be constructed in one go.
Coverity-Id: 896383
Change-Id: I1978ea26d3946c8f905f76d18192c5f1ced1e647
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
All the conversion back and forth only adds noise and overhead. Use an
array of std::byte to trick the memory manager into believing that
QV4::Heap::UrlObject is still trivial.
Task-number: QTBUG-138545
Change-Id: Ic382741d441cfb8a7446d6c46ded77173325ce34
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
The ctors and prototypes need to be linked together.
Task-number: QTBUG-138545
Change-Id: I5423dfb7d04c4d496d734ab5fc8252b6feb54a11
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This relies heavily on the documented fact that we only support trusted
QML/JS content, meaning most files are only significant, not critical.
This also extends to the handling of qmlc files (as in
compilationunitmapper), as we store them in a user owned, non-shared
cache directory – so any vulnerability there would already mean that an
attacker has write-priviledges on user data.
An exception is ArrayBuffer, which can be used with arbitrary user data,
and should create a valid QBA.
Fixes: QTBUG-136970
Pick-to: 6.10 6.9 6.8
QUIP: 23
Change-Id: I22033fe6ab4acf8362a8183e25b92331d45cb32c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
| |
Change-Id: I3f3a58771d2721dc822add922c16a7efab3024ab
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Without this we effectively soft-leak the contents of any
SimpleArrayData whenever we truncate it. Only when the array was either
completely dropped or re-filled would the extra objects be reclaimed.
Task-number: QTBUG-139025
Pick-to: 6.10 6.9 6.8
Change-Id: I88e9dc3ea8ec57c1de71b7b5417ebcfbaa75bb61
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
It's only valid in the MetaTypesStackFrame and we should use its
accessor.
Amends commit 2d016a2653c59f10a57dc1903b817f71d16d0622.
Change-Id: I6900fc01a0af2acf29324e54c0206c84f032c22d
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Amends commit 1b89c1edcae68351632c2755e5408410c2ff98e3
Fixes: QTBUG-139764
Pick-to: 6.10 6.9 6.8
Change-Id: I1488527a235d74fc0352c72b9bfb69589c2f3d93
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This code needs to bridge the following difference:
In JS:
"" search string -> ""
"?" search string -> "?"
In QUrl:
null search string -> ""
"" search string -> "?"
Pick-to: 6.10
Change-Id: I0b1bf64f0b251eba75b852adee5db05abe87f6fe
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
| |
push, pop, shift, and unshift should be pretty common.
Change-Id: Ia27e29e79d5909f146836bf91499fafbf3f9ce4e
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
Keep them in a special generated struct with virtual method that gets
called from the GC for each frame.
Pick-to: 6.10 6.9 6.8
Fixes: QTBUG-139059
Change-Id: I81bcbeab6531e174a5207d03f57d241461ae9ba3
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While the Sequence is detached it is subject to the GC or
unrelated C++ code deleting objects from its internals. Since it's then
not the owning object's responsibility to track this anymore, we need to
track it ourselves. The way to do it is to use the existing V4 objects.
We don't have to store the sequence on the JS heap if it cannot store a
QObject. Only lists of variants or pointers are affected.
This independently fixes QTBUG-129972 for 6.8 where
VariantAssociationObject does not exist, yet. This is because the
detached sequence shown in that bug won't need to be written back to
anymore in order to stay up to date.
Pick-to: 6.10 6.9 6.8
Fixes: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: Ib469c6c65f2f96041e2ad2fd106f8cd60a182e13
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
| |
All other qsizetype <-> uint range violations are only warnings.
Change-Id: I611e423c115483e3f72b4cc542b3154478c347ca
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
| |
We want generally want to throw an exception. Except in virtualMetaCall,
since that would lead to cascading exceptions. There, just return 0 to
notify the caller about the metaCall failure.
Change-Id: Ie3970d01a5b433100f9722a2f12843abfe8d512a
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
There is no way we can have produced an exception in
Sequence::virtualPut().
Change-Id: I1f6f4d933b34b9f86c3a9093929815e9071eb61e
Reviewed-by: Luca Di Sera <luca.disera@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We will get a different kind of storage in addition.
The unification of the different init() methods uncovers a bug: The
storage can indeed be nullptr when querying the size later. If you
construct a detached sequence from a null container, there is no reason
to create the internal storage. The size is evidently 0 in that case.
Fix sizeInline() to tell us as much.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I33347805fc79f81c69c3191a76ff9167186b43f0
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
Each of those incurs a null check.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I7bc96755629d57e1a8f0bf69e0db8de8df737665
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
What we actually want is append default constructed elements. Doing this
the natural way avoids needless complication.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I97318b0e093a76a3d67539ea0d4e28614db4879b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
In order to determine whether we need to write back, conceptually we
need to know whether the sequence is a reference. That happens to be the
case if there is an object to write back to, but that's not how object()
was meant to be used.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: Ie3e0e0318ecabd6f25d545d1198c07a0037b68fe
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
It gets in the way if kept seperate.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I105ee78e89ce561ec27e8badc27aa94a717ace39
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
It only operates on the heap object anyway.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I7e6c232fd68893429533e1b10363ef9922a33ae7
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We want to encapsulate the container as much as possible.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I7cf991ea7a3a879584066e7121c49e102ebadf08
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We don't want to expose it from Sequence's interface.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: Iae144bb8a66a24660dd8da490edb0b4bd7cdc81e
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We don't want to expose it from Sequence's interface.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I35c37ea1da675a83a1a8d3a4af08e4301c8cd60c
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We don't want to expose it from Sequence's interface.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I12453fed0143e5e75dfc749b87b197ec328085f7
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We don't want to expose it from Sequence's interface.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: Ic001925c7fc1ae3be623e2fd7451f99d17899471
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Inline at() into its only caller, move size() further up to be visible
from all callers, and make them all static functions taking a
Heap::Sequence. This prevents them from being called from elsewhere and
improves encapsulation.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I65c724119c0df95f2d26116b3ff6ab0a4218d91f
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
It's fine to call them from Sequence and its helper classes, but it
shouldn't be called from outside.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I0bfe5d813ec8fdee6c814269df069935fe304ccd
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We will need to befriend them.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I0d877627f2b838f2bf06a7049cd51927e13bd24d
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
| |
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I2062b537c1c00908b7cc86f394d95ffdf2eabbee
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We want to use it in other places.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I720c4a71144ab634d70a1ec0115ca81b8030d083
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
We want to encapsulate the container as well as possible.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-129972
Task-number: QTBUG-139025
Change-Id: I87841fbe9a9c9f1756eddc979b82ec8b90eec8e2
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
While the VariantAssociation is detached it is subject to the GC or
unrelated C++ code deleting objects from its internals. Since it's then
not the owning object's responsibility to track this anymore, we need to
track it ourselves. The way to do it is to use the existing V4 objects.
Pick-to: 6.10 6.9
Task-number: QTBUG-139025
Change-Id: Ic1d5aa85171b5d91c2b9d546963268b6f09c2802
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
This generalizes the QVariantMap code path.
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-139025
Change-Id: Ibbdc1da974d3c166474c4bd02fb4c70d8df3e688
Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
| |
ReferenceObject and VariantAssociationObject were indented in rather
confusing ways.
Change-Id: I3a4ef04f716609a0b32844bb14e4dfded6a1f2fa
Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We construct the iterator from the exports of the module in all current
code paths. Therefore, this case can't happen in the current code.
Still, the fact that we have a branch that throws a reference error
there tells us that it's intended to work on other collections of names,
too. Let's complete the check and also check for nullptr since
resolveExport can indeed return that.
Coverity-Id: 486706
Change-Id: Ieaf3996e76265e9e6ef59c2168699e47e41e8ff5
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
| |
Change-Id: I2fc82de562909ab2e0eecfbbe1e2e53953a33756
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
stringValue() already checks isString(). We don't have to do it twice.
Coverity-Id: 486710
Change-Id: I074228f9a120c3bbfe6d4a65f05fe11322fbd07b
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
| |
Coverity-Id: 486699
Coverity-Id: 486697
Coverity-Id: 486715
Change-Id: Icdd15ff578f8be55fe9db3ffc38e893f667edc40
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|
| |
|
|
|
|
|
|
|
| |
The propertyList is an array allocated on the JavaScript stack. None of
it can be null.
Coverity-Id: 486709
Change-Id: I3178181aa89bfff86fb5aa469660a912b4f1691c
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
|