* src/alloc.c: Keep track of symbols referenced from pure space (bug#17168).
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 7 Apr 2014 16:08:46 +0000 (12:08 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 7 Apr 2014 16:08:46 +0000 (12:08 -0400)
commite3b838807bf9fbbbec9826de6c1e4efdf72acb78
treeaf955b069b9dab5d52cfed618cf1f2f7cffa40f5
parent190f899aed4eeb62286874bda47a92236d52ad4c
* src/alloc.c: Keep track of symbols referenced from pure space (bug#17168).
(symbol_block_pinned): New var.
(Fmake_symbol): Initialize `pinned'.
(purecopy): New function, extracted from Fpurecopy.  Mark symbols as
pinned and signal an error for un-purifiable objects.
(pure_cons): Use it.
(Fpurecopy): Use it, except for objects that can't be purified.
(mark_pinned_symbols): New function.
(Fgarbage_collect): Use it.
(gc_sweep): Remove hack made unnecessary.
* src/lisp.h (struct Lisp_Symbol): New bitfield `pinned'.
src/ChangeLog
src/alloc.c
src/lisp.h