| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
The function name had a spelling error. This change improves code
readability and follows Qt naming conventions.
Change-Id: Ic0646ea679bf3619691b6a581ba5ef589e7827bd
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Change the compiler/platform detection macros to check whether a macro
is defined, before testing its value. See also the discussion at
https://bugs.webkit.org/show_bug.cgi?id=167643
https://codereview.qt-project.org/c/qt/qtbase/+/618094
Task-number: QTBUG-132900
Change-Id: Ic3cc02b23e034cc7622e899b4acc381166a9ec95
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When VxWorks is configured with RTP_MEM_FILL false for performance
reasons, then it is not filling the allocated memory to 0, causing
the QML engine to crash, because it is expecting that it is filled
with 0s. This change handles this scenario by calling memset 0 on
the allocated memory. Qt needs to be configured with
QT_RTP_MEM_FILL define.
Task-number: QTBUG-133305
Pick-to: 6.8 6.9
Change-Id: I885c3cad7d81a11b8a0c125ddc098751b9643392
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
... and make it actually compile.
... and set the flag for JIT pages being prepared. We are clever enough
not to make them executable right away.
Pick-to: 6.9 6.8
Task-number: QTBUG-131957
Change-Id: I07dc6a9c8ec7d0881d73fc5bd44a6059f66dd2eb
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since we cannot figure out what exactly has to be done to prevent the
JIT from crashing, we perform a partial revert of commit
912af1e8b4c1f62802a3e0a4b428bb4e9f4d2c90, only for this platform.
The bug fixed by the original change is specific to linux. Therefore
this doesn't cause any real harm.
Pick-to: 6.9 6.8
Fixes: QTBUG-131957
Change-Id: Ic3baf32aae1f0f2feb9abc34b9f43a5db867165b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We want memfd-backed memory that we first write and then make executable
using mprotect. This may be prohibited even if we can get a simple
anonymous read/write/execute page.
Pick-to: 6.8
Fixes: QTBUG-122102
Change-Id: Ic794a034d211a3a6518c823186f9953967b52ad0
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
| |
Change-Id: Ie65ac757ecfd016d818395670c7d021e0e989ebb
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Calling madvise(MADV_DONTNEED) immediately after creating a new mapping
is redundant, as mmap already returns an uncommitted and zero-filled
memory. Note that even if a memfd is used, it is already zeroed out by
ftruncate.
Change-Id: I326f6b5be20bdc5658b704e35a73b745f00c4272
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The application could call mlockall(MCL_CURRENT|MCL_FUTURE) to lock all
its memory for performance reasons, causing the madvise call to fail.
There's no need to crash. Instead, manually zero-out the memory when
decommitting.
Fixes: QTBUG-120450
Pick-to: 5.15 6.2 6.5 6.6 6.7
Change-Id: I6f1a8968853cc5e61561371bd2a435a686eaf0e4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
Task-number: QTBUG-120262
Pick-to: 6.6 6.7
Change-Id: I57c610421e9d499175856ff6f9520710b18c8a3c
Signed-off-by: Lucie Gérard <lucie.gerard@qt.io>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Change made to ensure that no previous definition interferes with
another definition, which occurs in VxWorks VSB
Task-number: QTBUG-115777
Change-Id: I6593a4d8059725288b48c55316389fea6ec71591
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
this fixes issues related to undeclared identifier systemPageSize
systemPageSize is defined in PageBlock.cpp and is guarded by
an if that checks if the OS is unix or windows
Task-number: QTBUG-115777
Change-Id: I2c71e62b147d9c0d8a64c718a8f8555333feaf3a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cross-compiling (using Clang-13) for Raspberry Pi OS on Raspberry Pi 1
and Zero, requires adding "-target arm-linux-gnueabihf" to the compiler
flags, which defines macro __ARM_ARCH_6KZ__ to detect for armv6.
Fixes error:
qtdeclarative/src/qml/../3rdparty/masm/wtf/Platform.h:312:6: error: "Not supported ARM architecture"
More details: it turns out that the already checked macro
__ARM_ARCH_6ZK__ is a typo with significance because older versions of
GCC only had this. On the other hand __ARM_ARCH_6KZ__ (that this patch
checks for) is the correct spelling, and it's the only one defined by
Clang. Newer versions of GCC define both.
Pick-to: 6.5 6.4 6.2
Change-Id: I60532bfcaa62677f88ed2cff05d872a14c4c2111
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit ffecc122d785de9c4c5defd8724526b8dd4982dc.
It turns out that madvise() only fails when given MADV_WILLNEED as
argument on the affected devices. MADV_WILLNEED is indeed optional.
Since commit 2034e10c9378364ecc7aa1af27505562d86688de we do not crash on
a failed MADV_WILLNEED anymore. Therefore, we can re-enable the linux
code path for android.
Pick-to: 6.4 6.2 5.15
Task-number: QTBUG-107774
Task-number: QTBUG-106864
Task-number: QTBUG-106269
Change-Id: If67a38e4fc206bd5d5ed0ef8bf66ededd09d8f59
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
MADV_WILLNEED is only advisory. The kernel may ignore it anyway. Any
subsequent access to the pages in question will trigger them to be
re-populated.
Pick-to: 6.4 6.2 5.15
Fixes: QTBUG-107774
Change-Id: I8d70003502fdeb3e53c169b28ea6826801d47c74
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
Apparently we cannot rely on madvise() to work as we expect it on linux.
Pick-to: 6.4 6.2 5.15
Fixes: QTBUG-106864
Fixes: QTBUG-106269
Change-Id: Ie488ad788386c1a8c493d6bba632787f5282baaa
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Apparently it can fail with EAGAIN. We rely on madvise to zero out the
memory. Therefore loop until it succeeds like we do on other OS.
Pick-to: 5.15 6.2 6.3
Fixes: QTBUG-100431
Change-Id: I9819f8d82a251e222b0b500991584d40e641b672
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
warning: unused parameter 'usage' [-Wunused-parameter]
warning: unused parameter 'writable' [-Wunused-parameter]
warning: unused parameter 'executable' [-Wunused-parameter]
warning: unused parameter 'lineCount' [-Wunused-parameter]
Pick-to: 6.2 6.3
Fixes: QTBUG-101383
Change-Id: I22089b1aeea927468e61769dcbbc8e363b9d734e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The WTF macro only really works for gcc, so do not enable it for clang.
Clang expects the attribute to come before the function; however, as WTF
is (originally) third-party code, we avoid extensive modifications.
Task-number: QTBUG-91163
Change-Id: Ic555c6721d2c4232a7d7bd84d53cdf6ad6cea86b
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
| |
We don't want min and max to be macros.
Change-Id: Ifa79eaecf00c9f8b9c61494aa9d883eebfdabc65
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Commit ef8a27544ac47b0ec2fc8c058d32c5b22650b359 removed the
dependency on libdl in the code but did not remove the corresponding
include
Change-Id: I140fc02882af01eef2c8d714969f40e05371dc79
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Apple errorneously detects pagesize as belonging to their private API.
Avoid this by putting the functions into an inline namespace to change
their mangling.
Fixes: QTBUG-69577
Pick-to: 6.1 5.15 5.12
Change-Id: I061febdc6f961fa8a6e1d43de4154a8e26b04f27
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Task-number: QTBUG-84434
Change-Id: If8f57f00726868a3540c877d07fca761618e4f08
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
| |
Mostly by avoiding custom functions when the compiler generated ones
work just fine
Change-Id: If8152fd24c9084bd85be3741fc218709e50fc375
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The compiler must convert ULLONG_MAX to double before adding 1, so this
expression was wrong.
MathExtras.h:402:43: error: implicit conversion from 'unsigned long long' to 'double' changes value from
18446744073709551615 to 18446744073709551616 [-Werror,-Wimplicit-int-float-conversion]
Task-number: QTBUG-83666
Pick-To: 5.15
Change-Id: I99ab0f318b1c43b89888fffd160b4a95a258423b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These macros are no longer defined, and we will use QT_CONFIG
instead, since that is more robust (it checks against
misspellings).
This also removes some dead code from the WebKit code in
Qt QML. The condition never resolved to true in our case
since Qt QML does not depend on Qt GUI, so even before
the macro would not be set. This is just a leftover
anyway, as the graphical parts are not used in QML.
Task-number: QTBUG-83467
Change-Id: I2c4b7f928538cc75ce408deb357f8fd92a84d8e4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
|
|
|
|
|
| |
string literal "QtQml" is entirely enough for the name here
Change-Id: I62c43f3535998e358d7012b5a455f4e01bb3f1a0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| |
|
|
|
| |
Change-Id: Ifab0b23fbf35bd31061a28500fdfd69de1905b1c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| |
|
|
|
|
|
|
|
|
| |
The new version of Yarr has them and using them could give us some
performance benefits. Add the required load16 primitive for the ARM64
aseembler from webkit.
Change-Id: Ief498a353f9804c6b0f4ac091fb3707ffcb9f8cd
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
|
|
|
|
|
| |
Otherwise our disassembler crashes on QV4_SHOW_ASM.
Change-Id: I63b20c0932452fe852773f91ebecaa7f31dd040d
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
|
|
|
|
|
|
| |
std::make_unique() doesn't exist in C++11, so add a polyfill.
Task-number: QTBUG-71010
Change-Id: I6f1f32447be6fb7411c66fa2c986df5bf4346ee2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quick/items/qquickevents_p_p.h
Change-Id: I8c699aeb46903e2ea80a97a346cb5af460859a98
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Correctly set the attributes when allocation is extending to more
than one page. Code spanning multiple pages can now be executed.
Task-number: QTBUG-70350
Change-Id: I02af1add274f80befda5662d9670bfd2052c3c52
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
qtdeclarative/src/3rdparty/masm/yarr/YarrParser.h:355:24: error: this statement may fall through [-Werror=implicit-fallthrough=]
FALLTHROUGH;
Change-Id: I08321d30d54e192bcd3957a3fc7bf634220e9914
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
It's compiled as a C file, so reinterpret_cast and nullptr cannot be
used.
Change-Id: I864a400f3752a4de51775a443a3049365bf2c5c1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| |
| |
| |
| | |
Change-Id: I4e7a44ae2b5759febec6f83ab9fa85612515ab04
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
It's not being used afaict, and is completely untested. If someone
wants to use QML on SH4, the interpreter will have to do.
Change-Id: I609c0646b19120abca5ad1ee893de9ec944d8dbf
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Updated Yarr to a to commit
4d2a53d60487cb1f8b2a9a1e9f684af336fd7d2c in WebKit.
Adjusted the yarr code base to work with our older version of
wtf and masm.
Change-Id: I04b4593ece051e1d7aa087b87aa08c92595d1098
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Thiago requested a clarifying comment and he's right about that.
Amends 4d9e329df599da96927d559931eabd0062bcf147
Change-Id: Ia9a34eb556da485d51a3d48412a98070fb397ab3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We would pick an incompatible code path when compiling with clang,
using an memfd when creating the memory that we later tried to
make executable. This differed from how the memory was made in
the canAllocateExecutableMemory() function, thus the problem was
not detected ahead of time and we crashed in ExecutableAllocator.h
when reaching a Q_UNREACHABLE.
Amends 847dfa77e9b5d93f7dbb6b78665f1f86d4431a02.
The fix is to simply disable this code on Android.
Task-number: QTBUG-67464
Change-Id: Ibab753995d89d35d31340702ab4a3c4756adc332
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |\|
| |
| |
| | |
Change-Id: I280d42b8926c0cada1f35d322b80aaf2b0ef0a73
|
| | |
| |
| |
| |
| |
| |
| |
| | |
This patch enables JIT on INTEGRITY s820Am and other ARM64 builds
Change-Id: I2fa130f41a6c5bc6aa86bcfd5a01c2d431300561
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Nikola Velinov <nvelinov@ghs.com>
|
| |\|
| |
| |
| | |
Change-Id: I6b2568337c09ff98850b4ecccccc9a8fc25064cd
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
gcc 7.2 gives tons of warnings of the form:
./3rdparty/masm/wtf/Assertions.h:186:1: warning: this use of "defined" may not be portable [-Wexpansion-to-defined]
In practice the marco expansion to (defined FOO && FOO) can safely
be reduced to simply FOO, as #if FOO will expand to #if 0 if FOO
is not defined.
Change-Id: Idc1b09990725b99bbfa2c3bc949565254ea4174f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can't tag mmap anonymous segments, like Mach/Darwin can, but we can
use a memfd (which can take a name) and then its name will show in
/proc/PID/maps. For example, pmap shows for tst_qjsengine at an
arbitrary point I stopped execution at:
Address Kbytes RSS PSS Dirty Swap Mode Mapping
00007f9cc2db7000 2040 4 4 4 0 rw-p- /memfd:JSVMStack:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
00007f9cc2fb7000 4344 4 4 4 0 rw-p- /memfd:JSVMStack:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
00007f9cc33f6000 40 0 0 0 0 ---p- /memfd:JSGCHeap:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
00007f9cc3400000 128 64 64 64 0 rw-p- /memfd:JSGCHeap:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
00007f9cc3420000 3928 0 0 0 0 ---p- /memfd:JSGCHeap:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
00007f9cd099e000 4 4 4 4 0 rw-p- /memfd:unknown-usage:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
00007f9cd099f000 4 4 4 4 0 r-xp- /memfd:JITCode:/home/tjmaciei/obj/qt/qt5/qtbase/lib/libQt5Qml.t.so.5 (deleted)
I suppose that before upstreaming this patch, we'd change the "QtQml"
name prefix or remove it.
Change-Id: I84e45059a888497fb55ffffd14d3ba60f9707051
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove abs(long) definition, since the #ifdef check no longer works
with QNX7 and QNX < 6.6 is no longer supported.
[ChangeLog][Qml] Enabled ARM64 JIT for QNX7
Change-Id: Ife02f3edb508eddaf15da65954496265366e232d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
|
|
|
|
|
| |
It has had that for longer than Clang has existed.
Change-Id: I84e45059a888497fb55ffffd14d3c03160312537
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The template function isn't necessary anymore. It actually breaks
the build...
ARM64Assembler.h(3275): error: no instance of function template "assertUnused" matches the argument list
argument types are: (bool)
Assertions.h(238): note: this candidate was rejected because arguments do not match
Change-Id: I27b55fdf514247549455fffd14b1c6dfe92f2b88
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In latest versions of Windows, one can use VirtualAllocFromApp also
without CodeGeneration flag being set. In conjunction with the new
garbage collector that let to the situtation that the gc tried to
reserve using VirtualAlloc, then the V4Engine constructor checked for
JIT availability and disable JIT. This lead to VirtualAllocFromApp
alloced memory could not be used anymore and caused to a crash latest
when trying to commit or release.
With WinRT 8.1 being removed, we do not need the mem_align version
anymore and can stick with VirtualAllocFromApp/Free, with the JIT check
only testing VirtualProtectFromApp.
Task-number: QTBUG-59198
Change-Id: I57f2259c6a6298b8761d00d3abf2589c30de1f63
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
commit() was never implemented for the WinRT version of the OS
Allocator.
This commits fixes this under following setup
- you have to use x86 or x64
- you have to use the experimental JIT
For any of the other situations followup patches will follow.
Task-number: QTBUG-59198
Change-Id: Ie87012ab2879139e27d63ac4bb96fe46905f7dfd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|