Use 0 for Qnil
commitbc78ff2603b8c062dbd8f93f421c3412e36e343f
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 5 Jan 2015 17:07:45 +0000 (5 09:07 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 5 Jan 2015 18:15:04 +0000 (5 10:15 -0800)
tree52f5ad17e9a61db8287ed4a026abfb4dc64ccd16
parent58f2d6ef32b28a787fcc4e0d98b3f331ceb2a68c
Use 0 for Qnil

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.
lib-src/ChangeLog
lib-src/make-docfile.c
src/ChangeLog
src/lisp.h