Title: [286429] trunk/Source/bmalloc
Revision
286429
Author
commit-qu...@webkit.org
Date
2021-12-02 07:46:01 -0800 (Thu, 02 Dec 2021)

Log Message

[libpas] Define and use PAS_RISCV
https://bugs.webkit.org/show_bug.cgi?id=233753

Patch by Zan Dobersek <zdober...@igalia.com> on 2021-12-02
Reviewed by Yusuke Suzuki.

Define PAS_RISCV as appropriate and use it accordingly to avoid custom
x86-64 assembly, much like it's avoided for PAS_ARM. This gets libpas
compiling for RISC-V targets.

* libpas/src/libpas/pas_config.h:
* libpas/src/libpas/pas_config_prefix.h:
* libpas/src/libpas/pas_segregated_page_inlines.h:
(pas_segregated_page_deallocate_with_page):
* libpas/src/libpas/pas_utils.h:
* libpas/src/libpas/pas_utils_prefix.h:
(__pas_fence):

Modified Paths

Diff

Modified: trunk/Source/bmalloc/ChangeLog (286428 => 286429)


--- trunk/Source/bmalloc/ChangeLog	2021-12-02 15:41:52 UTC (rev 286428)
+++ trunk/Source/bmalloc/ChangeLog	2021-12-02 15:46:01 UTC (rev 286429)
@@ -1,3 +1,22 @@
+2021-12-02  Zan Dobersek  <zdober...@igalia.com>
+
+        [libpas] Define and use PAS_RISCV
+        https://bugs.webkit.org/show_bug.cgi?id=233753
+
+        Reviewed by Yusuke Suzuki.
+
+        Define PAS_RISCV as appropriate and use it accordingly to avoid custom
+        x86-64 assembly, much like it's avoided for PAS_ARM. This gets libpas
+        compiling for RISC-V targets.
+
+        * libpas/src/libpas/pas_config.h:
+        * libpas/src/libpas/pas_config_prefix.h:
+        * libpas/src/libpas/pas_segregated_page_inlines.h:
+        (pas_segregated_page_deallocate_with_page):
+        * libpas/src/libpas/pas_utils.h:
+        * libpas/src/libpas/pas_utils_prefix.h:
+        (__pas_fence):
+
 2021-11-24  Yusuke Suzuki  <ysuz...@apple.com>
 
         [libpas] Unreviewed, speculative libpas Linux fix, libpas requires libatomic in Linux etc., part 2

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_config.h (286428 => 286429)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_config.h	2021-12-02 15:41:52 UTC (rev 286428)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_config.h	2021-12-02 15:46:01 UTC (rev 286429)
@@ -45,6 +45,8 @@
 
 #define PAS_ARM __PAS_ARM
 
+#define PAS_RISCV __PAS_RISCV
+
 #define PAS_ADDRESS_BITS                 48
 
 #if PAS_ARM

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_config_prefix.h (286428 => 286429)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_config_prefix.h	2021-12-02 15:41:52 UTC (rev 286428)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_config_prefix.h	2021-12-02 15:46:01 UTC (rev 286429)
@@ -43,3 +43,8 @@
 
 #define __PAS_ARM (__PAS_ARM64 || __PAS_ARM32)
 
+#if defined(__riscv)
+#define __PAS_RISCV 1
+#else
+#define __PAS_RISCV 0
+#endif

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_page_inlines.h (286428 => 286429)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_page_inlines.h	2021-12-02 15:41:52 UTC (rev 286428)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_page_inlines.h	2021-12-02 15:46:01 UTC (rev 286429)
@@ -369,7 +369,7 @@
     word = page->alloc_bits[word_index];
 
     if (page_config.check_deallocation) {
-#if !PAS_ARM
+#if !PAS_ARM && !PAS_RISCV
         new_word = word;
         
         asm volatile (
@@ -385,7 +385,7 @@
             : "+r"(new_word)
             : "r"((unsigned)bit_index_unmasked), "r"(begin)
             : "memory");
-#else /* !PAS_ARM -> so PAS_ARM */
+#else /* !PAS_ARM && !PAS_RISCV -> so PAS_ARM or PAS_RISCV */
         unsigned bit_mask;
         bit_mask = PAS_BITVECTOR_BIT_MASK(bit_index_unmasked);
         
@@ -393,7 +393,7 @@
             pas_segregated_page_deallocation_did_fail(begin);
         
         new_word = word & ~bit_mask;
-#endif /* !PAS_ARM -> so end of PAS_ARM */
+#endif /* !PAS_ARM && !PAS_RISCV-> so end of PAS_ARM or PAS_RISCV */
     } else
         new_word = word & ~PAS_BITVECTOR_BIT_MASK(bit_index_unmasked);
     

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h (286428 => 286429)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h	2021-12-02 15:41:52 UTC (rev 286428)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h	2021-12-02 15:46:01 UTC (rev 286429)
@@ -83,6 +83,8 @@
 
 #define PAS_ARM __PAS_ARM
 
+#define PAS_RISCV __PAS_RISCV
+
 #ifdef __cplusplus
 #define PAS_TYPEOF(a) decltype (a)
 #else

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h (286428 => 286429)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h	2021-12-02 15:41:52 UTC (rev 286428)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h	2021-12-02 15:46:01 UTC (rev 286429)
@@ -102,7 +102,7 @@
 
 static __PAS_ALWAYS_INLINE void __pas_fence(void)
 {
-#if !__PAS_ARM
+#if !__PAS_ARM && !__PAS_RISCV
     if (sizeof(void*) == 8)
         asm volatile("lock; orl $0, (%%rsp)" ::: "memory");
     else
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to