Diff
Modified: branches/safari-613-branch/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (289554 => 289555)
--- branches/safari-613-branch/Source/_javascript_Core/assembler/MacroAssemblerARM64.h 2022-02-10 19:07:34 UTC (rev 289554)
+++ branches/safari-613-branch/Source/_javascript_Core/assembler/MacroAssemblerARM64.h 2022-02-10 19:10:16 UTC (rev 289555)
@@ -4521,7 +4521,9 @@
void loadFromTLS32(uint32_t offset, RegisterID dst)
{
m_assembler.mrs_TPIDRRO_EL0(dst);
+#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)
and64(TrustedImm32(~7), dst);
+#endif
load32(Address(dst, offset), dst);
}
@@ -4528,7 +4530,9 @@
void loadFromTLS64(uint32_t offset, RegisterID dst)
{
m_assembler.mrs_TPIDRRO_EL0(dst);
+#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)
and64(TrustedImm32(~7), dst);
+#endif
load64(Address(dst, offset), dst);
}
@@ -4542,7 +4546,9 @@
RegisterID tmp = getCachedDataTempRegisterIDAndInvalidate();
ASSERT(src != tmp);
m_assembler.mrs_TPIDRRO_EL0(tmp);
+#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)
and64(TrustedImm32(~7), tmp);
+#endif
store32(src, Address(tmp, offset));
}
@@ -4551,7 +4557,9 @@
RegisterID tmp = getCachedDataTempRegisterIDAndInvalidate();
ASSERT(src != tmp);
m_assembler.mrs_TPIDRRO_EL0(tmp);
+#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)
and64(TrustedImm32(~7), tmp);
+#endif
store64(src, Address(tmp, offset));
}
Modified: branches/safari-613-branch/Source/_javascript_Core/assembler/SecureARM64EHashPinsInlines.h (289554 => 289555)
--- branches/safari-613-branch/Source/_javascript_Core/assembler/SecureARM64EHashPinsInlines.h 2022-02-10 19:07:34 UTC (rev 289554)
+++ branches/safari-613-branch/Source/_javascript_Core/assembler/SecureARM64EHashPinsInlines.h 2022-02-10 19:10:16 UTC (rev 289555)
@@ -40,6 +40,9 @@
:
:
);
+#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)
+ result = result & ~0x7ull;
+#endif
return result + 1;
}
Modified: branches/safari-613-branch/Source/_javascript_Core/offlineasm/arm64.rb (289554 => 289555)
--- branches/safari-613-branch/Source/_javascript_Core/offlineasm/arm64.rb 2022-02-10 19:07:34 UTC (rev 289554)
+++ branches/safari-613-branch/Source/_javascript_Core/offlineasm/arm64.rb 2022-02-10 19:10:16 UTC (rev 289555)
@@ -1313,7 +1313,10 @@
offset = operands[0].arm64Operand(:word)
end
$asm.puts "mrs #{tmp}, tpidrro_el0"
+ $asm.puts "#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)"
$asm.puts "bic #{tmp}, #{tmp}, #7"
+ $asm.puts "#endif"
+
$asm.puts "ldr #{operands[1].arm64Operand(:ptr)}, [#{tmp}, #{offset}]"
when "tls_storep"
tmp = ARM64_EXTRA_GPRS[0].arm64Operand(:ptr)
@@ -1323,7 +1326,9 @@
offset = operands[1].arm64Operand(:word)
end
$asm.puts "mrs #{tmp}, tpidrro_el0"
+ $asm.puts "#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)"
$asm.puts "bic #{tmp}, #{tmp}, #7"
+ $asm.puts "#endif"
$asm.puts "str #{operands[0].arm64Operand(:ptr)}, [#{tmp}, #{offset}]"
when "loadlinkacqb"
$asm.puts "ldaxrb #{operands[1].arm64Operand(:word)}, #{operands[0].arm64Operand(:word)}"
Modified: branches/safari-613-branch/Source/WTF/wtf/PlatformHave.h (289554 => 289555)
--- branches/safari-613-branch/Source/WTF/wtf/PlatformHave.h 2022-02-10 19:07:34 UTC (rev 289554)
+++ branches/safari-613-branch/Source/WTF/wtf/PlatformHave.h 2022-02-10 19:10:16 UTC (rev 289555)
@@ -240,8 +240,14 @@
#if __has_include(<System/pthread_machdep.h>)
#define HAVE_FAST_TLS 1
+
+#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000) \
+ || ((PLATFORM(IOS) && !PLATFORM(IOS_FAMILY_SIMULATOR) && !PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 150000)
+#define HAVE_SIMPLIFIED_FAST_TLS_BASE 1
#endif
+#endif
+
#if COMPILER(GCC_COMPATIBLE)
#define HAVE_COMPUTED_GOTO 1
#endif