* src/alloc.c: Keep track of symbols referenced from pure space (bug#17168).
commit35c08981eb8642c50c84491ee68f3c1f3ef507b3
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 7 Apr 2014 16:08:46 +0000 (7 12:08 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 7 Apr 2014 16:08:46 +0000 (7 12:08 -0400)
tree8f980a709007e15463537b5038b8f860cbf485fd
parentf131ab672d59c366e54554b482ec111b6b6a1dc2
* 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