1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 20:00:19 +02:00

* guardians.c (mark_dependencies_in_tconc): new function.

(mark_dependencies): bug fix.  mark the dependencies of the known
zombies, too.  duh.
This commit is contained in:
Michael Livshin 2000-12-28 14:26:12 +00:00
parent 0209177b77
commit c275ccf59e
2 changed files with 17 additions and 4 deletions

View file

@ -1,3 +1,9 @@
2000-12-28 Michael Livshin <mlivshin@bigfoot.com>
* guardians.c (mark_dependencies_in_tconc): new function.
(mark_dependencies): bug fix. mark the dependencies of the known
zombies, too. duh.
2000-12-24 Michael Livshin <mlivshin@bigfoot.com> 2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
* gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not * gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not

View file

@ -320,15 +320,15 @@ guardian_gc_init (void *dummy1, void *dummy2, void *dummy3)
} }
static void static void
mark_dependencies (guardian_t *g) mark_dependencies_in_tconc (tconc_t *tc)
{ {
SCM pair, next_pair; SCM pair, next_pair;
SCM *prev_ptr; SCM *prev_ptr;
/* scan the live list for unmarked objects, and mark their /* scan the list for unmarked objects, and mark their
dependencies */ dependencies */
for (pair = g->live.head, prev_ptr = &g->live.head; for (pair = tc->head, prev_ptr = &tc->head;
! SCM_EQ_P (pair, g->live.tail); ! SCM_EQ_P (pair, tc->tail);
pair = next_pair) pair = next_pair)
{ {
SCM obj = SCM_CAR (pair); SCM obj = SCM_CAR (pair);
@ -363,6 +363,13 @@ mark_dependencies (guardian_t *g)
} }
} }
static void
mark_dependencies (guardian_t *g)
{
mark_dependencies_in_tconc (&g->zombies);
mark_dependencies_in_tconc (&g->live);
}
static void static void
mark_and_zombify (guardian_t *g) mark_and_zombify (guardian_t *g)
{ {