• Stefan Monnier's avatar
    * src/alloc.c: Keep track of symbols referenced from pure space (bug#17168). · e3b83880
    Stefan Monnier authored
    (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'.
ChangeLog 396 KB