1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 01:00:20 +02:00

Simplify smob and port marking; set the mark bit in the generic

marking code, and make marker routines only responsible for
turning up outgoing pointers.
* gc.c (scm_gc_mark): Set the mark bit on ports and smobs here,
before calling the marking function.  Don't call the marking
function if it's zero.
* markers.c (scm_mark0): Just return #f.  This function isn't
necessary at all now, but it's harmless to call it.  We'll leave
it in so other folks' code doesn't croak at link time.
(scm_markcdr): Don't call SCM_SETGC8MARK.
* async.c (mark_async): Don't call SCM_SETGC8MARK.
* dynl.c (mark_dynl_obj): Same.
* root.c (mark_root): Same.
* srcprop.c (marksrcprops): Same.
* unif.c (markra): Same.
* variable.c (scm_markvar): Same.
* ports.c (scm_markstream): Same.
(void_port_ptob): Specify zero for our marking function.
* debug.c (debugobjsmob): Same.
* dynwind.c (guardsmob): Same.
* filesys.c (dir_smob): Same.
* fluids.c (fluid_smob): Same.
* fports.c (scm_fptob, scm_pipob): Same.
* mallocs.c (mallocsmob): Same.
* regex-posix.c (regex_t_smob): Same.
* smob.c (freecell, flob, bigob): Same.
* threads.c (thread_smob, mutex_smob, condvar_smob): Same.
* throw.c (jbsmob, lazy_catch_funs): Same.
This commit is contained in:
Jim Blandy 1998-07-23 04:47:56 +00:00
parent 6f4d962200
commit dc53f02690
19 changed files with 45 additions and 43 deletions

View file

@ -50,11 +50,20 @@
*/
/* This function is vestigial. It used to be the mark function's
responsibility to set the mark bit on the smob or port, but now the
generic marking routine in gc.c takes care of that, and a zero
pointer for a mark function means "don't bother". So you never
need scm_mark0.
However, we leave it here because it's harmless to call it, and
people out there have smob code that uses it, and there's no reason
to make their links fail. */
SCM
scm_mark0 (ptr)
SCM ptr;
{
SCM_SETGC8MARK (ptr);
return SCM_BOOL_F;
}
@ -64,9 +73,6 @@ SCM
scm_markcdr (ptr)
SCM ptr;
{
if (SCM_GC8MARKP (ptr))
return SCM_BOOL_F;
SCM_SETGC8MARK (ptr);
return SCM_CDR (ptr);
}