aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty
Commit message (Collapse)AuthorAgeFilesLines
* Remove the bootstrap code from assembler and JITUlf Hermann2019-05-0710-249/+19
| | | | | | | We don't build the assembler or the JIT in bootstrap mode. Change-Id: Idc3a56cc1e9cfba415bef9cba221c8a60ee75010 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-05-021-1/+2
|\ | | | | | | Change-Id: I5d2c3da38df35922b2147c3c0bc55c6c3bae2fe5
| * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-05-011-1/+2
| |\ | | | | | | | | | Change-Id: Ic008bf9223a9ac293c925044355ff218f7ed7f78
| | * Yarr: Reject quantifiers larger than 16MUlf Hermann2019-04-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Nobody needs those and we run into integer overflows later on if we accept them. Fixes: QTBUG-74048 Change-Id: Ib8ccd05e4bd6f662c38fbe95bf1350f81982e1b8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Transform V4_ENABLE_JIT into a featureUlf Hermann2019-04-251-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This way you can enable or disable the JIT when configuring Qt. The conditions for the availability of the JIT have also been cleaned up. There is no reason anymore to artificially restrict availability on x86 and x86_64. The reason for the existence of those clauses are old problems on windows that have been fixed by now. However, on arm and arm64, we need a specialization of the cacheFlush() function for each OS to be supported. Therefore, restrict to the systems for which such a specialization exists. iOS and tvOS are technically supported and you can enable the JIT via the feature flag now. Due to Apple's policy we disable it by default, though. Change-Id: I5fe2a2bf6799b2d11b7ae7c7a85962bcbf44f919 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Enable back references in YarrUlf Hermann2019-04-182-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-04-181-4/+4
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlimport.cpp Change-Id: I6add6267297ea50a646d43d212027a168dca8916
| * | Merge remote-tracking branch 'origin/5.12' into 5.13v5.13.0-beta3Qt Forward Merge Bot2019-04-151-4/+4
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/masm/assembler/LinkBuffer.h src/qmltest/doc/src/qtquicktest-index.qdoc tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp Change-Id: I7d83ad95cf489dda794dd7a0a33bad3ef3b05609
| | * Ensure the correct version of LinkBuffer's performFinalization is calledAlec Rivers2019-04-121-4/+4
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-74876 Change-Id: I8e816d29b709750b121cc63edfc5f3493a3ed119 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-04-101-0/+1
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlmetatype.cpp src/qml/types/qqmlmodelsmodule.cpp Change-Id: Idc63689ba98d83a455283674f4b5cf3014473605
| * | Fix build without c++14Allan Sandfeld Jensen2019-03-291-0/+1
| | | | | | | | | | | | | | | | | | | | | The backup implementation of make_unique is in Optional.h Change-Id: I7a7f31ff451ec5336468b8447088e3f4d5d0cecb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | V4: Add headers from LLVM that define an intrusive list templateErik Verbruggen2019-03-2218-0/+3036
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These intrusive list is used in the follow-up patch, where it is used to hold a list of basic blocks in a function, and a list of instructions in the basic block. The advantage of this implementation is that it there is an easy and direct access to iterators when you have an element, it defines STL-like iterators, is double-linked, and you can easily insert before and after elements. We don't have something like this in Qt, and it's better to take an existing and well-tested implementation that making a home-grown one. Change-Id: Ie8c726eafe6d7558ae6a3550e8ecc2f15f362b17 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | JSC::Yarr::Parser: fix invalid noreturn warningYulong Bai2019-03-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Function 'isValidNamedForwardReference' declared 'noreturn' but still returned. Attribute macro 'NO_RETURN_DUE_TO_ASSERT' is deleted to pass compilation for GCC and Clang while [-Werror,-Winvalid-noreturn] enabled. Fixes: QTBUG-74250 Change-Id: I6f7f64ffacf8003f0c695e6a4b9cb422ba57153c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Upgrade Yarr to latest version from WebKitUlf Hermann2019-02-2615-221/+746
|/ / | | | | | | | | | | | | | | | | This is an upgrade to commit cbb0aa18662bc26da31de91e2104c030eaa6ead2 in webkit. It causes some more ecmascript tests to pass. Fixes: QTBUG-73915 Change-Id: I8bb5ff9b37907d17b1020576ba64f0b3aed2f1b3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2019-01-292-5/+5
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/masm/yarr/YarrJIT.cpp src/qml/compiler/qv4instr_moth.cpp src/quick/handlers/qquicksinglepointhandler_p.h src/quick/handlers/qquicktaphandler.cpp src/quick/items/context2d/qquickcontext2d.cpp Done-With: Ulf Hermann <ulf.hermann@qt.io> Change-Id: I109453131f9f0a05316ae37c7d6ed1edc8c0f9d4
| * Fix cacheFlush ManageCaches flags for INTEGRITYJanne Koskinen2019-01-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | Use ACCESS_DST_SYNC to flush I-cache instead of ACCESS_DST_COHERENT D-cache flush. Fixes invalid instruction crash caused by out of sync instruction cache. Task-number: QTBUG-72267 Change-Id: Icb95050c9fee42ae7fa659b8ed4d3a4fbb98df6e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io>
| * When matching RegExps catch JIT failuresUlf Hermann2019-01-091-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The Yarr JIT can generate code that fails to evaluate the RegExp at runtime. In that case we need to fall back to the interpreter. Also, don't needlessly cast the unsigned return value of RegExp::match to signed int before range-checking it. And fix some typos in the comments for the disassembler dumps. Fixes: QTBUG-72879 Change-Id: Ic8f80c076d6461d714816a9f66e1cac1d9b0c7a8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-12-231-1/+1
|\| | | | | | | Change-Id: I9c3d282c11a556e616c5e1ba1b51e88b741327f6
| * Fix ICC change-of-sign warningsThiago Macieira2018-12-121-1/+1
| | | | | | | | | | | | | | error #68: integer conversion resulted in a change of sign Change-Id: I4ac1156702324f0fb814fffd156f81056d117bcb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-12-121-1/+2
|\| | | | | | | | | | | | | Conflicts: tests/auto/qml/debugger/qqmldebugjs/tst_qqmldebugjs.cpp Change-Id: Ic1dace832ad4b29023d24808b8617b5dcc915eb5
| * Fix an ambiguity with gcc 4.9Ville Voutilainen2018-12-071-1/+2
| | | | | | | | | | | | | | | | | | | | The detection of make_unique seems brittle. Luckily, gcc 4.9 sets a feature-testing macro for it, so adding that to the conditional of masm's own make_unique avoids the problem. Change-Id: I43a988eba7bc0f0795a3d47c70b7a8d121a0ed2d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | V4: Generate function tables on 64bit windowsUlf Hermann2018-12-034-16/+63
|/ | | | | | | | | | | | | | In order for global exception handlers to be called reliably, the runtime needs to unwind through JIT-generated code. This can be facilitated by installing a "function table" for each JITed function that specifies "use the frame pointer". Also make sure to generate a function table for JIT'ed regular expressions. Those were forgotten also in the linux case. Fixes: QTBUG-50061 Change-Id: Ib0b8ae9356ed80afe1cab017e36efa4ccbe73f90 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.12.0' into 5.12Qt Forward Merge Bot2018-11-162-1/+12
|\ | | | | | | Change-Id: I7623438dde316ae1e97802f91991f2e7ccc205a5
| * Add a configure test for std::make_uniqueLars Knoll2018-11-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | Seems like this is the only reliable way to determine whether we have std::make_unique() or need to provide our own version. Change-Id: I5b162e0a2d2448d7bc519958c6e85a075812135a Fixes: QTBUG-71448 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * INTEGRITY: Fix build failureJanne Koskinen2018-11-071-0/+10
| | | | | | | | | | | | Change-Id: Ibdf441d8c73b507a404391f82695d7a99eb3c6ca Reviewed-by: Tuukka Turunen <tuukka.turunen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | masm: Don't call fclose(nullptr) and initialize staticsUlf Hermann2018-11-142-2/+3
| | | | | | | | | | | | | | Otherwise our disassembler crashes on QV4_SHOW_ASM. Change-Id: I63b20c0932452fe852773f91ebecaa7f31dd040d Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | Yarr: Fix developer build with MinGW 64Friedemann Kleint2018-11-131-0/+8
|/ | | | | | | | | | | | | | | Use the MinGW/Windows runtime specific printf formats for size_t, formats, fixing: 3rdparty\masm\yarr\YarrInterpreter.cpp: In lambda function: 3rdparty\masm\yarr\YarrInterpreter.cpp:2128:24: error: unknown conversion type character 'z' in format [-Werror=format=] out.printf("%4zu", index); ^~~~~~ 3rdparty\masm\yarr\YarrInterpreter.cpp:2128:24: error: too many arguments for format [-Werror=format-extra-args] cc1plus.exe: all warnings being treated as errors Change-Id: I9d39c51b907fc7834aaf353dd0ce8095852f9b3e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix compilation in C++11 modeLars Knoll2018-10-152-0/+12
| | | | | | | | 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>
* Merge remote-tracking branch 'origin/5.11' into 5.12Liang Qi2018-10-081-0/+2
|\ | | | | | | | | | | | | | | Conflicts: src/3rdparty/masm/yarr/YarrJIT.h src/quick/items/qquickwindow.cpp Change-Id: I551404e1558d56c0b0626346ad1c86406bff0ec7
| * YarrJIT: disable MatchResult decoding constructor on 64bitErik Verbruggen2018-10-022-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The YarrJIT generated code returns result differently on 32bit and 64bit platforms: on 64bit the struct is returned (where Win64 is explicitly handled separately), but on 32bit a uint64_t is returned. This constructor takes care of decoding that uint64_t value, so it is only needed on 32bit platforms. The code is actually invalid on 64bit. Task-number: QTBUG-69996 Change-Id: Ie8cc737da55633aafa4bd6b3ebb8625b4ab354c1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into 5.12Liang Qi2018-10-013-7/+11
|\| | | | | | | | | | | | | Conflicts: src/quick/items/qquickevents_p_p.h Change-Id: I8c699aeb46903e2ea80a97a346cb5af460859a98
| * Fix Integrity OS allocator memory attributesJanne Koskinen2018-09-283-7/+11
| | | | | | | | | | | | | | | | | | 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>
* | Fix compile error with gcc7 in developer mode by defining FALLTHROUGHDavid Faure2018-09-071-1/+2
| | | | | | | | | | | | | | | | 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>
* | V4: Add JIT kind to disassemblyErik Verbruggen2018-08-303-16/+16
| | | | | | | | | | Change-Id: I6dd1cd6f795a93a186e84f5ab1c606f7e23fb85d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge dev into 5.12Oswald Buddenhagen2018-08-211-2/+2
|\ \ | | | | | | | | | Change-Id: Ib4dd56aa31ea0f2026b61dbae061d0b333426d0f
| * | Fix udis86 compilationErik Verbruggen2018-08-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | Update Apple copyright year in the MASM attributionsSimon Hausmann2018-08-201-1/+1
|/ / | | | | | | | | | | | | Amends commit 18d2f78437d28987297148b63b99ceed6313a78a Change-Id: I5e81d6f0de945a06580fb7d8faedd4ee9df184a5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Enable the Yarr JIT for regexps with nested parenthesisLars Knoll2018-08-111-1/+1
| | | | | | | | | | Change-Id: I4e7a44ae2b5759febec6f83ab9fa85612515ab04 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Get rid of the Macro assembler for ARMv6 and earlierLars Knoll2018-08-117-3083/+0
| | | | | | | | | | | | | | | | We've not been using it for quite some time, and the interpreter is the better fallback option there. Change-Id: If4d698115eec6038b369586ebdd8c1e4b88ea0ba Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Get rid of the SH4 macro assemblerLars Knoll2018-08-116-4520/+0
| | | | | | | | | | | | | | | | 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>
* | Update Yarr to the latest version from WebKitLars Knoll2018-08-1056-1682/+6144
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-07-301-0/+1
|\| | | | | | | | | | | | | | | Conflicts: examples/quick/tableview/pixelator/main.cpp examples/quick/demos/ Change-Id: Id7eaae6584017a4ab4ec9dd97b56d5c1a417f0e3
| * Doc: Add homepage to masm attributionKai Koehne2018-07-241-0/+1
| | | | | | | | | | Change-Id: I7ab9545d8c7fd747e3a6ddae8ecee53897d9cb66 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Swap the order of protection for cache flushTuomas Heimonen2018-06-211-2/+2
| | | | | | | | | | | | | | | | This is to accommodate operating systems such as VxWorks that require writable pages in order to perform the flushing Change-Id: Iefcd26a4d7fa74fa046776c6ee2883399a4d31dc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Add comment about use of memfd for JIT memory allocations on AndroidSimon Hausmann2018-05-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | 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>
* | android-clang: Fix crash in V4 JITEskil Abrahamsen Blomfeldt2018-05-251-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Fix UBSAN warnings in masmErik Verbruggen2018-05-032-3/+19
| | | | | | | | | | Change-Id: Ie86307fe55fce957adf48e9861022fddfa3d7374 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-277-84/+160
|\| | | | | | | Change-Id: I280d42b8926c0cada1f35d322b80aaf2b0ef0a73
| * Fix JIT build on INTEGRITY ARM64Kimmo Ollila2018-04-262-84/+125
| | | | | | | | | | | | | | | | | | | | | | -typedef "Jump" may not be used in an elaborated type specifier -explicit specialization of function must precede its first use -"Value" is ambiguous Change-Id: Ic15c196f1b33211cd3f2f25a54ba478747336fe4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Nikola Velinov <nvelinov@ghs.com>
| * Enable JIT on INTEGRITY ARM64Kimmo Ollila2018-04-265-0/+35
| | | | | | | | | | | | | | | | 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>