Use bitmaps for cons cells, as was done for floats.
commit08b7c2cbf381616c51799da3981e32c442655a6b
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 15 Jul 2003 19:19:59 +0000 (15 19:19 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 15 Jul 2003 19:19:59 +0000 (15 19:19 +0000)
tree6e49036fdb43fba33a55671d371d052c03d97cfc
parentdd038e2602ee6ce7614ffbd19b2046cf0d7dd83a
Use bitmaps for cons cells, as was done for floats.
(init_float, init_cons): Let the normal code allocate the first block.
(CONS_BLOCK_SIZE): Redefine based on BLOCK_BYTES and bitmap size.
(CONS_BLOCK, CONS_INDEX, CONS_MARKED_P, CONS_MARK, CONS_UNMARK): New macros.
(struct cons_block): Move conses to the beginning.  Add gcmarkbits.
(Fcons): Use lisp_align_malloc and CONS_UNMARK.
(live_cons_p): Check the pointer is not past the `conses' array.
(mark_maybe_object, mark_maybe_pointer): Use CONS_MARKED_P.
(mark_object, mark_buffer): Use CONS_MARKED_P and CONS_MARK.
(survives_gc_p): Use CONS_MARKED_P and simplify.
(gc_sweep): Use CONS_MARKED_P, CONS_UNMARK, and lisp_align_free.
src/alloc.c