Use functions, not macros, for XINT etc.
[bpt/emacs.git] / src / ChangeLog
index cf5a8c0..fc57bda 100644 (file)
@@ -1,3 +1,213 @@
+2013-06-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Move functions from lisp.h to individual modules when possible.
+       From a suggestion by Andreas Schwab in <http://bugs.gnu.org/11935#68>.
+       * alloc.c (XFLOAT_INIT, set_symbol_name):
+       * buffer.c (CHECK_OVERLAY):
+       * chartab.c (CHECK_CHAR_TABLE, set_char_table_ascii)
+       (set_char_table_parent):
+       * coding.c (CHECK_NATNUM_CAR, CHECK_NATNUM_CDR):
+       * data.c (BOOLFWDP, INTFWDP, KBOARD_OBJFWDP, OBJFWDP, XBOOLFWD)
+       (XKBOARD_OBJFWD, XINTFWD, XOBJFWD, CHECK_SUBR, set_blv_found)
+       (blv_value, set_blv_value, set_blv_where, set_blv_defcell)
+       (set_blv_valcell):
+       * emacs.c (setlocale) [!HAVE_SETLOCALE]:
+       * eval.c (specpdl_symbol, specpdl_old_value, specpdl_where)
+       (specpdl_arg, specpdl_func, backtrace_function, backtrace_nargs)
+       (backtrace_args, backtrace_debug_on_exit):
+       * floatfns.c (CHECK_FLOAT):
+       * fns.c (CHECK_HASH_TABLE, CHECK_LIST_END)
+       (set_hash_key_and_value, set_hash_next, set_hash_next_slot)
+       (set_hash_hash, set_hash_hash_slot, set_hash_index)
+       (set_hash_index_slot):
+       * keymap.c (CHECK_VECTOR_OR_CHAR_TABLE):
+       * marker.c (CHECK_MARKER):
+       * textprop.c (CHECK_STRING_OR_BUFFER):
+       * window.c (CHECK_WINDOW_CONFIGURATION):
+       Move here from lisp.h, and make these functions static rather than
+       extern inline.
+       * buffer.c (Qoverlayp):
+       * data.c (Qsubrp):
+       * fns.c (Qhash_table_p):
+       * window.c (Qwindow_configuration_p):
+       Now static.
+       * lisp.h: Remove the abovementioned defns and decls.
+
+       Use functions, not macros, for XINT etc. (Bug#11935).
+       In lisp.h, prefer functions to function-like macros, and
+       constants to object-like macros, when either will do.  This:
+        . simplifies use, as there's no more need to worry about
+          arguments' side effects being evaluated multiple times.
+        . makes the code easier to debug on some platforms.
+       However, when using gcc -O0, keep using function-like macros
+       for a few critical operations, for performance reasons.
+       This sort of thing isn't needed with gcc -Og, but -Og
+       is a GCC 4.8 feature and isn't widely-enough available yet.
+       * alloc.c (gdb_make_enums_visible) [USE_LSB_TAG]:
+       Remove enum lsb_bits; no longer needed.
+       (allocate_misc, free_misc): Don't use XMISCTYPE as an lvalue.
+       * buffer.c (Qoverlap):
+       * data.c (Qsubrp):
+       * fns.c (Qhash_table_p):
+       Now extern, so lisp.h can use these symbols.
+       * dispextern.h: Include character.h, for MAX_CHAR etc.
+       (GLYPH, GLYPH_CHAR, GLYPH_FACE, SET_GLYPH_CHAR, SET_GLYPH_FACE)
+       (SET_GLYPH, GLYPH_CODE_CHAR, GLYPH_CODE_FACE)
+       (SET_GLYPH_FROM_GLYPH_CODE, GLYPH_MODE_LINE_FACE, GLYPH_CHAR_VALID_P)
+       (GLYPH_CODE_P): Move here from lisp.h.
+       (GLYPH_CHAR, GLYPH_FACE, GLYPH_CODE_CHAR, GLYPH_CODE_FACE)
+       (GLYPH_CHAR_VALID_P, GLYPH_CODE_P): Now functions, not macros.
+       (GLYPH_MODE_LINE_FACE): Now enums, not macros.
+       * eval.c (Fautoload): Cast XUNTAG output to intptr_t, since
+       XUNTAG now returns void *.
+       * lisp.h (lisp_h_XLI, lisp_h_XIL, lisp_h_CHECK_LIST_CONS)
+       (lisp_h_CHECK_NUMBER CHECK_SYMBOL, lisp_h_CHECK_TYPE)
+       (lisp_h_CONSP, lisp_h_EQ, lisp_h_FLOATP, lisp_h_INTEGERP)
+       (lisp_h_MARKERP, lisp_h_MISCP, lisp_h_NILP)
+       (lisp_h_SET_SYMBOL_VAL, lisp_h_SYMBOL_CONSTANT_P)
+       (lisp_h_SYMBOL_VAL, lisp_h_SYMBOLP, lisp_h_VECTORLIKEP)
+       (lisp_h_XCAR, lisp_h_XCDR, lisp_h_XCONS, lisp_h_XHASH)
+       (lisp_h_XPNTR, lisp_h_XSYMBOL):
+       New macros, renamed from their sans-lisp_h_ counterparts.
+       (XLI, XIL, CHECK_LIST_CONS, CHECK_NUMBER CHECK_SYMBOL)
+       (CHECK_TYPE, CONSP, EQ, FLOATP, INTEGERP, MARKERP)
+       (MISCP, NILP, SET_SYMBOL_VAL, SYMBOL_CONSTANT_P, SYMBOL_VAL, SYMBOLP)
+       (VECTORLIKEP, XCAR, XCDR, XCONS, XHASH, XPNTR, XSYMBOL):
+       If compiling via GCC without optimization, define these as macros
+       in addition to inline functions.
+       To disable this, compile with -DINLINING=0.
+       (LISP_MACRO_DEFUN, LISP_MACRO_DEFUN_VOID): New macros.
+       (check_cons_list) [!GC_CHECK_CONS_LIST]: Likewise.
+       (make_number, XFASTINT, XINT, XTYPE, XUNTAG): Likewise, but
+       hand-optimize only in the USE_LSB_TAG case, as GNUish hosts do that.
+       (INTMASK, VALMASK): Now macros, since static values cannot be
+       accessed from extern inline functions.
+       (VALMASK): Also a constant, for benefit of old GDB.
+       (LISP_INT_TAG_P): Remove; no longer needed as the only caller
+       is INTEGERP, which can fold it in.
+       (XLI, XIL, XHASH, XTYPE,XINT, XFASTINT, XUINT)
+       (make_number, XPNTR, XUNTAG, EQ, XCONS, XVECTOR, XSTRING, XSYMBOL)
+       (XFLOAT, XPROCESS, XWINDOW, XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE)
+       (XSUB_CHAR_TABLE, XBOOL_VECTOR, make_lisp_ptr, CHECK_TYPE)
+       (CHECK_STRING_OR_BUFFER, XCAR, XCDR, XSETCAR, XSETCDR, CAR, CDR)
+       (CAR_SAFE, CDR_SAFE, STRING_MULTIBYTE, SDATA, SSDATA, SREF, SSET)
+       (SCHARS, STRING_BYTES, SBYTES, STRING_SET_CHARS, STRING_COPYIN, AREF)
+       (ASIZE, ASET, CHAR_TABLE_REF_ASCII, CHAR_TABLE_REF)
+       (CHAR_TABLE_SET, CHAR_TABLE_EXTRA_SLOTS, SYMBOL_VAL, SYMBOL_ALIAS)
+       (SYMBOL_BLV, SYMBOL_FWD, SET_SYMBOL_VAL, SET_SYMBOL_ALIAS)
+       (SET_SYMBOL_BLV, SET_SYMBOL_FWD, SYMBOL_NAME, SYMBOL_INTERNED_P)
+       (SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P, SYMBOL_CONSTANT_P)
+       (XHASH_TABLE, HASH_TABLE_P, CHECK_HASH_TABLE, HASH_KEY, HASH_VALUE)
+       (HASH_NEXT, HASH_HASH, HASH_INDEX, HASH_TABLE_SIZE)
+       (XMISC, XMISCANY, XMARKER, XOVERLAY, XSAVE_VALUE, XFWDTYPE)
+       (XINTFWD, XBOOLFWD, XOBJFWD, XBUFFER_OBJFWD, XKBOARD_OBJFWD)
+       (XFLOAT_DATA, XFLOAT_INIT, NILP, NUMBERP, NATNUMP)
+       (RANGED_INTEGERP, CONSP, FLOATP, MISCP, STRINGP, SYMBOLP)
+       (INTEGERP, VECTORLIKEP, VECTORP, OVERLAYP)
+       (MARKERP, SAVE_VALUEP, AUTOLOADP, INTFWDP, BOOLFWDP, OBJFWDP)
+       (BUFFER_OBJFWDP, KBOARD_OBJFWDP, PSEUDOVECTOR_TYPEP)
+       (PSEUDOVECTORP, WINDOW_CONFIGURATIONP, PROCESSP, WINDOWP)
+       (TERMINALP, SUBRP, COMPILEDP, BUFFERP, CHAR_TABLE_P)
+       (SUB_CHAR_TABLE_P, BOOL_VECTOR_P, FRAMEP, IMAGEP, ARRAYP)
+       (CHECK_LIST, CHECK_LIST_CONS, CHECK_LIST_END, CHECK_STRING)
+       (CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE)
+       (CHECK_VECTOR, CHECK_VECTOR_OR_STRING, CHECK_ARRAY)
+       (CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER, CHECK_WINDOW)
+       (CHECK_WINDOW_CONFIGURATION, CHECK_PROCESS, CHECK_SUBR)
+       (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, XFLOATINT)
+       (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT, CHECK_OVERLAY)
+       (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR, CHECK_NATNUM_CAR)
+       (CHECK_NATNUM_CDR, FUNCTIONP, SPECPDL_INDEX, LOADHIST_ATTACH)
+       Now functions.
+       (check_cons_list) [!GC_CHECK_CONS_LIST]: New empty function.
+       (LISP_MAKE_RVALUE, TYPEMASK): Remove; no longer needed.
+       (VALMASK): Define in one place rather than in two, merging the
+       USE_LSB_TAG parts; this is simpler.
+       (aref_addr, gc_aset, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM)
+       (max, min, struct Lisp_String, UNSIGNED_CMP, ASCII_CHAR_P):
+       Move up, to avoid use before definition.
+       Also include "globals.h" earlier, for the same reason.
+       (make_natnum): New function.
+       (XUNTAG): Now returns void *, not intptr_t, as this means fewer casts.
+       (union Lisp_Fwd, BOOLFWDP, BOOL_VECTOR_P, BUFFER_OBJFWDP, BUFFERP)
+       (CHAR_TABLE_P, CHAR_TABLE_REF_ASCII, CONSP, FLOATP, INTEGERP, INTFWDP)
+       (KBOARD_OBJFWDP, MARKERP, MISCP, NILP, OBJFWDP, OVERLAYP, PROCESSP)
+       (PSEUDOVECTORP, SAVE_VALUEP, STRINGP, SUB_CHAR_TABLE_P, SUBRP, SYMBOLP)
+       (VECTORLIKEP, WINDOWP, Qoverlayp, char_table_ref, char_table_set)
+       (char_table_translate, Qarrayp, Qbufferp, Qbuffer_or_string_p)
+       (Qchar_table_p, Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp)
+       (Qnil, Qnumberp, Qsubrp, Qstringp, Qsymbolp, Qvectorp)
+       (Qvector_or_char_table_p, Qwholenump, Ffboundp, wrong_type_argument)
+       (initialized, Qhash_table_p, extract_float, Qprocessp, Qwindowp)
+       (Qwindow_configuration_p, Qimage): New forward declarations.
+       (XSETFASTINT): Simplify by rewriting in terms of make_natnum.
+       (STRING_COPYIN): Remove; unused.
+       (XCAR_AS_LVALUE, XCDR_AS_LVALUE): Remove these macros, replacing with ...
+       (xcar_addr, xcdr_addr): New functions.  All uses changed.
+       (IEEE_FLOATING_POINT): Now a constant, not a macro.
+       (GLYPH, GLYPH_CHAR, GLYPH_FACE, SET_GLYPH_CHAR, SET_GLYPH_FACE)
+       (SET_GLYPH, GLYPH_CODE_CHAR, GLYPH_CODE_FACE)
+       (SET_GLYPH_FROM_GLYPH_CODE, GLYPH_MODE_LINE_FACE, GLYPH_CHAR_VALID_P)
+       (GLYPH_CODE_P): Move to dispextern.h, to avoid define-before-use.
+       (TYPE_RANGED_INTEGERP): Simplify.
+       (Qsubrp, Qhash_table_p, Qoverlayp): New extern decls.
+       (setlocale, fixup_locale, synchronize_system_messages_locale)
+       (synchronize_system_time_locale) [!HAVE_SETLOCALE]:
+       Now empty functions, not macros.
+       (functionp): Return bool, not int.
+       * window.c (Qwindow_configuration_p): Now extern,
+       so window.h can use it.
+       * window.h (Qwindowp): Move decl back to lisp.h.
+
+2013-06-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (Fline_pixel_height): New function, required for solving
+       bug #14567.
+
+2013-06-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fns.c (Fcopy_sequence): Simplify XTYPE calculation.
+
+2013-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (syms_of_lread):
+       * fns.c (Fprovide): Adjust to new format of after-load-alist.
+
+2013-06-13  Kelly Dean  <kellydeanch@yahoo.com>  (tiny change)
+
+       * fileio.c (Fdo_auto_save): Trap errors in auto-save-hook.  (Bug#14479)
+
+2013-06-12  Xue Fuqiao  <xfq.free@gmail.com>
+
+       * fileio.c (expand_file_name): Doc fix.
+
+2013-06-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Tickle glib by waiting for Emacs itself, not for process 0 (Bug#14569).
+       * process.c (init_process_emacs) [HAVE_GLIB && !WINDOWSNT]:
+       Wait for self, not for 0.  This can't hurt on GNU or similar
+       system, and may help with Cygwin.
+
+       * keyboard.c: Don't use PROP (...) as an lvalue.
+       (parse_tool_bar_item) [!USE_GTK && !HAVE_NS]:
+       Use set_prop (A, B), not PROP (A) = B.
+
+2013-06-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (get_it_property): Use it->window instead of generating
+       a Lisp object from it->w.
+
+2013-06-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (get_it_property): If it->object is a buffer, pass to
+       get-char-property the window that is being rendered, instead of
+       the buffer, to support window-specific overlays.  (Bug#14575)
+       (compute_display_string_pos): When W is NULL, use the current
+       buffer as the object to pass to get-char-property.
+       (Fcurrent_bidi_paragraph_direction): Assign NULL to the window
+       pointer member of the bidi iterator, since no window is pertinent
+       to this function.
+
 2013-06-08  Eli Zaretskii  <eliz@gnu.org>
 
        * bidi.c (bidi_fetch_char): Accept additional argument, the window
@@ -8,8 +218,8 @@
        * xdisp.c (init_from_display_pos, init_iterator)
        (handle_single_display_spec, next_overlay_string)
        (get_overlay_strings_1, reseat_1, reseat_to_string)
-       (push_prefix_prop, Fcurrent_bidi_paragraph_direction): Set
-       bidi_it.w member from it->w.
+       (push_prefix_prop, Fcurrent_bidi_paragraph_direction):
+       Set bidi_it.w member from it->w.
        (compute_display_string_pos): Accept additional argument, the
        window being displayed, and pass it to Fget_char_property.
        (Bug#14575)
 
 2013-06-08  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * xgselect.c: Remove unneeded include xterm.h
+       * xgselect.c: Remove unneeded include xterm.h.
 
        * process.c (wait_reading_process_output): Check for NS before GLIB.
        GLIB may be linked in due to rsvg, but ns_select must be called.
        (update_frame_tool_bar): Update code for GNUStep.
        (clearAll): New method.
        (addDisplayItemWithImage:idx:tag:helpText:enabled:): Handle new tag
-       argument. Call insertItemWithItemIdentifier when NS_IMPL_GNUSTEP. Move
-       identifierToItem setObject and activeIdentifiers addObject before
+       argument. Call insertItemWithItemIdentifier when NS_IMPL_GNUSTEP.
+       Move identifierToItem setObject and activeIdentifiers addObject before
        call to insertItemWithItemIdentifier.
        (validateVisibleItems): Fix indentation.
        (toolbarAllowedItemIdentifiers:): Return activeIdentifiers.
        Use F suffix on floats.
        (ns_char_width): Returns CGFloat.
        (ns_ascii_average_width): w is CGFloat instead of float.
-       (nsfont_draw): cbuf and c are unsigned. Cast to char* in call to
+       (nsfont_draw): cbuf and c are unsigned.  Cast to char* in call to
        DPSxshow.
        (ns_glyph_metrics): CGFloat instead of float.
 
 
 2013-05-07  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Use Gnulib ACL implementation, for benefit of Solaris etc. (Bug#14295)
+       Use Gnulib ACL implementation, for benefit of Solaris etc.  (Bug#14295)
        * Makefile.in (LIB_ACL): New macro.
        (LIBACL_LIBS): Remove.
        (LIBES): Use LIB_ACL, not LIBACL_LIBS.
 2012-12-31  Adam Sjøgren  <asjo@koldfront.dk>  (tiny change)
 
        * xterm.c (scroll-bar-adjust-thumb-portion): New variable to
-       determine whether scroll bar thumb size should be adjusted or
-       not. Use variable for MOTIF.
+       determine whether scroll bar thumb size should be adjusted or not.
+       Use variable for MOTIF.
 
-       * gtkutil.c (scroll-bar-adjust-thumb-portion): Use variable for
-       GTK.
+       * gtkutil.c (scroll-bar-adjust-thumb-portion): Use variable for GTK.
 
 2013-01-13  Jan Djärv  <jan.h.d@swipnet.se>
 
 
 2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Fix permissions bugs with setgid directories etc. (Bug#13125)
+       Fix permissions bugs with setgid directories etc.  (Bug#13125)
        * dired.c (Ffile_attributes): Return t as the 9th attribute,
        to mark it as a placeholder.  The old value was often wrong.
        The only user of this attribute has been changed to use