summaryrefslogtreecommitdiff
path: root/libguile/gc.h
diff options
context:
space:
mode:
authorMichael Livshin <mlivshin@bigfoot.com>2001-05-26 22:10:58 +0000
committerMichael Livshin <mlivshin@bigfoot.com>2001-05-26 22:10:58 +0000
commit6b1b030e4de34568273e87176d3eb93eddf81c7f (patch)
tree8c5fd246c52cdc0f7f1af03975f6db1aac34f780 /libguile/gc.h
parentc014a02eec7b99c54d8a156ce491ae8d1e341f97 (diff)
downloadguile-6b1b030e4de34568273e87176d3eb93eddf81c7f.tar.gz
* gc.c (scm_init_storage): init `scm_gc_registered_roots'.
(scm_igc): mark from them, too (precisely, not conservatively!). * root.h (scm_gc_registered_roots): new object in scm_sys_protects. * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead `scm_protect_object'. shouldn't call it at all, though, it seems. * gc.c (scm_[un]protect_object): deprecated. (scm_gc_[un]protect_object): new names for scm_[un]protect_object. (scm_gc_[un]register_root[s]): new. * gc.h: add prototypes for scm_gc_[un]protect_object, scm_gc_[un]register_root[s].
Diffstat (limited to 'libguile/gc.h')
-rw-r--r--libguile/gc.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/libguile/gc.h b/libguile/gc.h
index a7631c3f7..9b4214325 100644
--- a/libguile/gc.h
+++ b/libguile/gc.h
@@ -381,8 +381,12 @@ extern void scm_remember_upto_here (SCM obj1, ...);
extern SCM scm_return_first (SCM elt, ...);
extern int scm_return_first_int (int x, ...);
extern SCM scm_permanent_object (SCM obj);
-extern SCM scm_protect_object (SCM obj);
-extern SCM scm_unprotect_object (SCM obj);
+extern SCM scm_gc_protect_object (SCM obj);
+extern SCM scm_gc_unprotect_object (SCM obj);
+extern void scm_gc_register_root (SCM *p);
+extern void scm_gc_unregister_root (SCM *p);
+extern void scm_gc_register_roots (SCM *b, unsigned long n);
+extern void scm_gc_unregister_roots (SCM *b, unsigned long n);
extern int scm_init_storage (void);
extern void *scm_get_stack_base (void);
extern void scm_init_gc (void);
@@ -391,6 +395,9 @@ extern void scm_init_gc (void);
#if (SCM_DEBUG_DEPRECATED == 0)
+extern SCM scm_protect_object (SCM obj);
+extern SCM scm_unprotect_object (SCM obj);
+
#define SCM_SETAND_CAR(x, y) \
(SCM_SETCAR ((x), SCM_PACK (SCM_UNPACK (SCM_CAR (x)) & (y))))
#define SCM_SETOR_CAR(x, y)\