guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC,PATCH] Do not GC_INIT the Boehm GC if already initialized


From: Jose E. Marchesi
Subject: [RFC,PATCH] Do not GC_INIT the Boehm GC if already initialized
Date: Mon, 06 Feb 2023 19:34:05 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

Hello Guile hackers.

We are in the process of integrating GNU poke[1] in GDB by mean of
libpoke.

Problem is, libpoke uses the Boehm GC, as guile does.  We are working on
switching to an ad-hoc exact collector, but it will get some time.

So, in the interim, we may:

1) Make both libguile and libpoke to do GC_INIT conditionally, only if
   no one else has initialized the collector before.  This is already in
   poke master.  A suggested (untested!) patch for guile below.

2) Test to see if the collector works properly.

3) Do bug-fix releases of both libguile and libpoke so the GDB people
   can check for the right version in configure.ac in order to allow
   configuring GDB with both libpoke and libguile support.

Does this sound like a plan?
Thanks in advance!

[1] https://jemarch.net/poke

diff --git a/libguile/gc.c b/libguile/gc.c
index 7717e9bef..36653d373 100644
--- a/libguile/gc.c
+++ b/libguile/gc.c
@@ -462,7 +462,8 @@ scm_storage_prehistory ()
   setenv ("GC_MARKERS", "1", 1);
 #endif
 
-  GC_INIT ();
+  if(!GC_is_init_called ())
+    GC_INIT ();
 
   size_t heap_size = GC_get_heap_size ();
   if (heap_size < DEFAULT_INITIAL_HEAP_SIZE)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]