Make Lisp_Save_Value more versatile storage for up to four objects.
authorDmitry Antipov <dmantipov@yandex.ru>
Mon, 14 Jan 2013 09:55:21 +0000 (13:55 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Mon, 14 Jan 2013 09:55:21 +0000 (13:55 +0400)
commit73ebd38f16c4799b657e501f188e9f3a3eca7805
tree2584576d6931b14b336ac4ed3eb9eb513892da2c
parentd6d02e06ee135655b604a12b0c53987988277a16
Make Lisp_Save_Value more versatile storage for up to four objects.
* lisp.h (toplevel): Enumeration to describe types of saved objects.
(struct Lisp_Save_Value): New layout.  Adjust comments.
(XSAVE_POINTER): New macro.
(XSAVE_INTEGER): Likewise.
(allocate_misc): Add prototype.
(free_misc): Likewise.
* alloc.c (allocate_misc): Now global.
(free_misc): Likewise.  Adjust comment.
(make_save_value): Use new Lisp_Save_Value layout.  Adjust comment.
(free_save_value): Likewise.
(mark_object): Likewise.
* editfns.c (save_excursion_save): Pack everything within
Lisp_Save_Value and so avoid xmalloc.
(save_excursion_restore): Adjust to match new layout.  Use free_misc
because we do not allocate extra memory any more.  Add eassert.
* print.c (print_object): New code to print Lisp_Save_Value.  Do not
rely on valid_lisp_object_p if !GC_MARK_STACK.  Adjust comments.
* dired.c, fileio.c, font.c, ftfont.c, gtkutil.c, keymap.c,
* lread.c, nsmenu.m, nsterm.h, xfns.c, xmenu.c, xselect.c:
Use XSAVE_POINTER and XSAVE_INTEGER where appropriate.
17 files changed:
src/ChangeLog
src/alloc.c
src/dired.c
src/editfns.c
src/fileio.c
src/font.c
src/ftfont.c
src/gtkutil.c
src/keymap.c
src/lisp.h
src/lread.c
src/nsmenu.m
src/nsterm.h
src/print.c
src/xfns.c
src/xmenu.c
src/xselect.c