* tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros.
authorMichael Livshin <mlivshin@bigfoot.com>
Sat, 18 Mar 2000 11:09:41 +0000 (11:09 +0000)
committerMichael Livshin <mlivshin@bigfoot.com>
Sat, 18 Mar 2000 11:09:41 +0000 (11:09 +0000)
commita00c95d9c6ef0e219313ed61f8938a2b9ba23d06
treeb783e31559b0bfd5ade63e8a97f28d0f4dd47c67
parent28b3236d36f7747e6a722a1178fa40eb550b5636
* tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros.

* gc.h: (typedef struct scm_freelist_t) remove from here.

* gc.c: (CELL_UP, CELL_DN) make these macros take additional
parameter (the span).
(CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
(typedef struct scm_freelist_t) move here from gc.h, it had no
business being externally visible.
(typedef struct scm_heap_seg_data_t) renamed from
scm_heap_seg_data, to be style-compliant.
(scm_mark_locations) if the possible pointer points to a
multy-cell, check that it's properly aligned.
(init_heap_seg) alighn multy-cells properly, work with the
assumption that the segment size divides cleanly by cluster size
(so that there's no spill).
(round_to_cluster_size) new function.
(alloc_some_heap, make_initial_segment) use round_to_cluster_size
to satisfy the new init_heap_seg invariant.
libguile/ChangeLog
libguile/gc.c
libguile/gc.h
libguile/tags.h