summaryrefslogtreecommitdiff
path: root/src/alloc.c
AgeCommit message (Collapse)Author
2012-07-09Use make_formatted_string to avoid double length calculation.Dmitry Antipov
* lisp.h (make_formatted_string): New prototype. * alloc.c (make_formatted_string): New function. * buffer.c (Fgenerate_new_buffer_name): Use it. * dbus.c (syms_of_dbusbind): Likewise. * editfns.c (Fcurrent_time_zone): Likewise. * filelock.c (get_boot_time): Likewise. * frame.c (make_terminal_frame, set_term_frame_name) (x_report_frame_params): Likewise. * image.c (gs_load): Likewise. * minibuf.c (get_minibuffer): Likewise. * msdos.c (dos_set_window_size): Likewise. * process.c (make_process): Likewise. * xdisp.c (ensure_echo_area_buffers): Likewise. * xsettings.c (apply_xft_settings): Likewise.
2012-07-06Introduce fast path for the widely used marker operation.Dmitry Antipov
* alloc.c (build_marker): New function. * lisp.h (build_marker): New prototype. * buffer.c (clone_per_buffer_values, Fmake_indirect_buffer): Use it. * composite.c (autocmp_chars): Likewise. * editfns.c (buildmark): Remove. (Fpoint_marker, Fpoint_min_marker, Fpoint_max_marker) (save_restriction_save): Use build_marker. * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos): Likewise. * window.c (save_window_save): Likewise.
2012-07-05More xmalloc and related cleanup.Paul Eggert
* alloc.c, bidi.c, buffer.c, buffer.h, bytecode.c, callint.c: * callproc.c, charset.c, coding.c, composite.c, data.c, dispnew.c: * doc.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, fns.c: * font.c, fontset.c, frame.c, fringe.c, ftfont.c, ftxfont.c, gmalloc.c: * gtkutil.c, image.c, keyboard.c, keymap.c, lread.c, macros.c, menu.c: * nsfns.m, nsfont.m, nsmenu.m, nsterm.m, print.c, process.c, ralloc.c: * regex.c, region-cache.c, scroll.c, search.c, sound.c, syntax.c: * sysdep.c, term.c, termcap.c, unexmacosx.c, window.c, xdisp.c: * xfaces.c, xfns.c, xftfont.c, xgselect.c, xmenu.c, xrdb.c, xselect.c: * xterm.c: Omit needless casts involving void * pointers and allocation. Prefer "P = xmalloc (sizeof *P)" to "P = xmalloc (sizeof (TYPE_OF_P))", as the former is more robust if P's type is changed. Prefer xzalloc to xmalloc + memset 0. Simplify malloc-or-realloc to realloc. Don't worry about xmalloc returning a null pointer. Prefer xstrdup to xmalloc + strcpy. * editfns.c (Fmessage_box): Grow message_text by at least 80 when growing it. * keyboard.c (apply_modifiers_uncached): Prefer local array to alloca of a constant.
2012-07-05Cleanup xmalloc.Dmitry Antipov
* admin/coccinelle/xzalloc.cocci: Semantic patch to convert calls to xmalloc with following memset to xzalloc. * src/lisp.h (xzalloc): New prototype. Omit needless casts. * src/alloc.c (xzalloc): New function. Omit needless casts. * src/charset.c: Omit needless casts. Convert all calls to malloc with following memset to xzalloc. * src/dispnew.c: Likewise. * src/fringe.c: Likewise. * src/image.c: Likewise. * src/sound.c: Likewise. * src/term.c: Likewise. * src/w32fns.c: Likewise. * src/w32font.c: Likewise. * src/w32term.c: Likewise. * src/xfaces.c: Likewise. * src/xfns.c: Likewise. * src/xterm.c: Likewise. * src/atimer.c: Omit needless casts. * src/buffer.c: Likewise. * src/callproc.c: Likewise. * src/ccl.c: Likewise. * src/coding.c: Likewise. * src/composite.c: Likewise. * src/doc.c: Likewise. * src/doprnt.c: Likewise. * src/editfns.c: Likewise. * src/emacs.c: Likewise. * src/eval.c: Likewise. * src/filelock.c: Likewise. * src/fns.c: Likewise. * src/gtkutil.c: Likewise. * src/keyboard.c: Likewise. * src/lisp.h: Likewise. * src/lread.c: Likewise. * src/minibuf.c: Likewise. * src/msdos.c: Likewise. * src/print.c: Likewise. * src/process.c: Likewise. * src/region-cache.c: Likewise. * src/search.c: Likewise. * src/sysdep.c: Likewise. * src/termcap.c: Likewise. * src/terminal.c: Likewise. * src/tparam.c: Likewise. * src/w16select.c: Likewise. * src/w32.c: Likewise. * src/w32reg.c: Likewise. * src/w32select.c: Likewise. * src/w32uniscribe.c: Likewise. * src/widget.c: Likewise. * src/xdisp.c: Likewise. * src/xmenu.c: Likewise. * src/xrdb.c: Likewise. * src/xselect.c: Likewise.
2012-07-04* alloc.c (PSEUDOVECTOR_NBYTES): Remove stray ';'Paul Eggert
that causes compilation to fail on pre-C99 compilers.
2012-07-04Turn VECTOR_FREE_LIST_FLAG into PVEC_FREE.Stefan Monnier
* src/lisp.h (enum pvec_type): Use fewer bits. (PSEUDOVECTOR_SIZE_BITS): New constant. (PSEUDOVECTOR_SIZE_MASK, PVEC_TYPE_MASK): Use it. (XSETPVECTYPESIZE, XSETTYPED_PSEUDOVECTOR, DEFUN): Adapt code to change in pvec_type. (PSEUDOVECTOR_TYPEP): New macro. (TYPED_PSEUDOVECTORP): Use it. * src/fns.c (internal_equal): Adapt code to extract pvectype. * src/emacs.c (gdb_pvec_type): Update type. * src/alloc.c (PSEUDOVECTOR_NBYTES): New macro. (VECTOR_FREE_LIST_SIZE_MASK): Remove (=> PSEUDOVECTOR_SIZE_MASK). (VECTOR_FREE_LIST_FLAG): Remove (=> PVEC_FREE). (SETUP_ON_FREE_LIST): Use XSETPVECTYPESIZE. (sweep_vectors): Use it. Use local var `total_bytes' instead of abusing vector->header.next.nbytes. (live_vector_p): Use PVEC_TYPE. (mark_object): Adapt code to extract pvectype. Use switch.
2012-07-03Fix block vector allocation code to allow VECTOR_BLOCK_SIZEDmitry Antipov
values which aren't power of 2. * alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro. Verify it's value and the value of VECTOR_BLOCK_SIZE. Adjust users accordingly.
2012-07-03* src/alloc.c (mark_object): Revert part of last patch to use `switch'.Stefan Monnier
* src/lisp.h (Lisp_Misc, Lisp_Fwd): Move around to group better.
2012-07-03* alloc.c (allocate_vector_block): Remove redundantDmitry Antipov
calls to mallopt if DOUG_LEA_MALLOC is defined. (allocate_vectorlike): If DOUG_LEA_MALLOC is defined, avoid calls to mallopt if zero_vector is returned.
2012-07-03* alloc.c (check_string_bytes): If GC_CHECK_STRING_BYTESDmitry Antipov
is enabled, avoid dereferencing NULL current_sblock if running undumped.
2012-07-03Cleanup basic buffer management.Dmitry Antipov
* buffer.h (struct buffer): Change layout to use generic vector marking code. Fix some comments. Change type of 'clip_changed' to bitfield. Remove unused #ifndef old. (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER): Remove. (GET_OVERLAYS_AT): Fix indentation. (for_each_per_buffer_object_at): New macro. * buffer.c (clone_per_buffer_values, reset_buffer_local_variables) (Fbuffer_local_variables): Use it. (init_buffer_once, syms_of_buffer): Remove unused #ifndef old. * alloc.c (allocate_buffer): Adjust to match new layout of struct buffer. Fix comment. (mark_overlay): New function. (mark_buffer): Use it. Use mark_vectorlike to mark normal Lisp area of struct buffer. (mark_object): Use it. Adjust marking of misc objects and related comments.
2012-07-02* alloc.c (mark_object): Remove "#ifdef GC_CHECK_MARKED_OBJECTS"Paul Eggert
wrapper that is not needed because the wrapped code is a no-op (zero machine instructions) when GC_CHECK_MARKED_OBJECTS is not defined. This avoids a -Wunused-macros diagnostic with GCC 4.7.1 x86-64.
2012-07-02* alloc.c (mark_buffer): Simplify. Remove prototype.Dmitry Antipov
(mark_object): Add comment. Reorganize marking of vector-like objects. Use CHECK_LIVE for all vector-like ojects except buffers and subroutines when GC_CHECK_MARKED_OBJECTS is defined. Avoid redundant calls to mark_vectorlike for bool vectors.
2012-06-28* src/editfns.c (region_limit): Clip to narrowing.Stefan Monnier
Fixes: debbugs:11770
2012-06-28Generalize run-time debugging checks.Dmitry Antipov
* configure.in (ENABLE_CHECKING): Update comment. * src/dispextern.h (XASSERTS): Remove. * src/fontset.c (xassert): Remove. Convert from xassert to eassert. * src/alloc.c: Convert from xassert to eassert. * src/bidi.c: Likewise. * src/dispnew.c: Likewise. * src/fns.c: Likewise. * src/fringe.c: Likewise. * src/ftfont.c: Likewise. * src/gtkutil.c: Likewise. * src/image.c: Likewise. * src/keyboard.c: Likewise. * src/menu.c: Likewise. * src/process.c: Likewise. * src/scroll.c: Likewise. * src/sound.c: Likewise. * src/term.c: Likewise. * src/w32console.c: Likewise. * src/w32fns.c: Likewise. * src/w32term.c: Likewise. * src/window.c: Likewise. * src/xdisp.c: Likewise. * src/xfaces.c: Likewise. * src/xfns.c: Likewise. * src/xselect.c: Likewise. * src/xterm.c: Likewise.
2012-06-27* alloc.c (allocate_string_data): Remove dead code.Dmitry Antipov
* xsettings.c (XSETTINGS_FONT_NAME): Move under HAVE_XFT to avoid GCC warning about unused macro.
2012-06-27* alloc.c (allocate_string): Omit intervals initialization.Dmitry Antipov
* alloc.c (make_uninit_multibyte_string): Initialize intervals as in make_pure_string and make_pure_c_string.
2012-06-27* alloc.c (allocate_string): Fix last change.Dmitry Antipov
2012-06-27* alloc.c (allocate_string): Remove two redundant callsDmitry Antipov
to memset, add explicit initialization where appropriate.
2012-06-26alloc.c (mark_memory): Do not check with -faddress-sanitizer whenJohn Wiegley
building with Clang.
2012-06-26* alloc.c (allocate_window): Zero out non-Lisp part of newlyDmitry Antipov
allocated window. (allocate_process): Likewise for new process. (allocate_terminal): Changed to use offsetof. (allocate_frame): Likewise. * frame.c (make_frame): Omit redundant initialization. * window.c (make_parent_window): Use memset. (make_window): Omit redundant initialization. * process.c (make_process): Omit redundant initialization. * terminal.c (create_terminal): Likewise.
2012-06-26* src/alloc.c: Remove build_string.Dmitry Antipov
* src/lisp.h: Define build_string as static inline. This provides a better opportunity to optimize away calls to strlen when the function is called with compile-time constant argument. * src/image.c (imagemagick_error): Convert to build_string. * src/w32proc.c (sys_spawnve): Likewise. * src/xterm.c (x_term_init): Likewise. * admin/coccinelle/build_string.cocci: Semantic patch to convert from make_string to build_string.
2012-06-22Support higher-resolution time stamps.Paul Eggert
Fixes: debbugs:9000
2012-06-22Enlarge NSTATICS to 0x650.Eli Zaretskii
src/alloc.c (NSTATICS): Enlarge to 0x650. Otherwise, Emacs compiled with -DENABLE_CHECKING -DXASSERTS -DGLYPH_DEBUG=1 -DBYTE_CODE_METER aborts in staticpro during startup. (Without -DBYTE_CODE_METER, staticidx goes up to 1597 out of 1600 = 0x640.)
2012-06-19* alloc.c, bytecode.c, ccl.c, coding.c, composite.c, data.c, dosfns.c:Dmitry Antipov
* font.c, image.c, keyboard.c, lread.c, menu.c, minibuf.c, msdos.c: * print.c, syntax.c, window.c, xmenu.c, xselect.c: Replace direct access to `contents' member of Lisp_Vector objects with AREF and ASET where appropriate.
2012-06-16* buffer.h (FETCH_MULTIBYTE_CHAR): Define as inline.Andreas Schwab
(BUF_FETCH_MULTIBYTE_CHAR): Likewise. * character.c (_fetch_multibyte_char_p): Remove. * alloc.c: Include "character.h" before "buffer.h". * bidi.c: Likewise. * buffer.c: Likewise. * bytecode.c: Likewise. * callint.c: Likewise. * callproc.c: Likewise. * casefiddle.c: Likewise. * casetab.c: Likewise. * category.c: Likewise. * cmds.c: Likewise. * coding.c: Likewise. * composite.c: Likewise. * dired.c: Likewise. * dispnew.c: Likewise. * doc.c: Likewise. * dosfns.c: Likewise. * editfns.c: Likewise. * emacs.c: Likewise. * fileio.c: Likewise. * filelock.c: Likewise. * font.c: Likewise. * fontset.c: Likewise. * fringe.c: Likewise. * indent.c: Likewise. * insdel.c: Likewise. * intervals.c: Likewise. * keyboard.c: Likewise. * keymap.c: Likewise. * lread.c: Likewise. * macros.c: Likewise. * marker.c: Likewise. * minibuf.c: Likewise. * nsfns.m: Likewise. * nsmenu.m: Likewise. * print.c: Likewise. * process.c: Likewise. * regex.c: Likewise. * region-cache.c: Likewise. * search.c: Likewise. * syntax.c: Likewise. * term.c: Likewise. * textprop.c: Likewise. * undo.c: Likewise. * unexsol.c: Likewise. * w16select.c: Likewise. * w32fns.c: Likewise. * w32menu.c: Likewise. * window.c: Likewise. * xdisp.c: Likewise. * xfns.c: Likewise. * xmenu.c: Likewise. * xml.c: Likewise. * xselect.c: Likewise.
2012-06-13Use a simple struct to implement compile time checks for the Lisp_Object typeAndreas Schwab
* configure.in: Rename --enable-use-lisp-union-type to --enable-check-lisp-object-type and define CHECK_LISP_OBJECT_TYPE instead of USE_LISP_UNION_TYPE. * admin/make-emacs: Rename --union-type to --check-lisp-type. Define CHECK_LISP_OBJECT_TYPE insted of USE_LISP_UNION_TYPE. * admin/CPP-DEFINES (DEBUG_LISP_OBJECT_TYPE): Renamed from USE_LISP_UNION_TYPE. * src/lisp.h (Lisp_Object) [CHECK_LISP_OBJECT_TYPE]: Define as struct instead of union. (XLI, XIL): Define. (XHASH, XTYPE, XINT, XUINT, make_number, XSET, XPNTR, XUNTAG): Use them. * src/emacs.c (gdb_use_struct): Renamed from gdb_use_union. * src/.gdbinit: Check gdb_use_struct instead of gdb_use_union. * src/alloc.c (widen_to_Lisp_Object): Removed. (mark_memory): Use XIL instead of widen_to_Lisp_Object. * src/frame.c (delete_frame): Remove outdated comment. * src/w32fns.c (Fw32_register_hot_key): Use XLI instead of checking USE_LISP_UNION_TYPE. (Fw32_unregister_hot_key): Likewise. (Fw32_toggle_lock_key): Likewise. * src/w32menu.c (add_menu_item): Likewise. (w32_menu_display_help): Use XIL instead of checking USE_LISP_UNION_TYPE. * src/w32heap.c (allocate_heap): Don't check USE_LISP_UNION_TYPE. (init_heap): Likewise. * src/w32term.c (w32_read_socket): Update comment.
2012-06-12USE_LISP_UNION_TYPE + USE_LSB_TAG cleanup (Bug#11604)Paul Eggert
* alloc.c (make_number) [!defined make_number]: Remove, as lisp.h always defines this now. (mark_maybe_pointer): Simplify since USE_LSB_TAG is always defined now. (roundup_size): Verify that it is a power of 2. * data.c (Fmake_variable_buffer_local, Fmake_local_variable): * ftfont.c (ftfont_driver): Use LISP_INITIALLY_ZERO. * lisp.h (USE_LSB_TAG): Allow the builder to compile with -DUSE_LSB_TAG=0, to override the automatically-selected default. USE_LSB_TAG now is always defined to be either 0 or 1. All uses changed. (union Lisp_Object): Don't worry about WORDS_BIGENDIAN; the code works fine either way, and efficiency is not a concern here, as the union type is for debugging, not for production. (LISP_MAKE_RVALUE, make_number) [USE_LISP_UNION_TYPE]: Use an inline function on all platforms when using the union type, since this is simpler and 'static inline' can be used portably within Emacs now. (LISP_INITIALLY_ZERO): New macro. (XFASTINT, XSETFASTINT) [USE_LISP_UNION_TYPE]: Remove. (XSET) [USE_LISP_UNION_TYPE]: Don't overparenthesize.
2012-06-11Don't purify in Fmake_byte_code.Stefan Monnier
* src/alloc.c (make_byte_code): New function. (Fmake_byte_code): Use it. Don't purify here. * src/lread.c (read1): Use it as well to avoid extra allocation.
2012-06-08Fix BLOCK_INPUT/UNBLOCK_INPUT mismatch in ↵Eli Zaretskii
2012-06-08T08:44:30Z!dmantipov@yandex.ru. src/alloc.c (allocate_vectorlike): Fix last change.
2012-06-08Block-based vector allocation of small vectors.Dmitry Antipov
* src/lisp.h (struct vectorlike_header): New field `nbytes', adjust comment accordingly. * src/alloc.c (enum mem_type): New type `MEM_TYPE_VECTOR_BLOCK' to denote vector blocks. Adjust users (live_vector_p, mark_maybe_pointer, valid_lisp_object_p) accordingly. (COMMON_MULTIPLE): Move outside #if USE_LSB_TAG. (VECTOR_BLOCK_SIZE, vroundup, VECTOR_BLOCK_BYTES), (VBLOCK_BYTES_MIN, VBLOCK_BYTES_MAX, VECTOR_MAX_FREE_LIST_INDEX), (VECTOR_FREE_LIST_FLAG, ADVANCE, VINDEX, SETUP_ON_FREE_LIST), (VECTOR_SIZE, VECTOR_IN_BLOCK): New macros. (roundup_size): New constant. (struct vector_block): New data type. (vector_blocks, vector_free_lists, zero_vector): New variables. (all_vectors): Renamed to `large_vectors'. (allocate_vector_from_block, init_vectors, allocate_vector_from_block) (sweep_vectors): New functions. (allocate_vectorlike): Return `zero_vector' as the only vector of 0 items. Allocate new vector from block if vector size is less than or equal to VBLOCK_BYTES_MAX. (Fgarbage_collect): Move all vector sweeping code to sweep_vectors. (init_alloc_once): Add call to init_vectors. * doc/lispref/internals.text (Garbage Collection): Document new vector management code and vectorlike_header structure.
2012-06-02* alloc.c (CONS_BLOCK_SIZE): Account for padding at the end ofAndreas Schwab
cons_block.
2012-05-30* alloc.c, lisp.h (make_pure_vector): Now static.Paul Eggert
2012-05-25Merge from trunk.Paul Eggert
2012-05-22Remove src/m/*.Paul Eggert
* configure.in: Remove all mention of src/m/*. (machine, machfile, M_FILE, config_machfile, and_machfile): Remove. All uses removed. (BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG) (BITS_PER_LONG_LONG): Move to src/lisp.h. * lib/makefile.w32-in: Remove dependencies on $(EMACS_ROOT)/src/m/intel386.h. * make-dist: Don't make links to src/m. * admin/CPP-DEFINES: Do not mention src/m/*.h. (BITS_PER_EMACS_INT, BITS_PER_LONG, BITS_PER_CHAR) (BITS_PER_SHORT, BITS_PER_INT): Remove. * admin/MAINTAINERS: Remove src/m/. * lib-src/makefile.w32-in: Remove dependencies on $(EMACS_ROOT)/src/m/intel386.h. * msdos/mainmake.v2 (TAGS tags): Don't look at $(CURDIR)/src/m/intel386.h. * nt/config.nt: Do not include "m/intel386.h"; file was removed. (BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG): Move to src/lisp.h. (EMACS_INT_MAX): New macro. This directory predates autoconf and is no longer needed nowadays. Move its few remaining bits of functionality to where they're needed. * src/m/README, src/m/alpha.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibmrs6000.h: * src/m/ibms390x.h, src/m/intel386.h, src/m/m68k.h, src/m/macppc.h: * src/m/sparc.h, src/m/template.h: Remove. * src/Makefile.in (M_FILE): Remove. All uses removed. * src/alloc.c (POINTERS_MIGHT_HIDE_IN_OBJECTS): * src/lisp.h (USE_LSB_TAG): * src/mem-limits.h (EXCEEDS_LISP_PTR): Use VAL_MAX, not VALBITS, in #if. * src/lisp.h (EMACS_INT_MAX): New macro, useful in #if. (EMACS_UINT): Define unconditionally now. (BITS_PER_CHAR, BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG) (BITS_PER_EMACS_INT): New constants, replacing what used to be in config.h, but not useful in #if. (GCTYPEBITS, VALBITS): Define unconditionally, since m/* files don't define them any more. (VAL_MAX): New macro. (VALMASK): Use it. * src/puresize.h (PURESIZE_RATIO): Use EMACS_INT_MAX, not BITS_PER_EMACS_INT, in #if. * src/s/aix4-2.h (BROKEN_FIONREAD, BROKEN_SIGAIO, BROKEN_SIGPTY) (BROKEN_SIGPOLL): Move here from m/ibmrs6000.h, which was removed. * src/s/gnu-linux.h (ULIMIT_BREAK_VALUE) [__i386__]: * src/s/ms-w32.h (DATA_START): Move here from removed file m/intel386.h. * src/s/gnu.h (NLIST_STRUCT): Remove undef; 'configure' does this. * src/s/irix6-5.h (_LP64): Remove; lisp.h no longer needs this.
2012-05-21Assume C89 or later.Paul Eggert
* configure.in (AC_C_PROTOTYPES, AC_C_VOLATILE, AC_C_CONST) (POINTER_TYPE, PROTOTYPES): Remove. * admin/CPP-DEFINES: Remove NULL, const. * lib-src/etags.c (static, const): Remove macros. (PTR): Remove; all uses replaced with void *. Omit needless casts. * src/alloc.c, src/buffer.c, lisp.h: Replace POINTER_TYPE with void. * alloc.c (overrun_check_malloc, overrun_check_realloc, xmalloc) (xrealloc): * buffer.c (mmap_free_1, mmap_enlarge): Omit needless casts. * editfns.c, fns.c, gmalloc.c, insdel.c, sysdep.c, termcap.c (NULL): * textprop.c, tparam.c (NULL): Remove. * ralloc.c, vm-limit.c (POINTER): Assume void * works. * regex.c (SIGN_EXTEND_CHAR): Assume signed char works. * regex.h (_RE_ARGS): Remove. All uses rewritten to use prototypes. * unexelf.c (ElfBitsW): Assume c89 preprocessor or better. * xterm.c (input_signal_count): Assume volatile works.
2012-04-22Spelling fixes.Paul Eggert
2012-04-22Fix GC_MALLOC_CHECK debugging output on 64-bit hosts.Paul Eggert
* alloc.c (emacs_blocked_malloc) [GC_MALLOC_CHECK]: Do not assume ptrdiff_t is the same width as 'int'.
2012-04-22* alloc.c: Handle unusual debugging option combinations.Paul Eggert
(GC_CHECK_MARKED_OBJECTS): Undef if ! GC_MARK_STACK, since the two debugging options are incompatible. (GC_MALLOC_CHECK): Similarly, undef if GC_CHECK_MARKED_OBJECTS is defined. (mem_init, mem_insert, mem_insert_fixup): Define if GC_MARK_STACK || GC_MALLOC_CHECK. (NEED_MEM_INSERT): Remove; no longer needed.
2012-04-21Merge from trunk.Paul Eggert
2012-04-15* alloc.c: Remove one incorrect comment and fix another.Paul Eggert
2012-04-15Fix minor alloc.c problems found by static checking.Paul Eggert
* alloc.c (_malloc_internal, _free_internal) [!DOUG_LEA_MALLOC]: New extern decls, to avoid calling undeclared functions. (dont_register_blocks): Define if ((!SYSTEM_MALLOC && !SYNC_INPUT) && GC_MALLOC_CHECK), not if ((GC_MARK_STACK || defined GC_MALLOC_CHECK) && GC_MALLOC_CHECK), to match when it's used. (NEED_MEM_INSERT): New macro. (mem_insert, mem_insert_fixup) [!NEED_MEM_INSERT]: Remove; unused.
2012-04-15* alloc.c (which_symbols): Fix alignment issue / type clash.Paul Eggert
2012-04-15Simplify enforcement of object address alignmentAndreas Schwab
* lisp.h (struct Lisp_Symbol): Remove explicit padding. (struct Lisp_Misc_Any): Likewise. (struct Lisp_Free): Likewise. * alloc.c (union aligned_Lisp_Symbol): Define. (SYMBOL_BLOCK_SIZE, struct symbol_block): Use union aligned_Lisp_Symbol instead of struct Lisp_Symbol. (union aligned_Lisp_Misc): Define. (MARKER_BLOCK_SIZE, struct marker_block): Use union aligned_Lisp_Misc instead of union Lisp_Misc. (Fmake_symbol, allocate_misc, gc_sweep): Adjust
2012-04-10* src/alloc.c (lisp_align_malloc): Remove unneeded prototype.Stefan Monnier
2012-04-09Merge from trunk.Paul Eggert
2012-04-09Remove * characters from the front of variable docstrings.Chong Yidong
2012-04-07Avoid unnecessary pointer scanning in garbage collection (Bug#10780).Paul Eggert
* alloc.c (POINTERS_MIGHT_HIDE_IN_OBJECTS): New macro. (mark_memory): Mark Lisp_Objects only if pointers might hide in objects, as mark_maybe_pointer will catch them otherwise. (GC_LISP_OBJECT_ALIGNMENT): Remove; no longer needed. * s/gnu-linux.h (GC_LISP_OBJECT_ALIGNMENT) [__mc68000__]: Likewise.
2012-03-02lispref/internals.texi Memory Usage tiny changeGlenn Morris
* doc/lispref/internals.texi: (Memory Usage): Copyedit. * src/alloc.c (misc-objects-consed): Doc fix.
2012-03-02lispref/internals.texi Pure Storage updatesGlenn Morris
* doc/lispref/internals.texi: (Pure Storage): Small changes. * src/alloc.c (Fgarbage_collect): Doc fix.