Mercurial > hg > xemacs-beta
view lisp/cus-start.el @ 5170:5ddbab03b0e6
various fixes to memory-usage stats
-------------------- ChangeLog entries follow: --------------------
lisp/ChangeLog addition:
2010-03-25 Ben Wing <ben@xemacs.org>
* diagnose.el (show-memory-usage):
* diagnose.el (show-object-memory-usage-stats):
Further changes to correspond with changes in the C code;
add an additional column in show-object-memory-usage-stats showing
the ancillary Lisp overhead used with each type; shrink columns for
windows in show-memory-usage to get it to fit in 79 chars.
src/ChangeLog addition:
2010-03-25 Ben Wing <ben@xemacs.org>
* alloc.c:
* alloc.c (struct):
* alloc.c (finish_object_memory_usage_stats):
* alloc.c (object_memory_usage_stats):
* alloc.c (Fobject_memory_usage):
* alloc.c (lisp_object_memory_usage_full):
* alloc.c (compute_memusage_stats_length):
* lrecord.h:
* lrecord.h (struct lrecord_implementation):
Add fields to the `lrecord_implementation' structure to list an
offset into the array of extra statistics in a
`struct generic_usage_stats' and a length, listing the first slice
of ancillary Lisp-object memory. Compute automatically in
compute_memusage_stats_length(). Use to add an entry
`FOO-lisp-ancillary-storage' for object type FOO.
Don't crash when an int or char is given to object-memory-usage,
signal an error instead.
Add functions lisp_object_memory_usage_full() and
lisp_object_memory_usage() to compute the total memory usage of an
object (sum of object, non-Lisp attached, and Lisp ancillary
memory).
* array.c:
* array.c (gap_array_memory_usage):
* array.h:
Add function to return memory usage of a gap array.
* buffer.c (struct buffer_stats):
* buffer.c (compute_buffer_usage):
* buffer.c (vars_of_buffer):
* extents.c (compute_buffer_extent_usage):
* marker.c:
* marker.c (compute_buffer_marker_usage):
* extents.h:
* lisp.h:
Remove `struct usage_stats' arg from compute_buffer_marker_usage()
and compute_buffer_extent_usage() -- these are ancillary Lisp
objects and don't get accumulated into `struct usage_stats';
change the value of `memusage_stats_list' so that `markers' and
`extents' memory is in Lisp-ancillary, where it belongs.
In compute_buffer_marker_usage(), use lisp_object_memory_usage()
rather than lisp_object_storage_size().
* casetab.c:
* casetab.c (case_table_memory_usage):
* casetab.c (vars_of_casetab):
* emacs.c (main_1):
Add memory usage stats for case tables.
* lisp.h:
Add comment explaining the `struct generic_usage_stats' more,
as well as the new fields in lrecord_implementation.
* console-impl.h:
* console-impl.h (struct console_methods):
* scrollbar-gtk.c:
* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage):
* scrollbar-msw.c:
* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
* scrollbar-x.c:
* scrollbar-x.c (x_compute_scrollbar_instance_usage):
* scrollbar.c:
* scrollbar.c (struct scrollbar_instance_stats):
* scrollbar.c (compute_all_scrollbar_instance_usage):
* scrollbar.c (scrollbar_instance_memory_usage):
* scrollbar.c (scrollbar_objects_create):
* scrollbar.c (vars_of_scrollbar):
* scrollbar.h:
* symsinit.h:
* window.c:
* window.c (find_window_mirror_maybe):
* window.c (struct window_mirror_stats):
* window.c (compute_window_mirror_usage):
* window.c (window_mirror_memory_usage):
* window.c (compute_window_usage):
* window.c (window_objects_create):
* window.c (syms_of_window):
* window.c (vars_of_window):
Redo memory-usage associated with windows, window mirrors, and
scrollbar instances. Should fix crash in find_window_mirror,
among other things. Properly assign memo ry to object memory,
non-Lisp extra memory, and Lisp ancillary memory. For example,
redisplay structures are non-Lisp memory hanging off a window
mirror, not a window; make it an ancillary Lisp-object field.
Window mirrors and scrollbar instances have their own statistics,
among other things.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 25 Mar 2010 06:07:25 -0500 |
parents | 141c2920ea48 |
children | 308d34e9f07d |
line wrap: on
line source
;;; cus-start.el --- define customization properties of builtins. ;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Maintainer: XEmacs Development Team ;; Keywords: internal, dumped ;; This file is part of XEmacs. ;; XEmacs is free software; you can redistribute it and/or modify it ;; under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; XEmacs is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the Free ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. ;;; Synched up with: Not synched with FSF. ;;; Commentary: ;; This file is dumped with XEmacs. ;; The following code is used to define the customization properties ;; for builtin variables, and variables in the packages that are ;; preloaded /very/ early, before custom.el itself (replace.el is such ;; an example). The way it handles custom stuff is dirty, and should ;; be regarded as a last resort. DO NOT add variables here, unless ;; you know what you are doing. ;; Must be run before the user has changed the value of any options! ;;; Code: (require 'custom) (let ((all '(;; boolean (abbrev-all-caps abbrev boolean) (allow-deletion-of-last-visible-frame frames boolean) (allow-incremental-gc alloc boolean) (debug-on-quit debug boolean) (delete-auto-save-files auto-save boolean) (delete-exited-processes processes-basics boolean) (garbage-collection-messages alloc boolean) (indent-tabs-mode editing-basics boolean) (load-ignore-elc-files maint boolean) (load-ignore-out-of-date-elc-files maint boolean) (load-show-full-path-in-messages maint boolean) (load-always-display-messages maint boolean) (load-warn-when-source-newer maint boolean) (load-warn-when-source-only maint boolean) (modifier-keys-are-sticky keyboard boolean) (no-redraw-on-reenter display boolean) (scroll-on-clipped-lines display boolean) (truncate-partial-width-windows display boolean) (visible-bell sound boolean) (x-allow-sendevents x boolean) (zmacs-regions editing-basics boolean) (load-home-init-file installation boolean) ;; integer (auto-save-interval auto-save integer) (bell-volume sound integer) (bell-inhibit-time sound integer) (echo-keystrokes keyboard integer) (gc-cons-threshold alloc integer) (gc-cons-incremental-threshold alloc integer) (gc-incremental-traversal-threshold alloc integer) (next-screen-context-lines display integer) (scroll-conservatively display integer) (scroll-step windows integer) (window-min-height windows integer) (window-min-width windows integer) ;; object (auto-save-file-format auto-save (choice (const :tag "Normal" t) (repeat (symbol :tag "Format")))) (completion-ignored-extensions minibuffer (repeat (string :format "%v"))) (debug-ignored-errors debug (repeat (choice :format "%v" (symbol :tag "Class") regexp))) (debug-on-error debug (choice (const :tag "off" nil) (const :tag "Always" t) (repeat :menu-tag "When" :value (nil) (symbol :tag "Condition")))) (debug-on-signal debug (choice (const :tag "off" nil) (const :tag "Always" t) (repeat :menu-tag "When" :value (nil) (symbol :tag "Condition")))) (exec-path processes-basics (repeat (choice :tag "Directory" (const :tag "Default" nil) (directory :format "%v")))) (file-name-handler-alist data (repeat (cons regexp (function :tag "Handler")))) (shell-file-name execute file) (stack-trace-on-error debug (choice (const :tag "off" nil) (const :tag "Always" t) (repeat :menu-tag "When" :value (nil) (symbol :tag "Condition")))) (stack-trace-on-signal debug (choice (const :tag "off" nil) (const :tag "Always" t) (repeat :menu-tag "When" :value (nil) (symbol :tag "Condition")))) (modifier-keys-sticky-time keyboard (choice (integer :tag "Milliseconds") (const :tag "Unbounded" 'unbounded))) ;; buffer-local (case-fold-search matching boolean) (ctl-arrow display (choice (integer 160) (sexp :tag "160 (default)" :format "%t\n"))) (fill-column fill integer) (left-margin fill integer) (tab-width editing-basics integer) (truncate-lines display boolean) (overwrite-mode editing-basics ;; for the options menu - dverna (choice (const :tag "disabled" nil) (const :tag "textual" 'overwrite-mode-textual) (const :tag "binary" 'overwrite-mode-binary))) ;; not documented as user-options, but should still be ;; customizable: (bar-cursor display (choice (const :tag "Block Cursor" nil) (const :tag "Bar Cursor (1 pixel)" t) (sexp :tag "Bar Cursor (2 pixels)" :format "%t\n" 'other))) (default-frame-plist frames plist) (default-tty-frame-plist frames plist) (default-x-frame-plist frames plist) (disable-auto-save-when-buffer-shrinks auto-save boolean) (find-file-use-truenames find-file boolean) (find-file-compare-truenames find-file boolean) (focus-follows-mouse x boolean) (help-char keyboard (choice character (sexp :tag "Single key specifier"))) (max-lisp-eval-depth limits integer) (max-specpdl-size limits integer) (meta-prefix-char keyboard character) (parse-sexp-ignore-comments editing-basics boolean) (selective-display display (choice (const :tag "off" nil) (integer :tag "space" :format "%v" 1) (const :tag "on" t))) (selective-display-ellipses display boolean) (signal-error-on-buffer-boundary internal boolean) (temp-buffer-show-function windows (radio (function-item :tag "Temp Buffers Always in Same Frame" :format "%t\n" show-temp-buffer-in-current-frame) (const :tag "Temp Buffers Like Other Buffers" nil) (function :tag "Other"))) (undo-threshold undo integer) (undo-high-threshold undo integer) (words-include-escapes editing-basics boolean) ;; These are from replace.el, which is loaded too early ;; to be customizable. (case-replace matching boolean) (query-replace-highlight matching boolean) (list-matching-lines-default-context-lines matching integer))) this symbol group type) (while all (setq this (car all) all (cdr all) symbol (nth 0 this) group (nth 1 this) type (nth 2 this)) (if (not (boundp symbol)) ;; This is loaded so early, there is no message (if (fboundp 'message) ;; If variables are removed from C code, give an error here! (message "Intrinsic `%S' not bound" symbol)) ;; This is called before any user can have changed the value. (put symbol 'standard-value (list (quote-maybe (default-value symbol)))) ;; Add it to the right group. (custom-add-to-group group symbol 'custom-variable) ;; Set the type. (put symbol 'custom-type type)))) ;; This is to prevent it from being reloaded by `cus-load.el'. (provide 'cus-start) ;;; cus-start.el ends here.