diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2017-01-10 14:14:14 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2017-01-28 19:04:29 +0000 |
commit | 39bdb9d6f30151ee24614df1dbcd2d44ec342e59 (patch) | |
tree | 28f8966e694833576d679d65555cefbc13c25d15 /src/3rdparty | |
parent | d5579e7094c70db66a193ae1daffd4c71e8fc10b (diff) |
Changed JSC::MacroAssembler to be a template
Change-Id: If6edb7ed0fac51e93b218eb45c01274a87b9e904
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/3rdparty')
-rw-r--r-- | src/3rdparty/masm/assembler/MacroAssembler.h | 31 | ||||
-rw-r--r-- | src/3rdparty/masm/assembler/MacroAssemblerARMv7.h | 5 | ||||
-rw-r--r-- | src/3rdparty/masm/yarr/YarrJIT.cpp | 6 |
3 files changed, 37 insertions, 5 deletions
diff --git a/src/3rdparty/masm/assembler/MacroAssembler.h b/src/3rdparty/masm/assembler/MacroAssembler.h index 1fbca4c55b..1d0fa0003e 100644 --- a/src/3rdparty/masm/assembler/MacroAssembler.h +++ b/src/3rdparty/masm/assembler/MacroAssembler.h @@ -68,6 +68,7 @@ typedef MacroAssemblerSH4 MacroAssemblerBase; namespace JSC { +template <typename MacroAssemblerBase> class MacroAssembler : public MacroAssemblerBase { public: using DoubleCondition = typename MacroAssemblerBase::DoubleCondition; @@ -96,6 +97,18 @@ public: using MacroAssemblerBase::jump; using MacroAssemblerBase::branch32; using MacroAssemblerBase::move; + using MacroAssemblerBase::store32; + using MacroAssemblerBase::add32; + using MacroAssemblerBase::xor32; + using MacroAssemblerBase::sub32; + using MacroAssemblerBase::load32; +#if CPU(X86_64) || CPU(ARM64) + using MacroAssemblerBase::add64; + using MacroAssemblerBase::sub64; + using MacroAssemblerBase::xor64; + using MacroAssemblerBase::load64; + using MacroAssemblerBase::store64; +#endif #if ENABLE(JIT_CONSTANT_BLINDING) using MacroAssemblerBase::add32; @@ -344,7 +357,7 @@ public: static const unsigned BlindingModulus = 64; bool shouldConsiderBlinding() { - return !(random() & (BlindingModulus - 1)); + return !(this->random() & (BlindingModulus - 1)); } // Ptr methods @@ -1468,6 +1481,22 @@ public: #endif }; +#if CPU(ARM_THUMB2) +typedef MacroAssembler<MacroAssemblerARMv7> DefaultMacroAssembler; +#elif CPU(ARM64) +typedef MacroAssembler<MacroAssemblerARM64> DefaultMacroAssembler; +#elif CPU(ARM_TRADITIONAL) +typedef MacroAssembler<MacroAssemblerARM> DefaultMacroAssembler; +#elif CPU(MIPS) +typedef MacroAssembler<MacroAssemblerMIPS> DefaultMacroAssembler; +#elif CPU(X86) +typedef MacroAssembler<MacroAssemblerX86> DefaultMacroAssembler; +#elif CPU(X86_64) +typedef MacroAssembler<MacroAssemblerX86_64> DefaultMacroAssembler; +#elif CPU(SH4) +typedef JSC::MacroAssemblerSH4 DefaultMacroAssembler; +#endif + } // namespace JSC #else // ENABLE(ASSEMBLER) diff --git a/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h b/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h index 73833c0ceb..9f5a089a75 100644 --- a/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h +++ b/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h @@ -526,7 +526,9 @@ public: // operand objects to loads and store will be implicitly constructed if a // register is passed. -private: + // internal function, but public because of "using load32;" in template sub-classes to pull + // in the other public overloads. + void load32(ArmAddress address, RegisterID dest) { if (address.type == ArmAddress::HasIndex) @@ -541,6 +543,7 @@ private: } } +private: void load16(ArmAddress address, RegisterID dest) { if (address.type == ArmAddress::HasIndex) diff --git a/src/3rdparty/masm/yarr/YarrJIT.cpp b/src/3rdparty/masm/yarr/YarrJIT.cpp index c6f2cdb91f..e4f2d97759 100644 --- a/src/3rdparty/masm/yarr/YarrJIT.cpp +++ b/src/3rdparty/masm/yarr/YarrJIT.cpp @@ -39,7 +39,7 @@ using namespace WTF; namespace JSC { namespace Yarr { template<YarrJITCompileMode compileMode> -class YarrGenerator : private MacroAssembler { +class YarrGenerator : private DefaultMacroAssembler { friend void jitCompile(JSGlobalData*, YarrCodeBlock& jitObject, const String& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline); #if CPU(ARM) @@ -599,7 +599,7 @@ class YarrGenerator : private MacroAssembler { } // Called at the end of code generation to link all return addresses. - void linkDataLabels(LinkBuffer<JSC::MacroAssembler>& linkBuffer) + void linkDataLabels(LinkBuffer<JSC::DefaultMacroAssembler>& linkBuffer) { ASSERT(isEmpty()); for (unsigned i = 0; i < m_backtrackRecords.size(); ++i) @@ -2676,7 +2676,7 @@ public: backtrack(); // Link & finalize the code. - LinkBuffer<JSC::MacroAssembler> linkBuffer(*globalData, this, REGEXP_CODE_ID); + LinkBuffer<JSC::DefaultMacroAssembler> linkBuffer(*globalData, this, REGEXP_CODE_ID); m_backtrackingState.linkDataLabels(linkBuffer); if (compileMode == MatchOnly) { |