aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-01-10 14:14:14 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2017-01-28 19:04:29 +0000
commit39bdb9d6f30151ee24614df1dbcd2d44ec342e59 (patch)
tree28f8966e694833576d679d65555cefbc13c25d15 /src/3rdparty
parentd5579e7094c70db66a193ae1daffd4c71e8fc10b (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.h31
-rw-r--r--src/3rdparty/masm/assembler/MacroAssemblerARMv7.h5
-rw-r--r--src/3rdparty/masm/yarr/YarrJIT.cpp6
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) {