mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 14:50:19 +02:00
* Simplified handling of static glocal SCM variable.
This commit is contained in:
parent
c3c4d80154
commit
22ba637b12
2 changed files with 14 additions and 8 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
|
* guardians.c (mark_dependencies_in_tconc,
|
||||||
|
whine_about_self_centered_zombies, scm_init_guardians): Register
|
||||||
|
the static global variable `self_centered_zombies' via
|
||||||
|
scm_gc_register_root, to make some cdr-ing unnecessary.
|
||||||
|
|
||||||
2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||||
|
|
||||||
* backtrace.c (display_backtrace_file,
|
* backtrace.c (display_backtrace_file,
|
||||||
|
|
|
@ -464,8 +464,8 @@ mark_dependencies_in_tconc (tconc_t *tc)
|
||||||
complain about it later. */
|
complain about it later. */
|
||||||
*prev_ptr = next_pair;
|
*prev_ptr = next_pair;
|
||||||
SCM_SETGCMARK (pair);
|
SCM_SETGCMARK (pair);
|
||||||
SCM_SETCDR (pair, SCM_CDR (self_centered_zombies));
|
SCM_SETCDR (pair, self_centered_zombies);
|
||||||
SCM_SETCDR (self_centered_zombies, pair);
|
self_centered_zombies = pair;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -595,21 +595,21 @@ whine_about_self_centered_zombies (void *dummy1 SCM_UNUSED,
|
||||||
void *dummy2 SCM_UNUSED,
|
void *dummy2 SCM_UNUSED,
|
||||||
void *dummy3 SCM_UNUSED)
|
void *dummy3 SCM_UNUSED)
|
||||||
{
|
{
|
||||||
if (! SCM_NULLP (SCM_CDR (self_centered_zombies)))
|
if (!SCM_NULLP (self_centered_zombies))
|
||||||
{
|
{
|
||||||
SCM pair;
|
SCM pair;
|
||||||
|
|
||||||
scm_puts ("** WARNING: the following guarded objects were unguarded due to cycles:",
|
scm_puts ("** WARNING: the following guarded objects were unguarded due to cycles:",
|
||||||
scm_cur_errp);
|
scm_cur_errp);
|
||||||
scm_newline (scm_cur_errp);
|
scm_newline (scm_cur_errp);
|
||||||
for (pair = SCM_CDR (self_centered_zombies);
|
for (pair = self_centered_zombies;
|
||||||
! SCM_NULLP (pair); pair = SCM_CDR (pair))
|
!SCM_NULLP (pair); pair = SCM_CDR (pair))
|
||||||
{
|
{
|
||||||
scm_display (SCM_CAR (pair), scm_cur_errp);
|
scm_display (SCM_CAR (pair), scm_cur_errp);
|
||||||
scm_newline (scm_cur_errp);
|
scm_newline (scm_cur_errp);
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM_SETCDR (self_centered_zombies, SCM_EOL);
|
self_centered_zombies = SCM_EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -627,8 +627,7 @@ scm_init_guardians ()
|
||||||
scm_c_hook_add (&scm_before_mark_c_hook, guardian_gc_init, 0, 0);
|
scm_c_hook_add (&scm_before_mark_c_hook, guardian_gc_init, 0, 0);
|
||||||
scm_c_hook_add (&scm_before_sweep_c_hook, guardian_zombify, 0, 0);
|
scm_c_hook_add (&scm_before_sweep_c_hook, guardian_zombify, 0, 0);
|
||||||
|
|
||||||
self_centered_zombies =
|
scm_gc_register_root (&self_centered_zombies);
|
||||||
scm_permanent_object (scm_cons (SCM_UNDEFINED, SCM_EOL));
|
|
||||||
scm_c_hook_add (&scm_after_gc_c_hook,
|
scm_c_hook_add (&scm_after_gc_c_hook,
|
||||||
whine_about_self_centered_zombies, 0, 0);
|
whine_about_self_centered_zombies, 0, 0);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue