annotate etc/bundled-packages/README @ 5157:1fae11d56ad2

redo memory-usage mechanism, add way of dynamically initializing Lisp objects -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): Rewrite to take into account API changes in memory-usage functions. src/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (disksave_object_finalization_1): * alloc.c (lisp_object_storage_size): * alloc.c (listu): * alloc.c (listn): * alloc.c (Fobject_memory_usage_stats): * alloc.c (compute_memusage_stats_length): * alloc.c (Fobject_memory_usage): * alloc.c (Ftotal_object_memory_usage): * alloc.c (malloced_storage_size): * alloc.c (common_init_alloc_early): * alloc.c (reinit_alloc_objects_early): * alloc.c (reinit_alloc_early): * alloc.c (init_alloc_once_early): * alloc.c (syms_of_alloc): * alloc.c (reinit_vars_of_alloc): * buffer.c: * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_text_usage): * buffer.c (compute_buffer_usage): * buffer.c (buffer_memory_usage): * buffer.c (buffer_objects_create): * buffer.c (syms_of_buffer): * buffer.c (vars_of_buffer): * console-impl.h (struct console_methods): * dynarr.c (Dynarr_memory_usage): * emacs.c (main_1): * events.c (clear_event_resource): * extents.c: * extents.c (compute_buffer_extent_usage): * extents.c (extent_objects_create): * extents.h: * faces.c: * faces.c (compute_face_cachel_usage): * faces.c (face_objects_create): * faces.h: * general-slots.h: * glyphs.c: * glyphs.c (compute_glyph_cachel_usage): * glyphs.c (glyph_objects_create): * glyphs.h: * lisp.h: * lisp.h (struct usage_stats): * lrecord.h: * lrecord.h (enum lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lrecord.h (INIT_LISP_OBJECT): * lrecord.h (INIT_MODULE_LISP_OBJECT): * lrecord.h (UNDEF_LISP_OBJECT): * lrecord.h (UNDEF_MODULE_LISP_OBJECT): * lrecord.h (DECLARE_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (syms_of_lstream): * lstream.c (vars_of_lstream): * marker.c: * marker.c (compute_buffer_marker_usage): * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: * mule-charset.c: * mule-charset.c (struct charset_stats): * mule-charset.c (compute_charset_usage): * mule-charset.c (charset_memory_usage): * mule-charset.c (mule_charset_objects_create): * mule-charset.c (syms_of_mule_charset): * mule-charset.c (vars_of_mule_charset): * redisplay.c: * redisplay.c (compute_rune_dynarr_usage): * redisplay.c (compute_display_block_dynarr_usage): * redisplay.c (compute_glyph_block_dynarr_usage): * redisplay.c (compute_display_line_dynarr_usage): * redisplay.c (compute_line_start_cache_dynarr_usage): * redisplay.h: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c (compute_scrollbar_instance_usage): * scrollbar.h: * symbols.c: * symbols.c (reinit_symbol_objects_early): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symbols.c (defsymbol_massage_name_1): * symsinit.h: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_getprop): * ui-gtk.c (emacs_gtk_object_putprop): * ui-gtk.c (ui_gtk_objects_create): * unicode.c (compute_from_unicode_table_size_1): * unicode.c (compute_to_unicode_table_size_1): * unicode.c (compute_from_unicode_table_size): * unicode.c (compute_to_unicode_table_size): * window.c: * window.c (struct window_stats): * window.c (compute_window_mirror_usage): * window.c (compute_window_usage): * window.c (window_memory_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): * window.h: Redo memory-usage mechanism, make it general; add way of dynamically initializing Lisp object types -- OBJECT_HAS_METHOD(), similar to CONSOLE_HAS_METHOD(). (1) Create OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY() etc. for specifying that a Lisp object type has a particular method or property. Call such methods with OBJECT_METH, MAYBE_OBJECT_METH, OBJECT_METH_OR_GIVEN; retrieve properties with OBJECT_PROPERTY. Methods that formerly required a DEFINE_*GENERAL_LISP_OBJECT() to specify them (getprop, putprop, remprop, plist, disksave) now instead use the dynamic-method mechanism. The main benefit of this is that new methods or properties can be added without requiring that the declaration statements of all existing methods be modified. We have to make the `struct lrecord_implementation' non-const, but I don't think this should have any effect on speed -- the only possible method that's really speed-critical is the mark method, and we already extract those out into a separate (non-const) array for increased cache locality. Object methods need to be reinitialized after pdump, so we put them in separate functions such as face_objects_create(), extent_objects_create() and call them appropriately from emacs.c The only current object property (`memusage_stats_list') that objects can specify is a Lisp object and gets staticpro()ed so it only needs to be set during dump time, but because it references symbols that might not exist in a syms_of_() function, we initialize it in vars_of_(). There is also an object property (`num_extra_memusage_stats') that is automatically initialized based on `memusage_stats_list'; we do that in reinit_vars_of_alloc(), which is called after all vars_of_() functions are called. `disksaver' method was renamed `disksave' to correspond with the name normally given to the function (e.g. disksave_lstream()). (2) Generalize the memory-usage mechanism in `buffer-memory-usage', `window-memory-usage', `charset-memory-usage' into an object-type- specific mechanism called by a single function `object-memory-usage'. (Former function `object-memory-usage' renamed to `total-object-memory-usage'). Generalize the mechanism of different "slices" so that we can have different "classes" of memory described and different "slices" onto each class; `t' separates classes, `nil' separates slices. Currently we have three classes defined: the memory of an object itself, non-Lisp-object memory associated with the object (e.g. arrays or dynarrs stored as fields in the object), and Lisp-object memory associated with the object (other internal Lisp objects stored in the object). This isn't completely finished yet and we might need to further separate the "other internal Lisp objects" class into two classes. The memory-usage mechanism uses a `struct usage_stats' (renamed from `struct overhead_stats') to describe a malloc-view onto a set of allocated memory (listing how much was requested and various types of overhead) and a more general `struct generic_usage_stats' (with a `struct usage_stats' in it) to hold all statistics about object memory. `struct generic_usage_stats' contains an array of 32 Bytecounts, which are statistics of unspecified semantics. The intention is that individual types declare a corresponding struct (e.g. `struct window_stats') with the same structure but with specific fields in place of the array, corresponding to specific statistics. The number of such statistics is an object property computed from the list of tags (Lisp symbols describing the statistics) stored in `memusage_stats_list'. The idea here is to allow particular object types to customize the number and semantics of the statistics where completely avoiding consing. This doesn't matter so much yet, but the intention is to have the memory usage of all objects computed at the end of GC, at the same time as other statistics are currently computed. The values for all statistics for a single type would be added up to compute aggregate values for all objects of a specific type. To make this efficient, we can't allow any memory allocation at all. (3) Create some additional functions for creating lists that specify the elements directly as args rather than indirectly through an array: listn() (number of args given), listu() (list terminated by Qunbound). (4) Delete a bit of remaining unused C window_config stuff, also unused lrecord_type_popup_data.
author Ben Wing <ben@xemacs.org>
date Thu, 18 Mar 2010 10:50:06 -0500
parents 146742e30f05
children fd714e8ba81e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4354
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
1 Package distributions may be placed in this directory.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
2 If present and a package-path is configured, packages can be installed
4361
146742e30f05 Ensure LATE_PACKAGES_DIRECTORIES is a trivial search path.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4354
diff changeset
3 using the top-level Makefile.
4354
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
4
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
5 To configure the package path, use the --with-late-packages option to
4361
146742e30f05 Ensure LATE_PACKAGES_DIRECTORIES is a trivial search path.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4354
diff changeset
6 configure, which specifies a single directory in which to install the
146742e30f05 Ensure LATE_PACKAGES_DIRECTORIES is a trivial search path.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4354
diff changeset
7 xemacs-packages and mule-packages hierarchies provided. If this is null,
146742e30f05 Ensure LATE_PACKAGES_DIRECTORIES is a trivial search path.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4354
diff changeset
8 or contains a Unix-style search path (i.e., a colon is present in the
146742e30f05 Ensure LATE_PACKAGES_DIRECTORIES is a trivial search path.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4354
diff changeset
9 argument of the --with-late-packages option), you will have to install
146742e30f05 Ensure LATE_PACKAGES_DIRECTORIES is a trivial search path.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4354
diff changeset
10 the packages by hand.
4354
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
11
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
12 To find out if a distribution includes bundled packages, type
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
13
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
14 make check-available-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
15
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
16 There are three Make targets that may be available depending on the package
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
17 sets supplied.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
18
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
19 make install-bootstrap-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
20 Install a selected set of packages sufficient to support
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
21 downloading and installing packages via the M-x list-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
22 interface. Chose this if you want to be able to install the
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
23 latest version of each package immediately.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
24
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
25 make install-nomule-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
26 Install the full distribution of packages that do not require a
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
27 Mule-enabled XEmacs. Choose this package if you don't have a
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
28 Mule-enabled XEmacs and want the convenience of a single-command
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
29 installation. You can add or update packages via M-x list-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
30 at any time.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
31
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
32 make install-all-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
33 Install the full distribution of packages, including those requiring
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
34 a Mule-enabled XEmacs. Choose this package if you have a Mule-
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
35 enabled XEmacs and want the convenience of a single-command
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
36 installation. You can add or update packages via M-x list-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
37 at any time.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
38
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
39 DISTRIBUTOR'S NOTE: you may choose what packages you wish to include in
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
40 bootstrap.tar.gz, but to make list-packages work you need to include at
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
41 least xemacs-base, dired, and efs. The tarball should unpack directly as
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
42 an xemacs-packages tree (and optionaly, a mule-packages tree. Also, if
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
43 either of xemacs-sumo.tar.gz or xemacs-mule-sumo.tar.gz is provided, the
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
44 other should be as well.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
45
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
46 If packages are not available with the distribution, you can get them at
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
47
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
48 ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-sumo.tar.gz
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
49 ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-mule-sumo.tar.gz
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
50 http://turnbull.sk.tsukuba.ac.jp/Tools/XEmacs/bootstrap.tar.gz
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
51
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
52 and place them in the same directory as this file. You can also make your
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
53 own bootstrap.tar.gz by creating a directory xemacs-packages, then
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
54 untarring the packages of your choice into that directory, and tarring the
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
55 whole thing up with "tar czf bootstrap.tar.gz xemacs-packages". (If you
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
56 wish to include mule-packages, you should place them in mule-packages as
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
57 a sibling of xemacs-packages.)
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
58
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
59 This facility currently does not support installations which configure
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
60 the --with-early-packages, --with-late-packages, or --with-last-packages
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
61 options.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
62
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
63 This facility currently will not overwrite an existing package
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
64 installation, not even if a whole hierarchy (usually the mule-packages)
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
65 is missing. In particular, you cannot use this feature to add the
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
66 mule-packages to a package installation which lacks them, even if the
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
67 hierarchy is missing, or the xemacs-packages hierarchy was installed
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
68 this way. Nor can you "upgrade" a bootstrap installation to a full
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
69 installation. If you wish to do any of these things you will need to
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
70 remove the existing hierarchies.
232d873b9705 Add support for installing bundled patches.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
diff changeset
71