view man/lispref/maps.texi @ 5169:6c6d78781d59

cleanup of code related to xfree(), better KKCC backtrace capabilities, document XD_INLINE_LISP_OBJECT_BLOCK_PTR, fix some memory leaks, other code cleanup -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-03-24 Ben Wing <ben@xemacs.org> * array.h: * array.h (XD_LISP_DYNARR_DESC): * dumper.c (pdump_register_sub): * dumper.c (pdump_store_new_pointer_offsets): * dumper.c (pdump_reloc_one_mc): * elhash.c: * gc.c (lispdesc_one_description_line_size): * gc.c (kkcc_marking): * lrecord.h: * lrecord.h (IF_NEW_GC): * lrecord.h (enum memory_description_type): * lrecord.h (enum data_description_entry_flags): * lrecord.h (struct opaque_convert_functions): Rename XD_LISP_OBJECT_BLOCK_PTR to XD_INLINE_LISP_OBJECT_BLOCK_PTR and document it in lrecord.h. * data.c: * data.c (finish_marking_weak_lists): * data.c (continue_marking_ephemerons): * data.c (finish_marking_ephemerons): * elhash.c (MARK_OBJ): * gc.c: * gc.c (lispdesc_indirect_count_1): * gc.c (struct): * gc.c (kkcc_bt_push): * gc.c (kkcc_gc_stack_push): * gc.c (kkcc_gc_stack_push_lisp_object): * gc.c (kkcc_gc_stack_repush_dirty_object): * gc.c (KKCC_DO_CHECK_FREE): * gc.c (mark_object_maybe_checking_free): * gc.c (mark_struct_contents): * gc.c (mark_lisp_object_block_contents): * gc.c (register_for_finalization): * gc.c (mark_object): * gc.h: * lisp.h: * profile.c: * profile.c (mark_profiling_info_maphash): Clean up KKCC code related to DEBUG_XEMACS. Rename kkcc_backtrace() to kkcc_backtrace_1() and add two params: a `size' arg to control how many stack elements to print and a `detailed' arg to control whether Lisp objects are printed using `debug_print()'. Create front-ends to kkcc_backtrace_1() -- kkcc_detailed_backtrace(), kkcc_short_backtrace(), kkcc_detailed_backtrace_full(), kkcc_short_backtrace_full(), as well as shortened versions kbt(), kbts(), kbtf(), kbtsf() -- to call it with various parameter values. Add an `is_lisp' field to the stack and backtrace structures and use it to keep track of whether an object pushed onto the stack is a Lisp object or a non-Lisp structure; in kkcc_backtrace_1(), don't try to print a non-Lisp structure as a Lisp object. * elhash.c: * extents.c: * file-coding.c: * lrecord.h: * lrecord.h (IF_NEW_GC): * marker.c: * marker.c (Fmarker_buffer): * mule-coding.c: * number.c: * rangetab.c: * specifier.c: New macros IF_OLD_GC(), IF_NEW_GC() to simplify declaration of Lisp objects when a finalizer may exist in one but not the other. Use them appropriately. * extents.c (finalize_extent_info): Don't zero out data->soe and data->extents before trying to free, else we get memory leaks. * lrecord.h (enum lrecord_type): Make the first lrecord type have value 1 not 0 so that 0 remains without implementation and attempts to interpret zeroed memory as a Lisp object will be more obvious. * array.c (Dynarr_free): * device-msw.c (msprinter_delete_device): * device-tty.c (free_tty_device_struct): * device-tty.c (tty_delete_device): * dialog-msw.c (handle_directory_dialog_box): * dialog-x.c: * emacs.c (free_argc_argv): * emodules.c (attempt_module_delete): * file-coding.c (chain_finalize_coding_stream_1): * file-coding.c (chain_finalize_coding_stream): * glyphs-eimage.c: * glyphs-eimage.c (jpeg_instantiate_unwind): * glyphs-eimage.c (gif_instantiate_unwind): * glyphs-eimage.c (png_instantiate_unwind): * glyphs-eimage.c (tiff_instantiate_unwind): * imgproc.c: * imgproc.c (build_EImage_quantable): * insdel.c (uninit_buffer_text): * mule-coding.c (iso2022_finalize_detection_state): * objects-tty.c (tty_finalize_color_instance): * objects-tty.c (tty_finalize_font_instance): * objects-tty.c (tty_font_list): * process.c: * process.c (finalize_process): * redisplay.c (add_propagation_runes): * scrollbar-gtk.c: * scrollbar-gtk.c (gtk_free_scrollbar_instance): * scrollbar-gtk.c (gtk_release_scrollbar_instance): * scrollbar-msw.c: * scrollbar-msw.c (mswindows_free_scrollbar_instance): * scrollbar-msw.c (unshow_that_mofo): * scrollbar-x.c (x_free_scrollbar_instance): * scrollbar-x.c (x_release_scrollbar_instance): * select-x.c: * select-x.c (x_handle_selection_request): * syntax.c: * syntax.c (uninit_buffer_syntax_cache): * text.h (eifree): If possible, whenever we call xfree() on a field in a structure, set the field to 0 afterwards. A lot of code is written so that it checks the value being freed to see if it is non-zero before freeing it -- doing this and setting the value to 0 afterwards ensures (a) we won't try to free twice if the cleanup code is called twice; (b) if the object itself stays around, KKCC won't crash when attempting to mark the freed field. * rangetab.c: Add a finalization method when not NEW_GC to avoid memory leaks. (#### We still get memory leaks when NEW_GC; need to convert gap array to Lisp object).
author Ben Wing <ben@xemacs.org>
date Wed, 24 Mar 2010 01:22:51 -0500
parents 576fb035e263
children
line wrap: on
line source

@c -*-texinfo-*-
@c This is part of the XEmacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
@c See the file lispref.texi for copying conditions.
@setfilename ../../info/maps.info
@node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
@appendix Standard Keymaps

The following symbols are used as the names for various keymaps.
Some of these exist when XEmacs is first started, others are
loaded only when their respective mode is used.  This is not
an exhaustive list.

Almost all of these maps are used as local maps.  Indeed, of the modes
that presently exist, only Vip mode and Terminal mode ever change the
global keymap.

@table @code
@item bookmark-map
@vindex bookmark-map
A keymap containing bindings to bookmark functions.

@item Buffer-menu-mode-map
@vindex Buffer-menu-mode-map
A keymap used by Buffer Menu mode.

@item c++-mode-map
@vindex c++-mode-map
A keymap used by C++ mode.

@item c-mode-map
@vindex c-mode-map
A keymap used by C mode.
A sparse keymap used by C mode.

@item command-history-map
@vindex command-history-map
A keymap used by Command History mode.

@item ctl-x-4-map
@vindex ctl-x-4-map
A keymap for subcommands of the prefix @kbd{C-x 4}.

@item ctl-x-5-map
@vindex ctl-x-5-map
A keymap for subcommands of the prefix @kbd{C-x 5}.

@item ctl-x-map
@vindex ctl-x-map
A keymap for @kbd{C-x} commands.

@item debugger-mode-map
@vindex debugger-mode-map
A keymap used by Debugger mode.

@item dired-mode-map
@vindex dired-mode-map
A keymap for @code{dired-mode} buffers.

@item edit-abbrevs-map
@vindex edit-abbrevs-map
A keymap used in @code{edit-abbrevs}.

@item edit-tab-stops-map
@vindex edit-tab-stops-map
A keymap used in @code{edit-tab-stops}.

@item electric-buffer-menu-mode-map
@vindex electric-buffer-menu-mode-map
A keymap used by Electric Buffer Menu mode.

@item electric-history-map
@vindex electric-history-map
A keymap used by Electric Command History mode.

@item emacs-lisp-mode-map
@vindex emacs-lisp-mode-map
A keymap used by Emacs Lisp mode.

@item help-map
@vindex help-map
A keymap for characters following the Help key.

@item Helper-help-map
@vindex Helper-help-map
A keymap used by the help utility package.@*
It has the same keymap in its value cell and in its function
cell.

@item Info-edit-map
@vindex Info-edit-map
A keymap used by the @kbd{e} command of Info.

@item Info-mode-map
@vindex Info-mode-map
A keymap containing Info commands.

@item isearch-mode-map
@vindex isearch-mode-map
A keymap that defines the characters you can type within incremental
search.

@item itimer-edit-map
@vindex itimer-edit-map
A keymap used when in Itimer Edit mode.

@item lisp-interaction-mode-map
@vindex lisp-interaction-mode-map
A keymap used by Lisp mode.

@item lisp-mode-map
@vindex lisp-mode-map
A keymap used by Lisp mode.

@vindex minibuffer-local-completion-map
A keymap for minibuffer input with completion.

@item minibuffer-local-isearch-map
@vindex minibuffer-local-isearch-map
A keymap for editing isearch strings in the minibuffer.

@item minibuffer-local-map
@vindex minibuffer-local-map
Default keymap to use when reading from the minibuffer.

@item minibuffer-local-must-match-map
@vindex minibuffer-local-must-match-map
A keymap for minibuffer input with completion, for exact match.

@item mode-specific-map
@vindex mode-specific-map
The keymap for characters following @kbd{C-c}.  Note, this is in the
global map.  This map is not actually mode specific: its name was chosen
to be informative for the user in @kbd{C-h b} (@code{display-bindings}),
where it describes the main use of the @kbd{C-c} prefix key.

@item modeline-map
@vindex modeline-map
The keymap consulted for mouse-clicks on the modeline of a window.

@item objc-mode-map
@vindex objc-mode-map
A keymap used in Objective C mode as a local map.

@item occur-mode-map
@vindex occur-mode-map
A local keymap used by Occur mode.

@item overriding-local-map
@vindex overriding-local-map
A keymap that overrides all other local keymaps.

@item query-replace-map
@vindex query-replace-map
A local keymap used for responses in @code{query-replace} and related
commands; also for @code{y-or-n-p} and @code{map-y-or-n-p}.  The functions
that use this map do not support prefix keys; they look up one event at a
time.

@item read-expression-map
@vindex read-expression-map
The minibuffer keymap used for reading Lisp expressions.

@item read-shell-command-map
@vindex read-shell-command-map
The minibuffer keymap used by @code{shell-command} and related commands.

@item shared-lisp-mode-map
@vindex shared-lisp-mode-map
A keymap for commands shared by all sorts of Lisp modes.

@item text-mode-map
@vindex text-mode-map
A keymap used by Text mode.

@item toolbar-map
@vindex toolbar-map
The keymap consulted for mouse-clicks over a toolbar.

@item view-mode-map
@vindex view-mode-map
A keymap used by View mode.
@end table