1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-26 05:00:28 +02:00

Weak sets and tables no longer vacuum after GC

These tables will be implemented differently after Whippet.

* libguile/weak-set.c (do_vacuum_weak_set, vacuum_all_weak_sets):
Remove.
(scm_c_make_weak_set, scm_init_weak_set): Don't keep a table of all weak
sets.
* libguile/weak-table.c (do_vacuum_weak_table, vacuum_all_weak_tables):
Remove.
(scm_c_make_weak_table, scm_init_weak_table): No table of all tables.
This commit is contained in:
Andy Wingo 2025-05-02 15:16:26 +02:00
parent 9774b3e551
commit 604a8e8540
2 changed files with 2 additions and 77 deletions

View file

@ -1,4 +1,4 @@
/* Copyright 2011-2013,2018
/* Copyright 2011-2013,2018,2025
Free Software Foundation, Inc.
This file is part of Guile.
@ -689,32 +689,6 @@ scm_i_weak_set_print (SCM exp, SCM port, scm_print_state *pstate)
scm_puts (">", port);
}
static void
do_vacuum_weak_set (SCM set)
{
scm_t_weak_set *s;
s = SCM_WEAK_SET (set);
/* We should always be able to grab this lock, because we are run from
a finalizer, which runs in another thread (or an async, which is
mostly equivalent). */
scm_i_pthread_mutex_lock (&s->lock);
vacuum_weak_set (s);
scm_i_pthread_mutex_unlock (&s->lock);
}
static scm_i_pthread_mutex_t all_weak_sets_lock = SCM_I_PTHREAD_MUTEX_INITIALIZER;
static SCM all_weak_sets = SCM_EOL;
static void
vacuum_all_weak_sets (void)
{
scm_i_pthread_mutex_lock (&all_weak_sets_lock);
scm_i_visit_weak_list (&all_weak_sets, do_vacuum_weak_set);
scm_i_pthread_mutex_unlock (&all_weak_sets_lock);
}
SCM
scm_c_make_weak_set (unsigned long k)
{
@ -722,10 +696,6 @@ scm_c_make_weak_set (unsigned long k)
ret = make_weak_set (k);
scm_i_pthread_mutex_lock (&all_weak_sets_lock);
all_weak_sets = scm_i_weak_cons (ret, all_weak_sets);
scm_i_pthread_mutex_unlock (&all_weak_sets_lock);
return ret;
}
@ -902,6 +872,4 @@ void
scm_init_weak_set ()
{
#include "weak-set.x"
scm_i_register_async_gc_callback (vacuum_all_weak_sets);
}