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