| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Change-Id: Ibb24b0a55dd94e03fea3104e8af5ddb266004300
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Partially revert commit 38221427bc21a11b96de7fa7666264c34298c0c0 to
allow for the lookup of formals by name even when using the simple call
context.
Task-number: QTBUG-61531
Change-Id: Ic5b235b62949ce050817ef2937bd4a35dd64aa6a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
If ExecutionEngine is forward declared and the compiler tries to
instantiate the Value/Array/etc. templates early on, it may not be able
to map ExecutionEngine to EngineBase. That is what the error message
suggests. Since we don't need ExecutionEngine let's try EngineBase.
Change-Id: Idd18dd431705cce8df79180e7ac08574bbe1170c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qml/compiler/qv4codegen.cpp
Change-Id: I3c41b9fc9ba7d41741e4dd400402ae80dd7726d9
|
| |
| |
| |
| |
| |
| |
| |
| | |
0/-1 == -0.0 in JS, which cannot be encoded in an int.
Change-Id: Ice5b09fa3d42dc24d543d4581d77c6bfa743b2ca
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I61ab3d0bd8cc02f640c60c037226eace09ec09ba
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 3f9367cb32533b691cb8c761213f21a524e3d1cb.
QtScxml adapted to new API.
Task-number: QTBUG-60938
Change-Id: I417b604ceb9949ee3c0197ac9f88efdbe53ebe48
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix developer build with MinGW:
In file included from memory\qv4mm.cpp:60:0:
jsruntime/qv4alloca_p.h:62:0: error: "alloca" redefined [-Werror]
# define alloca _alloca
^
In file included from .../mingw32/i686-w64-mingw32/include/stdlib.h:686:0,
from .../mingw32/i686-w64-mingw32/include/c++/cstdlib:72,
from .../mingw32/i686-w64-mingw32/include/c++/bits/stl_algo.h:59,
from .../mingw32/i686-w64-mingw32/include/c++/algorithm:62,
from .../qtbase/src/corelib/global/qglobal.h:109,
from ...\qtbase\include/QtCore/qglobal.h:1,
from jsruntime/qv4global_p.h:54,
from jsruntime/qv4engine_p.h:53,
from memory\qv4mm.cpp:40:
.../mingw32/i686-w64-mingw32/include/malloc.h:183:0: note: this is the location of the previous definition
#define alloca(x) __builtin_alloca((x))
Amends change a225bddf67f4786c845193630d4ab20b99a2fc3a.
Change-Id: I4a758776dbf78225f62883393eb50b7121297a1b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
src/qml/jsruntime/qv4argumentsobject.cpp
src/qml/jsruntime/qv4arraydata.cpp
src/qml/jsruntime/qv4context.cpp
src/qml/jsruntime/qv4context_p.h
src/qml/jsruntime/qv4errorobject.cpp
src/qml/jsruntime/qv4functionobject.cpp
src/qml/jsruntime/qv4internalclass.cpp
src/qml/jsruntime/qv4lookup.cpp
src/qml/jsruntime/qv4managed.cpp
src/qml/jsruntime/qv4managed_p.h
src/qml/jsruntime/qv4object.cpp
src/qml/jsruntime/qv4object_p.h
src/qml/jsruntime/qv4qmlcontext.cpp
src/qml/jsruntime/qv4runtime.cpp
src/qml/jsruntime/qv4vme_moth.cpp
src/qml/memory/qv4heap_p.h
src/qml/memory/qv4mm.cpp
src/qml/memory/qv4mm_p.h
src/qml/memory/qv4mmdefs_p.h
src/quick/scenegraph/util/qsgdistancefieldutil.cpp
src/quick/scenegraph/util/qsgdistancefieldutil_p.h
tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
Change-Id: I7ed925d4f5d308f872a58ddf51fdce0c8494ec9c
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QtScxml was using internal API in v4, that has changed. Restore the
old function signature until all it's uses have been cleaned up.
Task-number: QTBUG-60938
Change-Id: Ie40c09da9df9e5684972669cd9a511a868b920a4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
We can always get the pointer through the internalClass.
Change-Id: If68432845e7c67da70d9e19aef1a90ebe1e6056b
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We can easily do this now that Managed has a pointer to an
internal class (which always has a back pointer to the
ExecutionEngine).
Remove the extra engine pointer from ExecutionContext, and clean
up tow methods in String.
Change-Id: I98d750b1afbdeadf42e66ae0c92c48db1a7adc31
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old calling convention used for builtin functions is very
inefficient. It was still being used in a few places. Clean
those up and convert them to the new and much more effiecient
calling convention.
Change-Id: I6b769c6185df7e9be1e80709330fc1ca868576c1
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There's no need to iterate over all internal classes, as
prototype changes always happen in the first or second
level of the tree.
Change-Id: I99bf11a6cd238286c1547922d61ab47319b6eb97
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make sure we have at least 2 slots for inline storage available
for regular JS objects. Speeds up JS execution quite a bit, while
still keeping memory consumption low for most other cases.
Change-Id: I01824d8db1ffd828c1c1b6a9cbcf9bf1a9070ec3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Inline the version taking an identifier, and use that one where
it makes sense.
Change-Id: I414c5999e61cdba219ecd1080957f3037dfebc1b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I1f4f4aaad0c8194bce2ebde4503df38cab0990a2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This saves another pointer on all Objects.
Currently introduces a slight performance regression
on some of the v8 benchmarks, that needs addressing.
Change-Id: I87de8e1d198d2683f4e903c467ce2a60ba542243
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
And do not store the vtable in Heap::Base anymore. This change
makes the internal class the main distinguishing feature
of all garbage collected objects.
It also saves one pointer on all Objects. No measurable
impact on runtime performance.
Change-Id: I040a28b7581b993f1886b5219e279173dfa567e8
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prepare for moving the vtable pointer into the internalClass.
This adds the required infrastructure to InternalClass, so it
can store a vtable pointer and properly handles vtable changes.
Change-Id: I688fee1647268dd185d0f9636ab5b3390465daca
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I3f6ae59d01c7b6c898e98d3b6f65b84a19b8851a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I43ddcb4842e501cbea8a950ab6ffa2d906014efd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
And store them in an enumerated array. This will simplify
upcoming changes.
Change-Id: I82eac03b9f6264843ae625e36e150464fe08be9d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Idf87618e4ebff99f3b3c269c950191d67a0182b2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I5d1e0d2251e04cc871f9c298849aafac17f23fbf
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Don't store the current context in Moth's run() method, instead
always retrieve it through the engine.
Change-Id: I9d56f2c93a02fc1e2f03839b14b3c0053d60b6b2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Cut the size of the generated byte code in half, by storing
parameters in a more compact form and always storing the
instruction type in the instruction.
We can still used computed goto's for a fast interpreter, by
looking up the jump point for the next instruction in the jump
table.
Another advantage is that the byte code is now platform independent
(modulo endianness).
The change comes with a 3% performance impact on x86_64, which
is acceptable considering the size savings on the bytecode.
Change-Id: I37de3e1f94611987a85e65ea86536583aa965d6d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
MinGW was unable to link qmlcachegen due to missing symbols from the
autotest-exported class QV4::ExecutableAllocator.
Introduce a separate Q_QML_AUTOTEST_EXPORT macro that is defined
to empty when used by qmldevtools.
Change-Id: Ib7f8984dd7617fae05bb4e1e6cc1fae0745ac3bc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is now actually just as fast as the lookup code,
so disable the generation of lookups for indexed accesses
for now. This saves some runtime memory, as we don't
need the data structures for the lookup.
We can reintroduce lookups, once they offer a real
performance benefit.
Change-Id: Idc3fa7b248e2e25b4b2cd60d5053e2815634c8b7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |\
| | |
| | |
| | |
| | |
| | |
| | | |
Contains the fix for tst_TouchMouse::hoverEnabled which has caused
numerous failures in the last few days.
Change-Id: I1e523087a53d1df0334d602e4125f5cddc9bf470
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
qv4alloca_p.h dates from April 2013 and contained just the #includes,
whereas the code in qtqmlglobal_p.h was introduced earlier this year in
commit 87f016ea9eddc874d5cba7d79d0a487d5ef61761. This commit moves the
macros to qv4alloca_p.h and centralizes the support there.
This also updates the #include detection mechanism, by using
QT_CONFIG(alloca_h) to determine which #include to use. See commit
98c1d516b7f7624f7fcd7b9046783e3903a6a42b in qtbase for more details.
Task-number: QTBUG-59700
Started-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: Icd0e0d4b27cb4e5eb892fffd14b4b38005ce2ecb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add some more optimized lookups for accessing
properties stored inline or in the memberData.
Change-Id: Id74901d1dd91fd60933bf164c2bf90fed86232e3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It turns out that not using any inline property storage
comes at a relatively high price in terms of memory
consumption, as we always need to also create a
memberData for any object.
This avoids the memberData creation in quite a few
cases, as we use the additional padding we have up
to the 32 byte boundary given by the memory manager
to store some property data.
This complicates property access somewhat. To avoid
performance regressions because of this, add specialized
QV4::Lookup functions that optimize for properties that
are inline or in the memberData struct.
Change seems to be performance neutral on v8-bench on
x86_64, but reduces peak memory usage when running the
benchmark by around 20%.
Change-Id: I0127d31a2d6038aaa540c4c4a1156f45ca3b7464
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
|
| |
| |
| |
| |
| |
| |
| | |
Use the global strings instead.
Change-Id: Ia43045ca3f40e80d44956cf8e38511cfc4c8a8bb
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a new logging category that can be used to debug issues with
unexpected binding breakages caused by assignment to previously bound
properties. If enabled, outputs a message when a binding is broken with
detailed location and property/value information.
[ChangeLog][QtQml] The QML engine can now emit informational messages
(in the "qt.qml.binding.removal" logging category) whenever a binding is
lost due to an imperative assignment. This can be used to debug issues
due to broken bindings.
Change-Id: Ie31e5a198450b6f998c1266acfc97e8f33a92e3d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
That poor Q looked so lonely.
Change-Id: I29a0aa0574fefa5be8ffaa9857e03500c914c830
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
That poor Q looked so lonely.
Change-Id: Ie4cef3fa8f2ecb8ba106654e8a9d6611a9407aa2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I71275a2076c3d32ee2896571be882067320a2e9e
|
| |\ |
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/qtqmlglobal.h
src/qtqmlglobal_p.h
src/jsruntime/qv4global_p.h
src/qml/compiler/compiler.pri
src/qml/compiler/qv4ssa.cpp
src/qmldevtools/qtqmldevtoolsglobal_p.h
tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
Change-Id: I55c5d015b2cb1053b83b9c61caaf004fb49ee486
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
6767fcfaf basically gave up and gave the module an own set of headers.
however, we now have improved infrastructure for borrowing headers.
while this may look uglier, the maintenance burden is lower, and it's
consistent with other bootstrapped modules.
Change-Id: I6ddcbbc01fa085a3c6bf333b03a9fdfc19061836
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Make sure to allocate enough space on the JS stack to include the
calldata members _and_ the parameters when using more than
ReservedArgumentCount parameters.
Task-number: QTBUG-60396
Change-Id: I7fb2e44550fe081c43b8583f0cd370feb70db159
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |/ /
| | |
| | |
| | |
| | | |
Change-Id: I84e363d735b443cb9beefffd14b8c023a37aa489
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-60386
Change-Id: Idd5a8939a575c254636042b5cb1900d2d8673072
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When searching a QObject for properties, try to find QObject properties first,
and then bail if we don't find a match and the object is not already wrapped.
It makes no sense to wrap the object just to check the (empty) JS side
props, which is often the case with QmlContextWrapper's scopeObject and
contextObject. This can especially be seen when looking at QML's model
activity, as they set a context object in order to hijack lookup of
model data & index.
This can be seen in a test like the following:
Repeater {
model: 10
delegate: Text {
text: index
}
}
Before this patch, the 'index' access would previously trigger wrapping
of the QQmlDelegateModelItem. The same applies to the 'model' prop etc.
Noteworthy improvements of a full qmlbench run that aren't part of the "usual"
statistical noise are generally around the 5% mark.
Outside performance, the advantages are also clear on memory. Examining
for instance delegates_flipable.qml with QV4_MM_STATS=1 on my MBP:
Before:
Freed JS type: QmlContext (5000 instances)
Freed JS type: QObjectWrapper (5000 instances)
Freed JS type: QmlContextWrapper (5000 instances)
Freed JS type: QQuickItemWrapper (5000 instances)
After:
Freed JS type: QmlContext (5000 instances)
Freed JS type: QmlContextWrapper (5000 instances)
Freed JS type: QQuickItemWrapper (5000 instances)
... which is what we expect, no more QObjectWrappers here, a lot less garbage
to clear up.
Timewise, while the measured mark/sweep times are not stable, there is a
proportional decrease of about 40% in time for both mark and sweep phases in
the GC (slightly more on TX1 than desktop, curiously).
Finally, GC's memory use is quite stable for each round of the test, and in this
case, we see a decrease of 378kb used at the time of each GC.
Before:
Allocated 2515968 bytes in 39 chunks
Used memory before GC: 2489824
Used memory after GC : 889856
Freed up bytes : 1599968
After:
Allocated 2128896 bytes in 33 chunks
Used memory before GC: 2098304
Used memory after GC : 818304
Freed up bytes : 1280000
As a final note, while this provides an improvement to many of qmlbench's
benchmarks, as they make heavy use of Repeater, these benefits should map quite
well to real world applications as well: anything that uses item views will
likely see a significant reduction to the amount of GC'd objects.
In the future, it would be nice to have tests for the amount of garbage
created by various activities, but that is an item for another day.
Change-Id: Idd14180e689235eea8883d68487570b0e14d47e6
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I95266fdaf5c6dc65969bd2e28403da7969367d32
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I5f9c00541c27377e8310d32bf045c2860eeffcb4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This only deals with Qt code. MASM has a lot of those left. We should
just update from upstream instead to get the fixes.
qv4regalloc.cpp:660:52: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (leftSource->type == DoubleType || rightSource->type == DoubleType) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
qv4regalloc.cpp:666:13: note: here
case OpBitAnd:
^~~~
Change-Id: I7814054a102a407d876ffffd14b6b0e2d6b03689
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-60133
Change-Id: I5497dc3c4a1c3922e7147d7a20593c75a0d9d0e9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ibed6ee74d36b4ce37391c82db00a0abd30d09e7a
|