Title: [288970] trunk/Source
Revision
288970
Author
[email protected]
Date
2022-02-02 10:50:38 -0800 (Wed, 02 Feb 2022)

Log Message

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:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (288969 => 288970)


--- trunk/Source/_javascript_Core/ChangeLog	2022-02-02 18:46:15 UTC (rev 288969)
+++ trunk/Source/_javascript_Core/ChangeLog	2022-02-02 18:50:38 UTC (rev 288970)
@@ -1,3 +1,19 @@
+2022-02-02  Mark Lam  <[email protected]>
+
+        Update computation of FAST_TLS base.
+        https://bugs.webkit.org/show_bug.cgi?id=235934
+
+        Reviewed by Yusuke Suzuki.
+
+        * assembler/MacroAssemblerARM64.h:
+        (JSC::MacroAssemblerARM64::loadFromTLS32):
+        (JSC::MacroAssemblerARM64::loadFromTLS64):
+        (JSC::MacroAssemblerARM64::storeToTLS32):
+        (JSC::MacroAssemblerARM64::storeToTLS64):
+        * assembler/SecureARM64EHashPinsInlines.h:
+        (JSC::SecureARM64EHashPins::keyForCurrentThread):
+        * offlineasm/arm64.rb:
+
 2022-02-02  Yusuke Suzuki  <[email protected]>
 
         [JSC] wasm atomic opcodes should be rejected if alignment is not equal to natural width

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (288969 => 288970)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2022-02-02 18:46:15 UTC (rev 288969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2022-02-02 18:50:38 UTC (rev 288970)
@@ -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: trunk/Source/_javascript_Core/assembler/SecureARM64EHashPinsInlines.h (288969 => 288970)


--- trunk/Source/_javascript_Core/assembler/SecureARM64EHashPinsInlines.h	2022-02-02 18:46:15 UTC (rev 288969)
+++ trunk/Source/_javascript_Core/assembler/SecureARM64EHashPinsInlines.h	2022-02-02 18:50:38 UTC (rev 288970)
@@ -40,6 +40,9 @@
         :
         :
     );
+#if !HAVE(SIMPLIFIED_FAST_TLS_BASE)
+    result = result & ~0x7ull;
+#endif
     return result + 1;
 }
 

Modified: trunk/Source/_javascript_Core/offlineasm/arm64.rb (288969 => 288970)


--- trunk/Source/_javascript_Core/offlineasm/arm64.rb	2022-02-02 18:46:15 UTC (rev 288969)
+++ trunk/Source/_javascript_Core/offlineasm/arm64.rb	2022-02-02 18:50:38 UTC (rev 288970)
@@ -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: trunk/Source/WTF/ChangeLog (288969 => 288970)


--- trunk/Source/WTF/ChangeLog	2022-02-02 18:46:15 UTC (rev 288969)
+++ trunk/Source/WTF/ChangeLog	2022-02-02 18:50:38 UTC (rev 288970)
@@ -1,3 +1,12 @@
+2022-02-02  Mark Lam  <[email protected]>
+
+        Update computation of FAST_TLS base.
+        https://bugs.webkit.org/show_bug.cgi?id=235934
+
+        Reviewed by Yusuke Suzuki.
+
+        * wtf/PlatformHave.h:
+
 2022-02-02  Youenn Fablet  <[email protected]>
 
         Clarify that some UUID routines are dedicated to UUID v4

Modified: trunk/Source/WTF/wtf/PlatformHave.h (288969 => 288970)


--- trunk/Source/WTF/wtf/PlatformHave.h	2022-02-02 18:46:15 UTC (rev 288969)
+++ trunk/Source/WTF/wtf/PlatformHave.h	2022-02-02 18:50:38 UTC (rev 288970)
@@ -247,8 +247,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