]> code.delx.au - gnu-emacs/commit
Port to 32-bit --with-wide-int
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 10 Jan 2015 21:33:38 +0000 (13:33 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 10 Jan 2015 21:42:35 +0000 (13:42 -0800)
commit6a37ecee0884ff30ac7666e6502e2a9d2608f291
tree875bd8310981ff850911f04da4c3c3b95f34537b
parent649937920b5023be5c0685d1537f5ea2bfb9899a
Port to 32-bit --with-wide-int

Prefer symbol indexes to struct Lisp_Symbol * casted and then
widened, as the latter had trouble with GCC on Fedora 21 when
configured --with-wide-int and when used in static initializers.
* lib-src/make-docfile.c (write_globals): Define and use symbols like
iQnil (a small integer, like 0) rather than aQnil (an address
constant).
* src/alloc.c (garbage_collect_1, which_symbols):
* src/lread.c (init_obarray):
Prefer builtin_lisp_symbol when it can be used.
* src/dispextern.h (struct image_type.type):
* src/font.c (font_property_table.key):
* src/frame.c (struct frame_parm_table.sym):
* src/keyboard.c (scroll_bar_parts, struct event_head):
* src/xdisp.c (struct props.name):
Use the index of a builtin symbol rather than its address.
All uses changed.
* src/lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ...
(TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with
symbol indexes rather than pointers, and which work better on MSB
hosts because they shift right before tagging.  All uses changed.
(DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
No longer noops on wide-int hosts, since they work now.
(builtin_lisp_symbol): New function.
12 files changed:
lib-src/ChangeLog
lib-src/make-docfile.c
src/ChangeLog
src/alloc.c
src/dispextern.h
src/font.c
src/frame.c
src/image.c
src/keyboard.c
src/lisp.h
src/lread.c
src/xdisp.c