Title: [289555] branches/safari-613-branch/Source
Revision
289555
Author
[email protected]
Date
2022-02-10 11:10:16 -0800 (Thu, 10 Feb 2022)

Log Message

Cherry-pick r288970. rdar://problem/88459807

    Update computation of FAST_TLS base.
    https://bugs.webkit.org/show_bug.cgi?id=235934

    Reviewed by Yusuke Suzuki.

    Source/_javascript_Core:

    * assembler/MacroAssemblerARM64.h:
    (JSC::MacroAssemblerARM64::loadFromTLS32):
    (JSC::MacroAssemblerARM64::loadFromTLS64):
    (JSC::MacroAssemblerARM64::storeToTLS32):
    (JSC::MacroAssemblerARM64::storeToTLS64):
    * assembler/SecureARM64EHashPinsInlines.h:
    (JSC::SecureARM64EHashPins::keyForCurrentThread):
    * offlineasm/arm64.rb:

    Source/WTF:

    * wtf/PlatformHave.h:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@288970 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to