1. 25 Aug, 2012 1 commit
    • Paul Eggert's avatar
      On assertion failure, print backtrace if available. · f4a681b0
      Paul Eggert authored
      Merge from gnulib, incorporating:
      2012-08-24 execinfo: port to FreeBSD
      2012-08-22 execinfo: new module
      * admin/merge-gnulib (GNULIB_MODULES): Add execinfo.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/execinfo.c, lib/execinfo.in.h, m4/execinfo.m4: New files.
      * src/alloc.c [ENABLE_CHECKING]: Include <execinfo.h>.
      (die) [ENABLE_CHECKING]: Print a backtrace if available.
      * src/Makefile.in (LIB_EXECINFO): New macro.
      (LIBES): Use it.
      f4a681b0
  2. 21 Aug, 2012 1 commit
    • Paul Eggert's avatar
      * alloc.c: Use bool for booleans. · fce31d69
      Paul Eggert authored
      (gc_in_progress, abort_on_gc)
      (setjmp_tested_p) [!GC_SAVE_REGISTERS_ON_STACK && !GC_SETJMP_WORKS]:
      (dont_register_blocks) [GC_MALLOC_CHECK]:
      (suppress_checking) [ENABLE_CHECKING]: Now bool, not int.
      (check_string_bytes, make_specified_string, memory_full)
      (live_string_p, live_cons_p, live_symbol_p, live_float_p)
      (live_misc_p, live_vector_p, live_buffer_p, mark_maybe_object)
      (mark_stack, valid_pointer_p, make_pure_string)
      (Fgarbage_collect, survives_gc_p, gc_sweep):
      Use bool for booleans, instead of int.
      (test_setjmp) [!GC_SAVE_REGISTERS_ON_STACK && !GC_SETJMP_WORKS]:
      Remove unused local.
      * alloc.c (PURE_POINTER_P):
      * lisp.h (STRING_MULTIBYTE): Document that it returns a boolean.
      * editfns.c (Fformat):
      * fileio.c (Fexpand_file_name, Fsubstitute_in_file_name)
      (Fdo_auto_save):
      * fns.c (sweep_weak_table):
      * lisp.h (suppress_checking, push_message, survives_gc_p)
      (make_pure_string, gc_in_progress, abort_on_gc):
      * lread.c (readchar, read1):
      * print.c (Fprin1_to_string):
      * xdisp.c (push_message):
      Use bool for booleans affected directly or indirectly by
      alloc.c's changes.
      fce31d69
  3. 17 Aug, 2012 1 commit
    • Paul Eggert's avatar
      A few more naming-convention fixes for getters and setters. · 0c94c8d6
      Paul Eggert authored
      * buffer.c (set_buffer_overlays_before): Move here from buffer.h,
      and rename from buffer_overlays_set_before.
      (set_buffer_overlays_after): Move here from buffer.h, and rename
      from buffer_overlays_set_after.
      * buffer.h (buffer_intervals): Rename from buffer_get_intervals.
      All uses changed.
      (set_buffer_intervals): Rename from buffer_set_intervals.
      * intervals.c (set_interval_object): Move here from intervals.h,
      and rename from interval_set_object.
      (set_interval_left): Move here from intervals.h, and rename from
      interval_set_left.
      (set_interval_right): Move here from intervals.h, and rename from
      interval_set_right.
      (copy_interval_parent): Move here from intervals.h, and rename from
      interval_copy_parent.
      * intervals.h (set_interval_parent): Rename from interval_set_parent.
      (set_interval_plist): Rename from interval_set_plist.
      Return void, not Lisp_Object, since no caller uses the result.
      * lisp.h (string_intervals): Rename from string_get_intervals.
      (set_string_intervals): Rename from string_set_intervals.
      0c94c8d6
  4. 14 Aug, 2012 2 commits
  5. 08 Aug, 2012 4 commits
    • Dmitry Antipov's avatar
      Inline functions to examine and change buffer overlays. · 4cb3e6b3
      Dmitry Antipov authored
      * buffer.c (unchain_both): New function.
      * buffer.h (buffer_get_overlays, buffer_set_overlays):
      (buffer_has_overlays): New function.
      (enum overlay_type): New enum.
      * alloc.c, buffer.c, editfns.c, fileio.c, indent.c:
      * insdel.c, intervals.c, print.c, xdisp.c: Adjust users.
      4cb3e6b3
    • Dmitry Antipov's avatar
      Inline functions to examine and change buffer intervals. · 8707c1e5
      Dmitry Antipov authored
      * alloc.c (mark_interval_tree): Remove.
      (MARK_INTERVAL_TREE): Simplify.
      (UNMARK_BALANCE_INTERVALS): Remove.  Adjust users.
      * intervals.c (buffer_balance_intervals): New function.
      (graft_intervals_into_buffer): Adjust indentation.
      (set_intervals_multibyte): Simplify.
      * buffer.h (BUF_INTERVALS): Remove.
      (buffer_get_intervals, buffer_set_intervals): New function.
      * alloc.c, buffer.c, editfns.c, fileio.c, indent.c, insdel.c:
      * intervals.c, textprop.c: Adjust users.
      8707c1e5
    • Dmitry Antipov's avatar
      Inline functions to examine and change string intervals. · ad8c997f
      Dmitry Antipov authored
      * lisp.h (STRING_INTERVALS, STRING_SET_INTERVALS): Remove.
      (string_get_intervals, string_set_intervals): New function.
      * alloc.c, buffer.c, editfns.c, fns.c, insdel.c, intervals.c:
      * lread.c, print.c, textprop.c: Adjust users.
      ad8c997f
    • Dmitry Antipov's avatar
      Cleanup intervals. · 77c7bcb1
      Dmitry Antipov authored
      * intervals.h (NULL_INTERVAL, DEFAULT_INTERVAL): Remove.
      (NULL_INTERVAL_P): Likewise.  Adjust users.
      (FRONT_STICKY_P, END_NONSTICKY_P, FRONT_NONSTICKY_P): Adjust
      comment.  Move under #if 0.
      * alloc.c, buffer.c, editfns.c, fns.c, insdel.c, intervals.c:
      * print.c, syntax.c, textprop.c, xdisp.c: Adjust users.
      77c7bcb1
  6. 07 Aug, 2012 3 commits
    • Dmitry Antipov's avatar
      Revert and cleanup Lisp_Cons, Lisp_Misc and Lisp_Symbol things. · c644523b
      Dmitry Antipov authored
      * src/lisp.h (struct Lisp_Symbol): Change xname to meaningful
      name since all xname users are fixed long time ago.  Do not use
      INTERNAL_FIELD.
      (set_symbol_name, set_symbol_function, set_symbol_plist):
      (set_symbol_next, set_overlay_plist): New function.
      (struct Lisp_Cons): Do not use INTERNAL_FIELD.
      (struct Lisp_Overlay): Likewise.
      (CVAR, MVAR, SVAR): Remove.
      * src/alloc.c, src/buffer.c, src/buffer.h, src/bytecode.c:
      * src/cmds.c, src/data.c, src/doc.c, src/eval.c, src/fns.c:
      * src/keyboard.c, src/lread.c, src/nsselect.m, src/xterm.c:
      Adjust users.
      * src/.gdbinit: Change to use name field of struct Lisp_Symbol
      where appropriate.
      * admin/coccinelle/overlay.cocci, admin/coccinelle/symbol.cocci:
      Remove.
      c644523b
    • Dmitry Antipov's avatar
      Basic functions to set Lisp_Object and pointer slots of intervals. · 6a3d20cc
      Dmitry Antipov authored
      * intervals.h (interval_set_parent, interval_set_object):
      (interval_set_left, interval_set_right, interval_set_plist):
      (interval_copy_parent): New function.
      (SET_INTERVAL_OBJECT, SET_INTERVAL_PARENT, INTERVAL_PTR_SIZE): Remove.
      (RESET_INTERVAL, COPY_INTERVAL_CACHE, MERGE_INTERVAL_CACHE): Adjust
      indentation.
      (INTERVAL_SIZE): Remove.  Adjust users.
      * alloc.c, intervals.c, lread.c, textprop.c: Use new functions.
      6a3d20cc
    • Dmitry Antipov's avatar
      Drop WGET and revert read access to Lisp_Objects slots of struct window. · d3d50620
      Dmitry Antipov authored
      * window.h (WGET): Remove.
      (struct window): Do not use INTERNAL_FIELD.
      * alloc.c, buffer.c, composite.c, dispextern.h, dispnew.c, editfns.c:
      * fileio.c, font.c, fontset.c, frame.c, frame.h, fringe.c, indent.c:
      * insdel.c, keyboard.c, keymap.c, lisp.h, minibuf.c, msdos.c, nsfns.m:
      * nsmenu.m, nsterm.m, print.c, textprop.c, w32fns.c, w32menu.c:
      * w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xterm.c:
      Adjust users.
      d3d50620
  7. 06 Aug, 2012 2 commits
    • Dmitry Antipov's avatar
      Use GCALIGNMENT where appropriate. · 2b90362b
      Dmitry Antipov authored
      * alloc.c (XMALLOC_HEADER_ALIGNMENT, roundup_size):
      (union aligned_Lisp_Symbol, union aligned_Lisp_Misc):
      (mark_maybe_pointer, pure_alloc): Change to use GCALIGNMENT.
      2b90362b
    • Dmitry Antipov's avatar
      Separate read and write access to Lisp_Object slots of struct window. · 077288cf
      Dmitry Antipov authored
      * window.h (WGET, WSET): New macros similar to AREF and ASET.
      * alloc.c, buffer.c, composite.c, dispextern.h, dispnew.c, editfns.c:
      * fileio.c, font.c, fontset.c, frame.c, frame.h, fringe.c, indent.c:
      * insdel.c, keyboard.c, keymap.c, lisp.h, minibuf.c, msdos.c, nsfns.m:
      * nsmenu.m, nsterm.m, print.c, textprop.c, w32fns.c, w32menu.c:
      * w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xterm.c:
      Adjust users.
      077288cf
  8. 05 Aug, 2012 1 commit
    • Dmitry Antipov's avatar
      Generalize common compile-time constants. · 663e2b3f
      Dmitry Antipov authored
      * lisp.h (header_size, bool_header_size, word_size): Now here.
      (struct Lisp_Vector): Add comment.
      (struct Lisp_Bool_Vector): Move up to define handy constants.
      (VECSIZE, PSEUDOVECSIZE): Simplify.
      (SAFE_ALLOCA_LISP): Use new constant.  Adjust indentation.
      * buffer.c, buffer.h, bytecode.c, callint.c, eval.c, fns.c:
      * font.c, fontset.c, keyboard.c, keymap.c, macros.c, menu.c:
      * msdos.c, w32menu.c, w32term.h, window.c, xdisp.c, xfaces.c:
      * xfont.c, xmenu.c: Use word_size where appropriate.
      663e2b3f
  9. 03 Aug, 2012 1 commit
    • Paul Eggert's avatar
      Remove unnecessary casts involving pointers. · 98c6f1e3
      Paul Eggert authored
      These casts are no longer needed now that we assume C89 or later,
      since they involve casting to or from void *.
      * alloc.c (make_pure_string, make_pure_c_string, pure_cons)
      (make_pure_float, make_pure_vector):
      * lisp.h (SAFE_ALLOCA, SAFE_ALLOCA_LISP):
      * macros.c (Fstart_kbd_macro):
      * menu.c (find_and_return_menu_selection):
      * minibuf.c (read_minibuf_noninteractive):
      * sysdep.c (closedir):
      * xdisp.c (x_produce_glyphs):
      * xfaces.c (compare_fonts_by_sort_order):
      * xfns.c (x_real_positions, select_visual):
      * xselect.c (x_stop_queuing_selection_requests)
      (x_get_window_property, x_get_window_property_as_lisp_data):
      * xterm.c (x_set_frame_alpha, x_find_modifier_meanings):
      Remove unnecessary pointer casts.
      * alloc.c (record_xmalloc): New function.
      * lisp.h (record_xmalloc): New decl.
      (SAFE_ALLOCA): Now takes just one arg -- the size -- and acts
      more like a function.  This is because the pointer cast is not
      needed.  All uses changed.
      * print.c (print_string, print_error_message): Avoid length recalc.
      98c6f1e3
  10. 02 Aug, 2012 1 commit
    • Paul Eggert's avatar
      Use C99-style 'extern inline' if available. · f162bcc3
      Paul Eggert authored
      * lib-src/profile.c (SYSTIME_INLINE): Define.
      * nt/config.nt: Sync with autogen/config.in.
      (_GL_INLINE, _GL_EXTERN_INLINE, _GL_INLINE_HEADER_BEGIN)
      (_GL_INLINE_HEADER_END): New macros.
      * src/buffer.h (BUFFER_INLINE):
      * src/category.h (CATEGORY_INLINE):
      * src/character.h (CHARACTER_INLINE):
      * src/charset.h (CHARSET_INLINE):
      * src/composite.h (COMPOSITE_INLINE):
      * src/dispextern.h (DISPEXTERN_INLINE):
      * src/lisp.h (LISP_INLINE):
      * src/systime.h (SYSTIME_INLINE):
      New macro, replacing 'static inline' in this header.
      * src/buffer.h, src/category.h, src/character.h, src/charset.h:
      * src/composite.h, src/dispextern.h, lisp.h, systime.h:
      Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
      * src/alloc.c (LISP_INLINE):
      * src/buffer.c (BUFFER_INLINE):
      * src/category.c (CATEGORY_INLINE):
      * src/character.c (CHARACTER_INLINE):
      * src/charset.c (CHARSET_INLINE):
      * src/composite.c (COMPOSITE_INLINE):
      * src/dispnew.c (DISPEXTERN_INLINE):
      * src/sysdep.c (SYSTIME_INLINE):
      Define to EXTERN_INLINE, so that the corresponding functions
      are compiled into code.
      * src/conf_post.h (INLINE, EXTERN_INLINE, INLINE_HEADER_BEGIN)
      (INLINE_HEADER_END): New macros.
      * src/lisp.h (PSEUDOVECTOR_FLAG): Now a macro as well as a constant,
      since it's used in non-static inline functions now.
      f162bcc3
  11. 01 Aug, 2012 3 commits
    • Dmitry Antipov's avatar
      Use INTERNAL_FIELD for conses and overlays. · d8a05828
      Dmitry Antipov authored
      * src/lisp.h (struct Lisp_Cons): Use INTERNAL_FIELD.
      Remove obsolete comment.
      (MVAR): New macro.
      (struct Lisp_Overlay): Use INTERNAL_FIELD.
      * src/alloc.c, src/buffer.c, src/buffer.h, src/fns.c: Adjust users.
      * admin/coccinelle/overlay.cocci: Semantic patch to replace direct
      access to Lisp_Object members of struct Lisp_Overlay to MVAR.
      d8a05828
    • Dmitry Antipov's avatar
      Use INTERNAL_FIELD for symbols. · 8271d590
      Dmitry Antipov authored
      * src/lisp.h (SVAR): New macro.  Adjust users.
      * src/alloc.c, src/bytecode.c, src/cmds.c, src/data.c, src/doc.c, src/eval.c:
      * src/fns.c, src/keyboard.c, src/lread.c, src/xterm.c: Users changed.
      * admin/coccinelle/symbol.cocci: Semantic patch to replace direct
      access to Lisp_Object members of struct Lisp_Symbol to SVAR.
      8271d590
    • Dmitry Antipov's avatar
      Use INTERNAL_FIELD for windows. · 3a45383a
      Dmitry Antipov authored
      * src/window.h (WVAR): New macro.
      (struct window): Change Lisp_Object members to INTERNAL_FIELD.
      * src/alloc.c, src/buffer.c, src/composite.c, src/dispextern.h:
      * src/dispnew.c, src/editfns.c, src/fileio.c, src/font.c, src/fontset.c:
      * src/frame.c, src/frame.h, src/fringe.c, src/indent.c, src/insdel.c:
      * src/keyboard.c, src/keymap.c, src/lisp.h, src/minibuf.c, src/nsterm.m:
      * src/print.c, src/textprop.c, src/w32fns.c, src/w32menu.c, src/w32term.c:
      * src/window.c, src/xdisp.c, src/xfaces.c, src/xfns.c, src/xmenu.c:
      * src/xterm.c: Users changed.
      * admin/coccinelle/window.cocci: Semantic patch to replace direct
      access to Lisp_Object members of struct window to WVAR.
      3a45383a
  12. 31 Jul, 2012 1 commit
    • Dmitry Antipov's avatar
      Generalize INTERNAL_FIELD between buffers, keyboards and frames. · e34f7f79
      Dmitry Antipov authored
      * src/lisp.h (INTERNAL_FIELD): New macro.
      * src/buffer.h (BUFFER_INTERNAL_FIELD): Removed.
      (BVAR): Change to use INTERNAL_FIELD.
      * src/keyboard.h (KBOARD_INTERNAL_FIELD): Likewise.
      (KVAR): Change to use INTERNAL_FIELD.
      * src/frame.h (FVAR): New macro.
      (struct frame): Use INTERNAL_FIELD for all Lisp_Object fields.
      * src/alloc.c, src/buffer.c, src/data.c, src/dispnew.c, src/dosfns.c
      * src/eval.c, src/frame.c, src/fringe.c, src/gtkutil.c, src/minibuf.c
      * src/nsfns.m, src/nsterm.m, src/print.c, src/term.c, src/w32fns.c
      * src/w32menu.c, src/w32term.c, src/window.c, src/window.h, src/xdisp.c
      * src/xfaces.c, src/xfns.c, src/xmenu.c, src/xterm.c: Users changed.
      * admin/coccinelle/frame.cocci: Semantic patch to replace direct
      access to Lisp_Object members of struct frame to FVAR.
      e34f7f79
  13. 30 Jul, 2012 4 commits
    • Paul Eggert's avatar
      * lisp.h (SWITCH_ENUM_CAST): Remove. All uses removed. · 7393bcbb
      Paul Eggert authored
      This no-op macro hasn't been needed for many years.
      * src/regex.c (SWITCH_ENUM_CAST) [!emacs]: Likewise.
      7393bcbb
    • Paul Eggert's avatar
      Export DIRECTORY_SEP, TYPEMASK, VALMASK to GDB. · c32af1e4
      Paul Eggert authored
      * alloc.c (gdb_make_enums_visible) [USE_LSB_TAG]: Add lsb_bits.
      * lisp.h (enum lsb_bits) [USE_LSB_TAG]: New enum, for
      gdb_make_enums_visible.
      (TYPEMASK, VALMASK) [USE_LSB_TAGS]: Now enum constants, not macros.
      (DIRECTORY_SEP): Now a constant, not a macro.
      c32af1e4
    • Paul Eggert's avatar
      Export to GDB most of lisp.h's remaining object-like macros. · 03a660a6
      Paul Eggert authored
      * lisp.h (min, max): Move earlier, because they're used earlier now.
      (INTMASK, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK)
      (CHAR_TABLE_STANDARD_SLOTS, CHARTAB_SIZE_BITS_0)
      (CHARTAB_SIZE_BITS_1, CHARTAB_SIZE_BITS_2, CHARTAB_SIZE_BITS_3)
      (DEFAULT_HASH_SIZE, COMPILED_ARGLIST, COMPILED_BYTECODE)
      (COMPILED_CONSTANTS, COMPILED_STACK_DEPTH, COMPILED_DOC_STRING)
      (COMPILED_INTERACTIVE, CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT)
      (CHAR_CTL, CHAR_META, CHAR_MODIFIER_MASK, CHARACTERBITS)
      (MANY, UNEVALLED, FLOAT_TO_STRING_BUFSIZE, MAX_ALLOCA):
      Now constants, for GDB.  They need not be macros.
      (MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM, STRING_BYTES_BOUND):
      Now constants, for GDB, as well as macros, for static initializers.
      (CHAR_TABLE_STANDARD_SLOTS, CHAR_TABLE_EXTRA_SLOTS):
      Move to after the definition of struct Lisp_Char_Table,
      since the former now needs that type defined.
      (enum CHARTAB_SIZE_BITS, enum CHAR_TABLE_STANDARD_SLOTS)
      (enum DEFAULT_HASH_SIZE, enum Lisp_Compiled, enum char_bits)
      (enum maxargs, enum FLOAT_TO_STRING_BUFSIZE, enum MAX_ALLOCA):
      New enums, for gdb_make_enums_visible.
      (GLYPH_MODE_LINE_FACE): Remove; unused.
      * alloc.c (STRING_BYTES_MAX): Now a constant, now a macro.
      (gdb_make_enums_visible): Add enum CHARTAB_SIZE_BITS, enum
      CHAR_TABLE_STANDARD_SLOTS, enum char_bits, enum DEFAULT_HASH_SIZE,
      enum FLOAT_TO_STRING_BUFSIZE, enum Lisp_Bits, enum Lisp_Compiled,
      enum maxargs, enum MAX_ALLOCA.
      (ARRAY_MARK_FLAG_VAL, PSEUDOVECTOR_FLAG_VAL, VALMASK_VAL): Remove.
      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Remove;
      no longer needed, now that they are done in lisp.h.
      03a660a6
    • Dmitry Antipov's avatar
      Cleanup string bytes checking. · e499d0ee
      Dmitry Antipov authored
      * alloc.c (GC_STRING_BYTES, CHECK_STRING_BYTES): Remove.  Convert
      all users to STRING_BYTES or string_bytes if GC_CHECK_STRING_BYTES.
      (check_string_bytes): Define to empty if not GC_CHECK_STRING_BYTES.
      (check_sblock, compact_small_strings): Simplify.
      e499d0ee
  14. 29 Jul, 2012 3 commits
  15. 28 Jul, 2012 1 commit
    • Paul Eggert's avatar
      Use Gnulib stdalign and environ modules (Bug#9772, Bug#9960). · e32a5799
      Paul Eggert authored
      * .bzrignore: Add lib/stdalign.h.
      * config.bat: Do not set NO_DECL_ALIGN; no longer needed.
      Copy lib/stdalign.in.h to lib/stdalign.in-h as needed.
      * configure.ac (HAVE_ATTRIBUTE_ALIGNED): Remove the code that
      fiddles with this, as gnulib now does this for us.
      * admin/merge-gnulib: Add environ, stdalign.
      * m4/environ.m4: New file, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/stdalign.in.h, m4/stdalign.m4: New files, from gnulib.
      * sed2v2.inp (HAVE_ATTRIBUTE_ALIGNED): Remove edit.
      * sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
      (GL_GENERATE_STDALIGN_H_FALSE): New edits.
      * nt/config.nt (HAVE_ATTRIBUTE_ALIGNED): Remove.
      * src/alloc.c (XMALLOC_BASE_ALIGNMENT, GC_POINTER_ALIGNMENT, pure_alloc):
      Simplify by using alignof.
      (pure_alloc) [! USE_LSB_TAG]: Don't over-align EMACS_INT values.
      * src/lisp.h: Include <stdalign.h>.
      (GCALIGNMENT): New macro and constant.
      (DECL_ALIGN): Remove.  All uses replaced by alignas (GCALIGNMENT).
      (USE_LSB_TAG): ifdef on alignas, not on DECL_ALIGN.
      (stdalign): New macro, if not already defined.
      e32a5799
  16. 27 Jul, 2012 6 commits
    • Eli Zaretskii's avatar
      Fix listn introduced in 2012-07-27T06:04:35Z!dmantipov@yandex.ru. · bcfbc9de
      Eli Zaretskii authored
       src/alloc.c (listn): Fix the order the arguments are consed onto the list.
      bcfbc9de
    • Eli Zaretskii's avatar
      Fix failure to compile on Windows due to 2012-07-27T06:04:35Z!dmantipov@yandex.ru. · 3438fe21
      Eli Zaretskii authored
       src/lisp.h (enum constype): Use CONSTYPE_HEAP and CONSTYPE_PURE for
       enumeration constants, as PURE and HEAP are too general, and clash
       with other headers and sources, such as gmalloc.c and the
       MS-Windows system headers.  All users changed.
      3438fe21
    • Dmitry Antipov's avatar
      Revert last save_excursion_save and save_excursion_restore changes. · eeaea515
      Dmitry Antipov authored
      * alloc.c, editfns.c, marker.c, lisp.h: Revert.
      Lots of crashes reported by Chong Yidong <cyd@gnu.org>.
      eeaea515
    • Paul Eggert's avatar
      Improve GDB symbol export. · 4706125e
      Paul Eggert authored
      * .gdbinit (xgetptr, xgetint, xgettype): Set $bugfix in different
      arms of an 'if', not using conditional expressions; otherwise GDB
      complains about the types in the unevaluated arm when the argument
      is an integer literal.
      (xgetint): Simplify expression.
      * alloc.c (gdb_make_enums_visible): New constant.  This ports to
      GCC 3.4.2 the export of symbols to GDB.  Problem reported by Eli
      Zaretskii in <http://bugs.gnu.org/1995-05-30T23:07:27Z!kwzh@gnu.org#13>.
      * lisp.h (PUBLISH_TO_GDB): Remove.  All uses removed.  No longer
      needed now that we have gdb_make_enums_visible.
      (enum CHECK_LISP_OBJECT_TYPE, enum Lisp_Bits, enum More_Lisp_Bits)
      (enum enum_USE_LSB_TAG):
      New enum types, packaging up enums that need to be exported to GDB.
      4706125e
    • Dmitry Antipov's avatar
      Utility function to make a list from specified amount of objects. · 694b6c97
      Dmitry Antipov authored
      * lisp.h (enum constype): New datatype.
      (listn): New prototype.
      * alloc.c (listn): New function.
      (Fmemory_use_count, syms_of_alloc): Use it.
      * buffer.c (syms_of_buffer): Likewise.
      * callint.c (syms_of_callint): Likewise.
      * charset.c (define_charset_internal): Likewise.
      * coding.c (syms_of_coding): Likewise.
      * keymap.c (syms_of_keymap): Likewise.
      * search.c (syms_of_search): Likewise.
      * syntax.c (syms_of_syntax): Likewise.
      * w32.c (init_environment): Likewise.
      * w32fns.c (Fw32_battery_status, syms_of_w32fns): Likewise.
      * xdisp.c (syms_of_xdisp): Likewise.
      * xfns.c (syms_of_xfns): Likewise.
      694b6c97
    • Dmitry Antipov's avatar
      Fast save_excursion_save and save_excursion_restore. · 6195f384
      Dmitry Antipov authored
      * lisp.h (struct Lisp_Excursion): New data type.
      (PVEC_EXCURSION): New pseudovector type.
      (XEXCURSION, XSETEXCURSION, EXCURSIONP): Convenient macros
      to deal with it.  Adjust comments.
      (init_marker, attach_marker): New prototype.
      (unchain_marker): Adjust prototype.
      * marker.c (attach_marker): Change to global.
      (init_marker): New function.
      * alloc.c (Fmake_marker, build_marker): Use it.
      (build_marker): More easserts.
      (mark_object): Handle struct Lisp_Excursion.
      * editfns.c (save_excursion_save, save_excursion_restore):
      Reimplement to use struct Lisp_Excursion.  Add comments.
      6195f384
  17. 26 Jul, 2012 1 commit
    • Paul Eggert's avatar
      Fix export of symbols to GDB. · 5eceb8fb
      Paul Eggert authored
      * alloc.c (ARRAY_MARK_FLAG_VAL, PSEUDOVECTOR_FLAG_VAL, VALMASK_VAL)
      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Move these here from
      emacs.c, as this is a more-suitable home.  Had this been done earlier
      the fix for 1995-05-30T23:07:27Z!kwzh@gnu.org would have avoided some of the problems noted in
      <http://bugs.gnu.org/1995-05-30T23:07:27Z!kwzh@gnu.org#13> by Eli Zaretskii, as the scope problems
      would have been more obvious.
      * emacs.c (gdb_CHECK_LISP_OBJECT_TYPE, gdb_DATA_SEG_BITS)
      (gdb_GCTYPEBITS, gdb_USE_LSB_TAG)
      (CHECK_LISP_OBJECT_TYPE, DATA_SEG_BITS, GCTYPEBITS, USE_LSB_TAG):
      Remove; now done in lisp.h.
      * lisp.h (PUBLISH_TO_GDB): New macro.
      (GCTYPEBITS, USE_LSB_TAG, CHECK_LISP_OBJECT_TYPE, enum pvec_type)
      (DATA_SEG_BITS): Use it.
      (GCTYPEBITS, USE_LSB_TAG): Now also an enum, for GDB.
      (CHECK_LISP_OBJECT_TYPE, DATA_SEG_BITS): Now just an enum, for GDB.
      * mem-limits.h (EXCEEDS_LISP_PTR): Redo so that DATA_SEG_BITS need
      not be usable in #if.  This simplifies things.
      5eceb8fb
  18. 23 Jul, 2012 1 commit
    • Dmitry Antipov's avatar
      Cleanup miscellaneous objects allocation and initialization. · d7a7fda3
      Dmitry Antipov authored
      * alloc.c (allocate_misc): Change to static.  Add argument to
      specify the subtype.  Adjust comment and users.
      (build_overlay): New function.
      * buffer.c (copy_overlays, Fmake_overlay): Use it.
      * lisp.h (struct Lisp_Overlay): Remove obsolete comment.
      (allocate_misc): Remove prototype.
      (build_overlay): Add prototype.
      d7a7fda3
  19. 22 Jul, 2012 1 commit
  20. 20 Jul, 2012 2 commits
    • Dmitry Antipov's avatar
      Extend the value returned by Fgarbage_collect with heap statistics. · f8643a6b
      Dmitry Antipov authored
      * alloc.c (Qheap): New symbol.
      (syms_of_alloc): DEFSYM it.
      (Fgarbage_collect): If DOUG_LEA_MALLOC, add mallinfo data.
      (Fmemory_free): Remove.
      (syms_of_alloc): Don't defsubr it.
      * buffer.c (Fcompact_buffer): Remove.
      (syms_of_buffer): Don't defsubr it.
      f8643a6b
    • Dmitry Antipov's avatar
      Make maybe_gc inline. · dac616ff
      Dmitry Antipov authored
      Verify that inlining is always possible (GCC 4.7.1, -O3 -Winline).
      * lisp.h (consing_since_gc, gc_relative_threshold)
      (memory_full_cons_threshold): Revert declaration.
      (maybe_gc): Remove prototype, define as inline.
      * alloc.c: Remove old commented-out code.
      (consing_since_gc, gc_relative_threshold)
      (memory_full_cons_threshold): Revert to global.
      (maybe_gc): Remove.
      dac616ff