[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)
- [RFC,PATCH] Do not GC_INIT the Boehm GC if already initialized,
Jose E. Marchesi <=