Title: [293313] trunk/Source/_javascript_Core
Revision
293313
Author
[email protected]
Date
2022-04-24 23:29:19 -0700 (Sun, 24 Apr 2022)

Log Message

[RISCV64] Implement MacroAssemblerRISCV64 fencing methods
https://bugs.webkit.org/show_bug.cgi?id=239706

Reviewed by Yusuke Suzuki.

Provide MacroAssemblerRISCV64 implementations for the tree fencing
methods, using the `fence` instruction but with different corresponding
combinations of the predecessor and successor operation sets.

* assembler/MacroAssemblerRISCV64.h:
(JSC::MacroAssemblerRISCV64::memoryFence):
(JSC::MacroAssemblerRISCV64::storeFence):
(JSC::MacroAssemblerRISCV64::loadFence):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (293312 => 293313)


--- trunk/Source/_javascript_Core/ChangeLog	2022-04-25 06:26:33 UTC (rev 293312)
+++ trunk/Source/_javascript_Core/ChangeLog	2022-04-25 06:29:19 UTC (rev 293313)
@@ -1,3 +1,19 @@
+2022-04-24  Zan Dobersek  <[email protected]>
+
+        [RISCV64] Implement MacroAssemblerRISCV64 fencing methods
+        https://bugs.webkit.org/show_bug.cgi?id=239706
+
+        Reviewed by Yusuke Suzuki.
+
+        Provide MacroAssemblerRISCV64 implementations for the tree fencing
+        methods, using the `fence` instruction but with different corresponding
+        combinations of the predecessor and successor operation sets.
+
+        * assembler/MacroAssemblerRISCV64.h:
+        (JSC::MacroAssemblerRISCV64::memoryFence):
+        (JSC::MacroAssemblerRISCV64::storeFence):
+        (JSC::MacroAssemblerRISCV64::loadFence):
+
 2022-04-22  Diego Pino Garcia  <[email protected]>
 
         Unreviewed, non-unified build fixes after r293203

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerRISCV64.h (293312 => 293313)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerRISCV64.h	2022-04-25 06:26:33 UTC (rev 293312)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerRISCV64.h	2022-04-25 06:29:19 UTC (rev 293313)
@@ -3285,10 +3285,21 @@
         m_assembler.addiInsn(RISCV64Registers::zero, RISCV64Registers::zero, Imm::I<0>());
     }
 
-    void memoryFence() { }
-    void storeFence() { }
-    void loadFence() { }
+    void memoryFence()
+    {
+        m_assembler.fenceInsn({ RISCV64Assembler::MemoryOperation::RW }, { RISCV64Assembler::MemoryOperation::RW });
+    }
 
+    void storeFence()
+    {
+        m_assembler.fenceInsn({ RISCV64Assembler::MemoryOperation::W }, { RISCV64Assembler::MemoryOperation::RW });
+    }
+
+    void loadFence()
+    {
+        m_assembler.fenceInsn({ RISCV64Assembler::MemoryOperation::R }, { RISCV64Assembler::MemoryOperation::RW });
+    }
+
     MACRO_ASSEMBLER_RISCV64_TEMPLATED_NOOP_METHOD_WITH_RETURN(branchAtomicWeakCAS8, JumpList);
     MACRO_ASSEMBLER_RISCV64_TEMPLATED_NOOP_METHOD_WITH_RETURN(branchAtomicWeakCAS16, JumpList);
     MACRO_ASSEMBLER_RISCV64_TEMPLATED_NOOP_METHOD_WITH_RETURN(branchAtomicWeakCAS32, JumpList);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to