aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty/masm/assembler
Commit message (Collapse)AuthorAgeFilesLines
* masm: Add copy ctors for LinkRecordUlf Hermann2022-09-072-0/+8
| | | | | | | | | | | Having an implicit copy ctor and an explicit assignment operator is deprecated. Fixes: QTBUG-104077 Pick-to: 6.4 Change-Id: I03a08c71ac49d50728b1675f6f4533f4421f8126 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* masm: fix -Wdeprecated-enum-enum-conversionMarc Mutz2022-07-061-2/+2
| | | | | | | | | | | C++20 deprecated mixed-enum arithmetic. Cast one of the enums to int to suppress the warning. Pick-to: 6.4 6.3 6.2 5.15 Fixes: QTBUG-103943 Change-Id: I157be3368d6a0f201f3f4ddd7248479ee544d32d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* masm: Repace bitwise | with || in bool expression in X86Assembler.hAndrei Golubev2022-03-091-1/+1
| | | | | | | | | | | | | | | Produces a warning with clang 15 on Ubuntu: /home/ag/work/qt5/qtdeclarative/src/qml/../3rdparty/masm/assembler/X86Assembler.h:2368:23: error: use of bitwise '|' with boolean operands [-Werror,-Wbitwise-instead-of-logical] emitRexIf(byteRegRequiresRex(reg)|byteRegRequiresRex(rm), reg, 0, rm); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Similar logic already uses || so this seems to be a typo. Pick-to: 6.3 6.2 Change-Id: Ie539600e28748d902fbb443e47892a703003c7e6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* masm: Fix whitespaces in x86Assembler.hAndrei Golubev2022-03-091-72/+72
| | | | | | | Pick-to: 6.3 6.2 Change-Id: I7a64585cc47c5dd3b1bb2139246bd98eea6335b9 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Modify m_compareRegister bitfieldTang Haixiang2022-02-021-1/+1
| | | | | | | | | | | It's from https://trac.webkit.org/changeset/246151/webkit/trunk/ Source/JavaScriptCore/assembler/ARM64Assembler.h Fixes: QTBUG-100221 Fixes: QTBUG-100279 Pick-to: 5.15 6.2 6.3 Change-Id: I7a5ec6d97bf52f8cc7bcfb70f184565fc4b78624 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Avoid undefined behavior in the JITUlf Hermann2021-06-174-1/+5
| | | | | | | | | | | We need to add an entry to all the RegisterID enums, so that we can mark a RegisterID as invalid. Pick-to: 6.2 Task-number: QTBUG-94068 Change-Id: I5c13b271eade50fd63327612514ba7ebe33a5c39 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* masm: Add error handling for failed mprotect()Ulf Hermann2021-01-128-196/+13
| | | | | | | | | | | | If we cannot mprotect() we have to abort the JIT compilation. Delete RepatchBuffer.h as it is unfixable in that regard. Luckily we don't use it. Task-number: QTBUG-89659 Pick-to: 5.15 Change-Id: Ic5ddbdf51b471db4ddeaa75aab48b24c1f7ced56 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* JIT: When making memory writable, include the exception handlerUlf Hermann2020-12-173-9/+10
| | | | | | | | | | | | makeWritable() rounds the memory down to the next page boundary. Usually we include the exception handler this way, unless the offset from the page boundary is less than the exception handler size. Make it explicit that we do want the exception handler to be writable, too. Fixes: QTBUG-89513 Pick-to: 5.15 6.0 Change-Id: I2fb8fb0e1dcc3450b036924463dc1b40d2020c46 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Replace old Q_DECL statements with modern C++Allan Sandfeld Jensen2020-10-311-8/+8
| | | | | | | Since we depend on C++17 now, all of these can go. Change-Id: I0484fd4bb99e4367ec211c29146c316453729959 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add ; to Q_UNUSED and UNUSED_PARAMLars Schmertmann2020-06-262-6/+6
| | | | | | | | | This is required to remove the ; from the macro with Qt 6. Task-number: QTBUG-82978 Change-Id: Iead53d18fd790fb2d870d80ef2db79666f0d2392 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* make LinkBufferBase::finalizeCodeWithDisassembly() less genericRolf Eike Beer2019-12-121-16/+12
| | | | | | | | | It is actually called from only one place, so adapt it to what that caller really needs, removing more excessive newlines. Change-Id: Ieb1a24ddb911d86af1f862e35e4fdd7ad2d9ff13 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* masm: drop some excessive newlines in debug messagesRolf Eike Beer2019-11-281-3/+2
| | | | | | | | | | | | | | | | | | | The current output would look like this (including the blank lines): [20191115 12:32:37.378 UTC 0xc47cb8 default: Generated BaselineJIT code for [20191115 12:32:37.379 UTC 0xc47cb8 default: function expression for source [20191115 12:32:37.379 UTC 0xc47cb8 default: : [20191115 12:32:37.379 UTC 0xc47cb8 default: Code at [0x671068d1, 0x671069bd): [20191115 12:32:37.379 UTC 0xc47cb8 qt.v4.asm: disassembly not available for range 0x671068d1...0x67106997 [20191115 12:32:37.379 UTC 0xc47cb8 qt.v4.asm: Drop 3 of the newlines to make it not beautiful, but at least not totally verbose. Change-Id: I850b7acede33ddbb5f6ab74fd760962ca18988c8 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* rtems: Add support cacheFlushMikhail Svetkin2019-06-281-0/+6
| | | | | | Change-Id: I004a766778e6ee2e2aef577a175419fb1b2e09e0 Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* 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>
* Enable back references in YarrUlf Hermann2019-04-181-0/+8
| | | | | | | | | | 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>
* | | Upgrade Yarr to latest version from WebKitUlf Hermann2019-02-261-0/+17
|/ / | | | | | | | | | | | | | | | | 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-291-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | 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>
* | V4: Generate function tables on 64bit windowsUlf Hermann2018-12-031-0/+13
|/ | | | | | | | | | | | | | 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>
* V4: Add JIT kind to disassemblyErik Verbruggen2018-08-301-9/+9
| | | | | Change-Id: I6dd1cd6f795a93a186e84f5ab1c606f7e23fb85d Reviewed-by: Lars Knoll <lars.knoll@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-115-4516/+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-1011-10/+167
| | | | | | | | | | | 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>
* 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>
* Fix UBSAN warnings in masmErik Verbruggen2018-05-032-3/+19
| | | | | Change-Id: Ie86307fe55fce957adf48e9861022fddfa3d7374 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* 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-261-0/+6
| | | | | | | | 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>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-02-021-0/+7
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp src/qml/compiler/qqmlirbuilder.cpp src/qml/compiler/qqmlirbuilder_p.h src/qml/compiler/qqmltypecompiler.cpp src/qml/compiler/qv4codegen.cpp src/qml/compiler/qv4codegen_p.h src/qml/compiler/qv4compileddata_p.h src/qml/compiler/qv4compiler.cpp src/qml/compiler/qv4compilercontext_p.h src/qml/compiler/qv4isel_moth.cpp src/qml/compiler/qv4jsir.cpp src/qml/compiler/qv4jsir_p.h src/qml/jit/qv4isel_masm.cpp src/qml/jsruntime/qv4engine.cpp src/qml/jsruntime/qv4functionobject.cpp src/qml/jsruntime/qv4runtimecodegen.cpp src/qml/jsruntime/qv4script.cpp src/qml/jsruntime/qv4script_p.h src/qml/qml/qqmltypeloader.cpp src/quick/items/qquickanimatedimage.cpp src/quick/items/qquickanimatedimage_p_p.h src/quick/scenegraph/compressedtexture/qsgpkmhandler.cpp tests/auto/qml/qmlplugindump/qmlplugindump.pro tests/auto/qml/qmlplugindump/tst_qmlplugindump.cpp tools/qmlcachegen/qmlcachegen.cpp tools/qmljs/qmljs.cpp Done-with: Shawn Rutledge <shawn.rutledge@qt.io> Done-with: Lars Knoll <lars.knoll@qt.io> Done-with: Ulf Hermann <ulf.hermann@qt.io> Change-Id: I010e6525440a85f3b9a10bb9083f8e4352751b1d
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-241-0/+7
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/qml/compiler/qv4codegen.cpp src/qml/compiler/qv4compileddata_p.h src/qml/debugger/qqmlprofiler_p.h src/qml/jsruntime/qv4engine.cpp src/qml/memory/qv4mm.cpp src/qml/qml/qqmlcomponent.cpp src/qml/qml/qqmlobjectcreator.cpp src/qml/qml/qqmlobjectcreator_p.h src/qml/types/qqmldelegatemodel.cpp src/quick/items/qquickitem_p.h src/quick/items/qquickwindow.cpp tests/auto/quick/touchmouse/BLACKLIST tests/benchmarks/qml/holistic/tst_holistic.cpp Change-Id: I520f349ab4b048dd337d9647113564fc257865c2
| | * Enable JIT on QNX7 for ARM64Samuli Piippo2018-01-111-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | V4: Add int32 fastpath for add/sub/mul in the JITwip/new-backendErik Verbruggen2017-11-211-2/+7
| | | | | | | | | | | | | | | Change-Id: I21b0e31c7c93ae51b4ab406948450e566546e246 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | V4: Add a baseline JITErik Verbruggen2017-11-173-1/+25
|/ / | | | | | | | | | | | | | | This patch add a JIT back in for all platforms that supported JITting before, with the exception of MIPS. Change-Id: I51bc5ce3a2ac40e0510bd72a563af897c5b60343 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-06-063-21/+19
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * Fix build on MIPS32Simon Hausmann2017-05-101-8/+0
| | | | | | | | | | | | | | | | Remove stack handling function that's dead code that doesn't compile. Task-number: QTBUG-58567 Change-Id: I704b0323522ce2a313d6cc85112f782872c3bf68 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix crash in pre-cross-compiled ARMv7 code when host was 64-bitSimon Hausmann2017-05-041-8/+14
| | | | | | | | | | | | | | | | | | | | When encoding negative offsets for relative jumps, we must stay within signed 32-bit range to correctly perform all the different thumb offset encodings correctly. Task-number: QTBUG-60441 Change-Id: I0a7243debbcbc4d557710dddbd39cb97bd702da4 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix ARM64 code generationSimon Hausmann2017-05-031-5/+5
| | | | | | | | | | | | | | | | | | | | When generating instructions for pointer arithmetic, do use the 64-bit registers, otherwise for example when loading pointers we'll end up only loading the lower 32 bits. Task-number: QTBUG-60441 Change-Id: I2c7c82964029e383afcadabc078842690d2d637a Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-03-306-5/+15
|\| | | | | | | | | | | | | | | Conflicts: src/qml/jit/qv4assembler.cpp src/qml/jit/qv4assembler_p.h Change-Id: Ibfe69610ccd1f275f181b2bd87feece4ba221e50
| * Fix stack pointer arithmetic when cross-compilingSimon Hausmann2017-03-296-4/+14
| | | | | | | | | | | | | | | | | | | | Replace the use of size(void*) with target assembler specific values for the pointer size, when calculating offsets into the stack for poke/peek/push/pop and placing arguments onto the stack before calling functions. Change-Id: I3aff540f0083967e75b61e0c29dbeb4d9ecfa433 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix pop(RegisterID) on ARMv7 when cross-compilingSimon Hausmann2017-03-291-1/+1
| | | | | | | | | | | | | | | | | | This is implemented as ldr instruction that automatically adjusts the indexing register, which for ARMv7 needs to be always 4-bytes, not sizeof(void*) which can be 8 on 64-bit hosts. Change-Id: I66cce2a7388ef12b321db643e8efb002158519aa Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-03-141-0/+2
|\| | | | | | | Change-Id: I0ec164ce6e8099e6e4d6b40a3c7340737473ef4b
| * Fix build in clang5.0Jesus Fernandez2017-03-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: X86Assembler.h:281:19: error: 'm_assembler' is a protected member of 'JSC::AbstractMacroAssembler<JSC::X86Assembler>' masm->m_assembler.linkJump(m_label, masm->m_assembler.label()); AbstractMacroAssembler.h:819:19: note: declared protected here AssemblerType m_assembler; Change-Id: I04f6dc254e9826b9835a43b604a05ea4c57f661b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Add missing 64 bit shift operations to the X64 macro assemblerLars Knoll2017-03-092-20/+73
|/ | | | | Change-Id: I1e593e5ed0bb24ed3a158d98495209945c8bb309 Reviewed-by: Simon Hausmann <simon.hausmann@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>
* Include the ARMv7 assembler in the qmldevtools bootstrap buildSimon Hausmann2017-02-018-23/+281
| | | | | | | | | | | | | | | | | | | | | | | | | 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-319-64/+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-282-2/+34
| | | | | Change-Id: If6edb7ed0fac51e93b218eb45c01274a87b9e904 Reviewed-by: Lars Knoll <lars.knoll@qt.io>