summaryrefslogtreecommitdiff
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-01-05 09:07:45 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2015-01-05 10:15:04 -0800
commitbc78ff2603b8c062dbd8f93f421c3412e36e343f (patch)
tree52f5ad17e9a61db8287ed4a026abfb4dc64ccd16 /src/ChangeLog
parent58f2d6ef32b28a787fcc4e0d98b3f331ceb2a68c (diff)
downloademacs-bc78ff2603b8c062dbd8f93f421c3412e36e343f.tar.gz
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.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 62737994747..b068056667b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,23 @@
2015-01-05 Paul Eggert <eggert@cs.ucla.edu>
+ 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.
+ * 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.
+
Compute C decls for DEFSYMs automatically
Fixes Bug#15880.
This patch also makes Q constants (e.g., Qnil) constant addresses