• Paul Eggert's avatar
    Use 0 for Qnil · bc78ff26
    Paul Eggert authored
    Fixes Bug#15880.
    If USE_LSB_TAG, arrange for the representation of Qnil to be zero so
    that NILP (x) is equivalent to testing whether x is 0 at the
    machine level.  The overall effects of this and the previous patch
    shrink the size of the text segment by 2.3% and speeds up
    compilation of all the .elc files by about 0.5% on my platform,
    which is Fedora 20 x86-64.
    * lib-src/make-docfile.c (compare_globals):
    * src/lisp.h (lisp_h_XPNTR, lisp_h_XSYMBOL, lisp_h_XUNTAG)
    (make_lisp_symbol) [USE_LSB_TAG]:
    Symbols now tag the difference from lispsym, not the pointer.
    (lisp_h_XUNTAGBASE, TAG_SYMPTR): New macros.
    (Lisp_Int0, Lisp_Int1, Lisp_Symbol, Lisp_Misc, Lisp_String, Lisp_Cons):
    Renumber so that Lisp_Symbol is 0, so that Qnil is zero.
    (XSYMBOL): New forward decl.
    (XUNTAGBASE): New function.
    (XUNTAG): Use it.
ChangeLog 635 KB