wingo pushed a commit to branch wip-whippet
in repository guile.

commit 6c444b33f10b555ce90caace758a0dc499e37677
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Fri Mar 7 10:33:10 2025 +0100

    Remove card-marking barriers
    
    Field barriers aren't slower and are more precise.
---
 api/bdw-attrs.h  | 6 ------
 api/gc-api.h     | 9 ---------
 api/gc-attrs.h   | 3 ---
 api/mmc-attrs.h  | 6 ------
 api/pcc-attrs.h  | 6 ------
 api/semi-attrs.h | 6 ------
 6 files changed, 36 deletions(-)

diff --git a/api/bdw-attrs.h b/api/bdw-attrs.h
index a22445f14..7c03144b5 100644
--- a/api/bdw-attrs.h
+++ b/api/bdw-attrs.h
@@ -49,12 +49,6 @@ static inline uint8_t 
gc_old_generation_check_alloc_table_young_tag(void) {
 static inline enum gc_write_barrier_kind gc_write_barrier_kind(size_t) {
   return GC_WRITE_BARRIER_NONE;
 }
-static inline size_t gc_write_barrier_card_table_alignment(void) {
-  GC_CRASH();
-}
-static inline size_t gc_write_barrier_card_size(void) {
-  GC_CRASH();
-}
 static inline size_t gc_write_barrier_field_table_alignment(void) {
   GC_CRASH();
 }
diff --git a/api/gc-api.h b/api/gc-api.h
index 23113060c..2b08d18b3 100644
--- a/api/gc-api.h
+++ b/api/gc-api.h
@@ -228,15 +228,6 @@ static inline int gc_write_barrier_fast(struct gc_mutator 
*mut, struct gc_ref ob
   switch (gc_write_barrier_kind(obj_size)) {
   case GC_WRITE_BARRIER_NONE:
     return 0;
-  case GC_WRITE_BARRIER_CARD: {
-    size_t card_table_alignment = gc_write_barrier_card_table_alignment();
-    size_t card_size = gc_write_barrier_card_size();
-    uintptr_t addr = gc_ref_value(obj);
-    uintptr_t base = addr & ~(card_table_alignment - 1);
-    uintptr_t card = (addr & (card_table_alignment - 1)) / card_size;
-    atomic_store_explicit((uint8_t*)(base + card), 1, memory_order_relaxed);
-    return 0;
-  }
   case GC_WRITE_BARRIER_FIELD: {
     if (!gc_object_is_old_generation(mut, obj, obj_size))
       return 0;
diff --git a/api/gc-attrs.h b/api/gc-attrs.h
index 0ef3e082b..e7ea8c8f3 100644
--- a/api/gc-attrs.h
+++ b/api/gc-attrs.h
@@ -39,14 +39,11 @@ static inline uint8_t 
gc_old_generation_check_alloc_table_young_tag(void) GC_ALW
 
 enum gc_write_barrier_kind {
   GC_WRITE_BARRIER_NONE,
-  GC_WRITE_BARRIER_CARD,
   GC_WRITE_BARRIER_FIELD,
   GC_WRITE_BARRIER_SLOW
 };
 
 static inline enum gc_write_barrier_kind gc_write_barrier_kind(size_t 
obj_size) GC_ALWAYS_INLINE;
-static inline size_t gc_write_barrier_card_table_alignment(void) 
GC_ALWAYS_INLINE;
-static inline size_t gc_write_barrier_card_size(void) GC_ALWAYS_INLINE;
 static inline size_t gc_write_barrier_field_table_alignment(void) 
GC_ALWAYS_INLINE;
 static inline ptrdiff_t gc_write_barrier_field_table_offset(void) 
GC_ALWAYS_INLINE;
 static inline size_t gc_write_barrier_field_fields_per_byte(void) 
GC_ALWAYS_INLINE;
diff --git a/api/mmc-attrs.h b/api/mmc-attrs.h
index 7066caf23..0c6162dc9 100644
--- a/api/mmc-attrs.h
+++ b/api/mmc-attrs.h
@@ -59,12 +59,6 @@ static inline enum gc_write_barrier_kind 
gc_write_barrier_kind(size_t obj_size)
   }
   return GC_WRITE_BARRIER_NONE;
 }
-static inline size_t gc_write_barrier_card_table_alignment(void) {
-  GC_CRASH();
-}
-static inline size_t gc_write_barrier_card_size(void) {
-  GC_CRASH();
-}
 static inline size_t gc_write_barrier_field_table_alignment(void) {
   GC_ASSERT(GC_GENERATIONAL);
   return gc_allocator_alloc_table_alignment();
diff --git a/api/pcc-attrs.h b/api/pcc-attrs.h
index 727d134c0..064e5181a 100644
--- a/api/pcc-attrs.h
+++ b/api/pcc-attrs.h
@@ -60,12 +60,6 @@ static inline enum gc_write_barrier_kind 
gc_write_barrier_kind(size_t obj_size)
     return GC_WRITE_BARRIER_FIELD;
   return GC_WRITE_BARRIER_SLOW;
 }
-static inline size_t gc_write_barrier_card_table_alignment(void) {
-  GC_CRASH();
-}
-static inline size_t gc_write_barrier_card_size(void) {
-  GC_CRASH();
-}
 static inline size_t gc_write_barrier_field_table_alignment(void) {
   GC_ASSERT(GC_GENERATIONAL);
   return 64 * 1024 * 1024;
diff --git a/api/semi-attrs.h b/api/semi-attrs.h
index c749fd3cf..763f45606 100644
--- a/api/semi-attrs.h
+++ b/api/semi-attrs.h
@@ -51,12 +51,6 @@ static inline uint8_t 
gc_old_generation_check_alloc_table_young_tag(void) {
 static inline enum gc_write_barrier_kind gc_write_barrier_kind(size_t) {
   return GC_WRITE_BARRIER_NONE;
 }
-static inline size_t gc_write_barrier_card_table_alignment(void) {
-  GC_CRASH();
-}
-static inline size_t gc_write_barrier_card_size(void) {
-  GC_CRASH();
-}
 static inline size_t gc_write_barrier_field_table_alignment(void) {
   GC_CRASH();
 }

Reply via email to