aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty
Commit message (Collapse)AuthorAgeFilesLines
* Prospective fix for native ARMv7 and ARM64 buildsSimon Hausmann2017-02-101-0/+3
| | | | | | | | | | | Don't try to instantiate the presumed "cross-assembler" twice, and also exclude the Yarr JIT from the devtools build. It requires a loadPtr enabled assembler (disabled in V4_BOOTSTRAP builds) and we don't need the regexp engine. Change-Id: I3f36b32decdbf51133b8fef641f5630c5f5102b1 Reviewed-by: Samuli Piippo <samuli.piippo@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix crash when generating cache filesSimon Hausmann2017-02-081-1/+6
| | | | | | | | | Make sure that the allocator in bootstrap builds really just allocates memory for the generated code and otherwise doesn't try to allocate executable memory. Change-Id: Ic40724903706ae98ef272a028e7d8299400e232b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix ARM64 buildSimon Hausmann2017-02-086-39/+156
| | | | | | | | | Add the ARM64 assembler to cross-compilation. Task-number: QTBUG-58568 Change-Id: I91461ebf79fb83e31e8ae2962ab0e155d308281a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix compilation of qmldevtools on Windows when cross-compilingSimon Hausmann2017-02-081-4/+24
| | | | | | | | | | | | The use of wildcards in SOURCES is an unspecified "feature" and it turns out that it doesn't work when doing option(host_build) and cross-compiling. We could use $$files(), but there is no truly good reason for using it for only some directories and not others, so this is now a manual expansion. Task-number: QTBUG-58705 Change-Id: Ib3bd7bbba01fe4130703d5635fa344b62caea5bb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Include the ARMv7 assembler in the qmldevtools bootstrap buildSimon Hausmann2017-02-019-27/+285
| | | | | | | | | | | | | | | | | | | | | | | | | Even when the C++ target is not ARMv7 we want to include it in order to be able to generate QML cache files with code ahead of time. This requires a few changes: * The Jump classes need to move from the AbstractMacroAssembler super-class into the concrete assembler sub-class, in order to use it in specializations. * Some of the template specializations in LinkBuffer for example or for platform dependent operations need to be pre-processor enabled when bootstrapping * The generic loadPtr/addPtr etc. functions need to move to the concrete assemblers to be able to call the correct 32-bit or 64-bit variations. * We need to force what looks like a loss of precision to the compiler in the 32-bit ARMv7 linking code when linking jumps. Finally then we can explicitly instantiate at least QV4::JIT::Assembler for ARMv7 when bootstrapping. Currently only on x86-64 hosts, but that is a temporary limitation. Change-Id: I501db2360e1fded48f17f17d9e87252d47f8537e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Bootstrap build fixSimon Hausmann2017-01-311-2/+5
| | | | | | | | Avoid the cache flushing code, it's of no use and won't compile due to the use of inline assembly. Change-Id: I1542b48f53f9210943bcf1f7cc5cc03f4abca695 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove branch compaction #ifdefSimon Hausmann2017-01-3110-68/+155
| | | | | | | | | | | | | Since the #ifdef for ARMv7 and ARM64 makes it impossible to cross compile, we need to replace it with a template specialization of LinkBuffer. The "old" LinkBuffer becomes LinkBufferBase, then there's a generic LinkBuffer that's a sub-class of LinkBufferBase. Then there's a BranchCompactingLinkBuffer template that implements the compaction and two ARMv7 and ARM64 specializations of LinkBuffer<T> end up being sub-classes of BranchCompactingLinkBuffer instead of LinkBufferBase. Change-Id: Ib62fe24aa6c3570dfa311edc39fde6fb5975f3cc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Changed JSC::MacroAssembler to be a templateSimon Hausmann2017-01-283-5/+37
| | | | | Change-Id: If6edb7ed0fac51e93b218eb45c01274a87b9e904 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Make JSC::LinkBuffer a templateSimon Hausmann2017-01-2811-166/+173
| | | | | | | Unfortunately the link buffer depends on target platform types. Change-Id: Idb49e72e8e864c709293a7b315dff948bc58e62a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Cleanup MacroAssembler in preparation for becoming a templateSimon Hausmann2017-01-281-53/+74
| | | | | | | Move some of the used types and functions into the class name space. Change-Id: I2da72714d796a202ae9181c7a18745a94d95d925 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add masm allocator for INTEGRITYKimmo Ollila2017-01-262-0/+233
| | | | | | Change-Id: I0d351f03416ff7ff596eccc88bb49abd48590b3f Reviewed-by: Antti Kokko <antti.kokko@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Merge remote-tracking branch 'origin/5.8' into devLiang Qi2017-01-261-1/+1
|\ | | | | | | | | | | | | | | Conflicts: src/quick/util/qquickutilmodule.cpp tools/qmllint/main.cpp Change-Id: Ic2283f88c293ca7fc776de3e83eb4c7812309d8a
| * No need to define c99 math functions in c++11 modeJulien Gueytat2017-01-221-1/+1
| | | | | | | | | | Change-Id: I5a04cb678ad4a222d2a716dd1499f5103bb66c8e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Remove support for WinRT 8.1 and Windows Phone 8.1Maurice Kalinowski2017-01-192-22/+2
| | | | | | | | | | | | Task-number: QTBUG-57288 Change-Id: Id106f09dc824fbd95780dc5b479e16802d183e57 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Add initial support for INTEGRITYKimmo Ollila2017-01-133-4/+19
|/ | | | | | Change-Id: I1b44263a700f6c48c3b7798b662b30b03f9a4dc4 Reviewed-by: Rolland Dudemaine <rolland@ghs.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Allow for the QML engine to run on "hardened" Linux systemsSimon Hausmann2016-11-221-0/+10
| | | | | | | | | | Similar to WinRT let's test whether we can allocate executable memory before enabling the JIT. The caller code will fall back to the interpreter. Task-number: QTBUG-56758 Change-Id: I63d6830c6acc8cb316333162be212e1764483baa Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.8Simon Hausmann2016-10-131-1/+1
|\ | | | | | | Change-Id: I175b27337b534c0b8f46a4a792d2c43cde73ffc4
| * Fix linking against static build in Visual Studio 2015Pavol Markovic2016-10-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fix builds on commit f656fc588bab4104d531cb46836168da6736a518 from 22 April 2016 which conditionally includes missing math functions for Visual Studio older than 2013. log2 and log2f functions have not been included in the fix because there was no name conflict in Qt lib itself, but the problem becomes prominent when trying to link an application simultaneously to libucrt.lib and qt built with -static -static-runtime options. This fix corrects following linking issues: Qt5Qml-static.lib(qv4value.obj) : error LNK2005: _log2 already defined in libucrt.lib(log2d.obj) Qt5Qml-static.lib(qv4dateobject.obj) : error LNK2005: _log2 already defined in libucrt.lib(log2d.obj) Qt5Qml-static.lib(qv4runtime.obj) : error LNK2005: _log2 already defined in libucrt.lib(log2d.obj) Qt5Qml-static.lib(qv4globalobject.obj) : error LNK2005: _log2 already defined in libucrt.lib(log2d.obj) Qt5Qml-static.lib(qv4jsonobject.obj) : error LNK2005: _log2 already defined in libucrt.lib(log2d.obj) This fix has been previously committed to dev branch for review but was recommended to use branch 5.6, same as referenced commit. Change-Id: Iad88d1665c243c4beb91fe71bf5de390cc8ee73e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Add qt_attribution.json file for masmKai Koehne2016-09-192-0/+45
| | | | | | | | | | Change-Id: Ied24eb3dd3741c913f4a4ec80fe39d0678e46d5c Reviewed-by: Topi Reiniƶ <topi.reinio@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-08-171-2/+20
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qqmltypecompiler.cpp src/qml/compiler/qv4isel_moth.cpp src/qml/compiler/qv4ssa_p.h src/qml/qml/qqmlobjectcreator.cpp Change-Id: I8bb7fe773d657f908f20ee5e72c2b9bd643f6260
| * | V4: Align stack on 16 byte boundaries in the YarrJITErik Verbruggen2016-08-091-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | This is the required alignment for Aarch64, and a number of other ABIs prefer this size too when calling into system libraries. Change-Id: Ie38cabb77cf83543b915553e69c5c5728a67503b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Fix qmldevtools for QML compilerSimon Hausmann2016-08-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Re-add some run-time functions in the qmldevtools and replace the use of the WTF assert that pulls in some wtf functions with a Q_ASSERT. Change-Id: Id7b4bdb02c54e8b498db3fab78870463fa4fac9a Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | V4: Correctly enable the arm64/aarch64 disassemblerErik Verbruggen2016-08-101-1/+2
| | | | | | | | | | | | | | | Change-Id: Icdc82f831ee630de301e19313893d0f70654948c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-06-211-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickflickable_p_p.h src/quick/items/qquickpathview_p_p.h tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp Change-Id: I77664a095d8a203e07a021c9d5953e02b8b99a1e
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-201-1/+1
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jit/qv4targetplatform_p.h src/quick/accessible/qaccessiblequickitem_p.h Change-Id: Ic95075a5fad81ec997a61561bd65979dfa3b9d4d
| | * Make some QNX only code Dinkum specificJames McDonnell2016-06-141-1/+1
| | | | | | | | | | | | | | | | | | | | | The undefines won't be needed for QNX 7.0 with GNU libc++. Change-Id: Ibcea09aad54a956fc056ceaac5db6a0d53cd176c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-06-131-1/+1
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp Change-Id: I26d6435a29cac3840bb567ade5149c2562a94bf9
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-101-1/+1
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Part of 0e053528 was reverted in the merge, about lastTimestamp. It will be applied later in separate commit. qmltest::shadersource-dynamic-sourceobject::test_endresult() was blacklisted on linux. Conflicts: .qmake.conf tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp tests/auto/qmltest/BLACKLIST tests/auto/qmltest/qmltest.pro Task-number: QTBUG-53590 Task-number: QTBUG-53971 Change-Id: I48af90b49a3c7b29de16f4178a04807f8bc05130
| | * Compile Fix for OpenBSD in C++11 modeRalf Nolden2016-06-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Add a __cplusplus condition to an already existing OpenBSD defined part to activate the code only on older gcc compilers. Change-Id: Ied8719dc35bf203ecbadd1099d711c027722121c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-05-132-0/+10
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsapi/qjsengine.cpp src/qml/qml/qqmlengine_p.h src/quick/items/qquickanchors.cpp src/quick/items/qquickanimatedimage_p_p.h src/quick/items/qquickitem_p.h tests/auto/qml/qqmlecmascript/testtypes.h tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp tests/benchmarks/qml/creation/tst_creation.cpp Change-Id: I65861e32f16e8a04c7090a90231627e1ebf6ba6f
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-04-272-0/+10
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickimagebase.cpp src/imports/layouts/plugin.cpp Change-Id: I5f48474df4034a1347ec74795c85d369a55b6b21
| | * Fix compilation with Visual Studio 2015 Update 2 (static build)Kai Koehne2016-04-222-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix linker errors: Qt5Qml.lib(qv4value.obj) : error LNK2005: _nextafter already defined in libucrt.lib(nextafter.obj) Qt5Qml.lib(qv4dateobject.obj) : error LNK2005: _nextafter already defined in libucrt.lib(nextafter.obj) Qt5Qml.lib(qv4runtime.obj) : error LNK2005: _nextafter already defined in libucrt.lib(nextafter.obj) Qt5Qml.lib(qv4globalobject.obj) : error LNK2005: _nextafter already defined in libucrt.lib(nextafter.obj) Qt5Qml.lib(qv4jsonobject.obj) : error LNK2005: _nextafter already defined in libucrt.lib(nextafter.obj) All the defined functions where added in Visual Studio 2013: https://blogs.msdn.microsoft.com/vcblog/2013/07/19/c99-library-support-in-visual-studio-2013/ Change-Id: Ied924b6c93c6b2f81f2793237c9370a70bd6a60c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devAndy Nichols2016-04-053-4/+7
|\| | | | | | | | | | | Change-Id: I57b06e2e98beb010a56dd0593d93e078ecf76eea
| * | Remove dummy implementation for Pass*Ptr operator=().Rolland Dudemaine2016-04-042-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | This resolves a lot of warnings when building with the GHS toolchain. Change-Id: I061dac0bf42f6a8158afe8eee9c898e8f7ee4dd7 Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * | QNX: Fix compilationRafael Roquetto2016-03-091-0/+4
| | | | | | | | | | | | | | | | | | | | | QNX only export library functions into the std namespace. Change-Id: Id5c479bb8b4540e26edabd6f50bc0f3f32e72432 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | | Remove Windows CE.Friedemann Kleint2016-03-102-55/+0
|/ / | | | | | | | | | | | | | | Remove #ifdef sections for Q_OS_WINCE and wince .pro file clauses. Task-number: QTBUG-51673 Change-Id: I33ab74f0c2ce9086c3610c5fa727f281197b6b55 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Enable V4 JIT for aarch64Laszlo Agocs2016-02-011-1/+1
| | | | | | | | | | | | | | | | | | | | 64-bit ARM boards (f.ex. with Tegra X1) are becoming common and therefore enabling the JIT would be highly beneficial. Change-Id: I5ee46258151885194f93d2528edddd5f51dff964 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* | V4: Tweak "enable JIT" ifdefs.Erik Verbruggen2016-01-201-0/+4
| | | | | | | | | | | | | | | | | | | | | | - indentation, to make it readable - on arm64: only enable for Linux (but only after future testing!) - add CONFIG+=force-compile-jit handling so the JIT can be compiled/used even on platforms that don't officially support it (like iOS, where it works if you run from Xcode). This is done for debugging purposes. Change-Id: I8611ba409e10305f480463a16d88bc854b1c218a Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Updated license headersJani Heikkinen2016-01-1923-322/+460
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: Ic36f1a0a1436fe6ac6eeca8c2375a79857e9cb12 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | V4: add Aarch64/ARM64 support.Erik Verbruggen2016-01-1917-14/+9305
| | | | | | | | | | | | | | | | | | | | This uses the JavaScriptCore assembler rev. 195098. It is tested on iOS (for which it is disabled, as it only allows marking pages as executable when running from Xcode). Testing on Linux will be done when hardware arrives. Change-Id: I650e15fec03c27d4b326a2d70863a89b85cfc5c3 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | WinRT: Enable JIT for x86/x64 target platformsMaurice Kalinowski2016-01-165-10/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This only works for Windows 10 and later. Setting the "Code Generation" capability in the manifest, WinRT applications can use JIT for Windows 10 Desktop. Update the Allocator in regards to this and also update the VirtualProtectFromApp section. When the engine gets initialized, check for marking an area as executable. If it fails, fallback to interpreter mode. This does not affect ARM platforms, as we do not have calling conventions yet. It is implicitly disabled as V4_ENABLE_JIT is not defined. [ChangeLog][WinRT] Enable JIT for x86/x64 targets on Windows 10 and later. Change-Id: Ie05add5263f71387c5ce98456b9bec86c6c07ceb Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | V4 JIT: Switch all platforms to W^X for the ExecutableAllocator.Erik Verbruggen2016-01-152-24/+53
| | | | | | | | | | | | | | | | This also fixes makeWritable, which needs to work in order to add more c0d3 to used pages. Also finish the WinRT parts. Change-Id: Idaa4187b1ec256e65c881285a608f3a51fdbeebd Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | tvOS supportMike Krus2016-01-011-0/+5
| | | | | | | | | | | | Change-Id: If48e8bcf55781d1148e15ce19e07cfbe35d829d2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
* | Remove libdouble-conversionUlf Hermann2015-11-2320-6146/+0
|/ | | | | | | | We can use facilities in qtbase to convert doubles to strings now. This also makes the fix to QTBUG-47070 obsolete. Change-Id: I2f813164ff788b96281c3ffd37d8d2c65665de80 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* QML: Sanitize reading environment variables.Friedemann Kleint2015-10-221-1/+1
| | | | | | | | | | | Where possible, use qEnvironmentVariableIsSet()/ qEnvironmentVariableIsEmpty() instead of checking on the return value of qgetenv(). Where the value is required, add a check using one of qEnvironmentVariableIsSet()/Empty(). Change-Id: Ia8b7534e6f5165bd8a6b4e63ccc139c42dd03056 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Fix a crash when m_file is 0Lars Knoll2015-08-101-1/+2
| | | | | Change-Id: If26e00877521c78a9d48b9798fe64e1d587bc10a Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* V4: add mips32 disassembler.Julien Brianceau2015-06-196-1/+759
| | | | | | | | | Add a rudimentary disassembler for mips32 instruction set. Although few instructions might be missing, the whole set from MacroAssemblerMIPS should be covered. Change-Id: I9b1b9b40537b99098ca65036f671651d04fe1ab6 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.5' into devSimon Hausmann2015-06-042-1/+4
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4engine_p.h src/quick/items/qquickitemsmodule.cpp src/quick/items/qquicktext.cpp src/quick/util/qquickpixmapcache.cpp tests/auto/quick/qquickwindow/tst_qquickwindow.cpp Change-Id: I90ecaad6a4bfaa4f36149a7463f4d7141f4a516a
| * WinRT: fix warningsMaurice Kalinowski2015-05-192-1/+4
| | | | | | | | | | | | Change-Id: If11db499d743cbe79959145ecfcbcfec896a6845 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* | V4: add JIT support for mips platforms (32-bit) and enable itJulien Brianceau2015-04-271-1/+31
|/ | | | | | | [ChangeLog][QtQml] Enabled Just-In-Time compilation for JavaScript on MIPS Change-Id: Idce070f29645760d6376767ef67e4592828c104d Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>