annotate src/README.kkcc @ 992:964f33d24564

[xemacs-hg @ 2002-09-03 10:51:55 by michaels] Belated addition to the KKCC commit---I had forgotten this file.
author michaels
date Tue, 03 Sep 2002 10:51:55 +0000
parents
children e22b0213b713
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
992
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
1 2002-07-17 Marcus Crestani <crestani@informatik.uni-tuebingen.de>
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
2 Markus Kaltenbach <makalten@informatik.uni-tuebingen.de>
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
3 Mike Sperber <mike@xemacs.org>
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
4
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
5 New KKCC-GC mark algorithm:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
6 configure flag : --use-kkcc
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
7
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
8 For better understanding, first a few words about the mark algorithm
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
9 up to now:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
10 Every Lisp_Object has its own mark method, which calls mark_object
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
11 with the stuff to be marked.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
12 Also, many Lisp_Objects have pdump descriptions, which are used by
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
13 the portable dumper. The dumper gets all the information it needs
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
14 about the Lisp_Object from the descriptions.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
15
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
16 Also the garbage collector can use the information in the pdump
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
17 descriptions, so we can get rid of the mark methods.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
18 That is what we have been doing.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
19
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
20
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
21 DUMPABLE FLAG
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
22 -------------
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
23 First we added a dumpable flag to lrecord_implementation. It shows,
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
24 if the object is dumpable and should be processed by the dumper.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
25 The dumpable flag is the third argument of a lrecord_implementation
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
26 definition (DEFINE_LRECORD_IMPLEMENTATION).
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
27 If it is set to 1, the dumper processes the descriptions and dumps
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
28 the Object, if it is set to 0, the dumper does not care about it.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
29
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
30
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
31 XD_UNION
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
32 --------
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
33 We implemented XD_UNION support in (mark_with_description), so
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
34 we can describe exspecially console/device specific data with XD_UNION.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
35 To describe with XD_UNION, we added a field to these objects, which
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
36 holds the variant type of the object. This field is initialized in
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
37 the appendant constructor. The variant is an integer, it has also to
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
38 be described in an description, if XD_UNION is used.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
39
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
40 Here is a pattern of a XD_UNION usage:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
41
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
42 First, the existing variants are listed.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
43 enum example_variant
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
44 {
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
45 first_choice,
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
46 second_choice
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
47 };
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
48
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
49 Then a field which holds the variant is added to the Lisp_Object.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
50 This field determines, where pointer points to.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
51 struct Lisp_...
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
52 {
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
53 enum example_variant which_variant;
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
54 ...
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
55 void *pointer;
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
56 }
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
57 The variant field must be initialized in the constructor(s).
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
58
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
59 In the description, the first entry should be the which_variant field,
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
60 on which XD_UNION refers.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
61 static const struct lrecord_description ..._description [] = {
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
62 { XD_INT, offsetof (struct Lisp_..., which_variant) },
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
63 ...
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
64 { XD_UNION, offsetof (struct Lisp_..., which_variant),
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
65 XD_INDIRECT (0, 0), variant_description },
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
66 ...
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
67 };
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
68
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
69 The variant_description looks like this:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
70 static const struct struct_description variant_description []= {
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
71 { first_choice, first_choice_description},
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
72 { second_choice, second_choice__description},
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
73 { XD_END }
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
74 };
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
75
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
76 first- and second_choice_description are common lrecord_descriptions:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
77 static const struct lrecord_description first_choice_description [] = {
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
78 ...
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
79 { XD_END }
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
80 }
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
81
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
82
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
83
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
84 TODO
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
85 ----
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
86
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
87 The following objects have currently no description:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
88 * alloc.c: lcrecord_list
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
89 mark_object is never called, marking is done per mane.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
90
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
91 * buffer.c: mark_buffer
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
92 mark_conses_in_list implements weakness???
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
93
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
94 * extents.c: extent_info
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
95 loop to mark elements in list.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
96
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
97 * frame.c: frame
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
98 calls mark_gutters, that calls mark_redisplay_structs
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
99
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
100 * glyphs.c: image_instance
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
101 XD_UNION or convert the union members to Lisp_Objects (see Lisp_Event)
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
102
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
103 * gui-x.c: popup_data
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
104 calls lw_map_widget_values
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
105
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
106 * window.c: window
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
107 calls mark_face_cachels and mark_glyph_cachels
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
108
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
109 window_configuration
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
110 loop to mark saved_windows
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
111
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
112 window_mirror
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
113 calls mark_redisplay_structs
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
114
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
115 * lstream.c: lstream
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
116
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
117
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
118 After all Lisp_Objects have pdump descriptions,
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
119 (mark_with_description) can get rid of the mark_object calls.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
120
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
121
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
122 There are a few Lisp_Objects, where there occured differences and
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
123 inexactness between the mark-method and the pdump description.
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
124 All these Lisp_Objects get dumped, so their descriptions have been
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
125 written, before we started our work:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
126
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
127 * alloc.c: cons
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
128 description: car and cdr
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
129 mark: cdr is marked, only if its != Qnil
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
130
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
131 * alloc.c: string
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
132 description:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
133 mark:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
134
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
135 * elhash.c: hash_table
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
136 description: the weakness receives no consideration
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
137 mark: weakness == HASH_TABLE_NON_WEAK
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
138
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
139 * eval.c: subr
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
140 description: XD_DOC_STRING doc
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
141 mark: empty, nothing is marked
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
142
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
143 * file-coding.c: coding_system
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
144 description:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
145 mark:
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
146
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
147 * frame.c: bit_vektor
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
148 description: XD_LISP_OBJECT next
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
149 mark: empty, nothing is marked
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
150
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
151 * marker.c: marker
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
152 description: prev & next (marker's chain)
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
153 mark: do not mark through marker's chain!
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
154
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
155 * specifier.c: specifier
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
156 description: XD_STRUCT_PTR caching
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
157 mark: caching is not marked
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
158
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
159 * symbols.c: symbol-value-lisp-magic
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
160 description: only handler[] is described
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
161 mark: even harg[] and shadowed are marked
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
162
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
163 * data.c: ephemeron
964f33d24564 [xemacs-hg @ 2002-09-03 10:51:55 by michaels]
michaels
parents:
diff changeset
164 description: everything is marked, there is no weakness!