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

commit 3c63de9b9d9080eab7e4ce74a1b1408b90bfa231
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Sat Oct 7 23:09:10 2023 +0200

    bdw: Turn off all_interior_pointers
    
    Quoth gc_inline.h, which makes freelists:
    
    /* Note that for these routines, it is the clients responsibility to    */
    /* add the extra byte at the end to deal with one-past-the-end pointers.*/
    /* In the standard collector configuration, the collector assumes that  */
    /* such a byte has been added, and hence does not trace the last word   */
    /* in the resulting object.                                             */
    /* This is not an issue if the collector is compiled with               */
    /* DONT_ADD_BYTE_AT_END, or if GC_all_interior_pointers is not set.     */
---
 src/bdw.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/bdw.c b/src/bdw.c
index 2344bba48..d6b873f4b 100644
--- a/src/bdw.c
+++ b/src/bdw.c
@@ -359,6 +359,8 @@ int gc_init(const struct gc_options *options, struct 
gc_stack_addr *stack_base,
       return 0;
   }
 
+  GC_set_all_interior_pointers (0);
+
   // Not part of 7.3, sigh.  Have to set an env var.
   // GC_set_markers_count(options->common.parallelism);
   char markers[21] = {0,}; // 21 bytes enough for 2**64 in decimal + NUL.

Reply via email to