scm_guardian_gc_init, scm_guardian_zombify, scm_guard,
scm_get_one_zombie, scm_init_guardian): This is an implementation
of guardians as described in R. Kent Dybvig, Carl Bruggeman, and
David Eby (1993) "Guardians in a Generation-Based Garbage
Collector" ACM SIGPLAN Conference on Programming Language Design
and Implementation, June 1993 ftp://ftp.cs.indiana.edu
/pub/scheme-repository/doc/pubs/guardians.ps.gz
Author: Michael N. Livshin.
we can have operator class objects which themselves are entities).
* struct.h (scm_struct_i_proc, scm_struct_i_flags,
SCM_STRUCTF_ENTITY): New constants.
* struct.c, struct.h (scm_alloc_struct): Renamed from alloc_struct
and made global.
(scm_struct_init): Renamed from init_struct and made global.
procedures if SCM_STRUCTF_ENTITY is set in vtable.
* struct.c, struct.h (scm_alloc_struct): Renamed from alloc_struct
and made global.
(scm_struct_init): Renamed from init_struct and made global.
syntactic forms, similar to SCM_PROC.
* debug.c, eval.c, evalext.c: use SCM_SYNTAX to declare all special
forms, and SCM_SYMBOL or SCM_GLOBAL_SYMBOL to delcare C variables for
the name symbols when needed.
take the address of _into; it might be a register. Just have
scm_debug_newcell return the new cell.
* gc.c (scm_debug_newcell): Just return the new cell, instead of
taking the address of a place to store it as an argument.
* gc.h (scm_debug_newcell): Change declaration.
(Thanks to Greg Harvey.)
definitions of the rudimentary classes described by objects.h.
* objects.c, objects.h (scm_entity_p): New procedure. Together
with the predicates scm_procedure_p and scm_struct_p, this
predicate makes it possible to differ between structs, entities
and operators.
handle operators and entities.
(scm_procedure_property): No need to call scm_procedure_p since
scm_i_procedure_arity now does all necessary type checking.
Added #include "objects.h".
(scm_make_hook): Optional argument defines number of arguments to
the hook.
(scm_make_named_hook): Take number of args as second arg.
(scm_run_hook): Renamed from scm_run_hooks (old name kept for a
while); First arg is the hook. The rest are arguments passed on
to the hook procedures.