comparison src/ChangeLog @ 3092:141c2920ea48

[xemacs-hg @ 2005-11-25 01:41:31 by crestani] Incremental Garbage Collector
author crestani
date Fri, 25 Nov 2005 01:42:08 +0000
parents dbd2a866e38a
children ad2f4ae9895b
comparison
equal deleted inserted replaced
3091:c22d8984148c 3092:141c2920ea48
1 2005-11-21 Marcus Crestani <crestani@xemacs.org>
2
3 Incremental Garbage Collector
4
5 * .cvsignore: Add .dbxrc and .gdbinit.
6
7 * .dbxrc: Remove.
8 * .dbxrc.in: New, used to generate .dbxrc: If newgc is enabled, do
9 not break on SIGBUS and SIGSEGV.
10 * .gdbinit: Remove.
11 * .gdbinit: New, used to generate .gdbinit: If newgc is enabled,
12 do not break on SIGBUS and SIGSEGV.
13
14 * Makefile.in.in: Add gc.c, newgc_objs and vdb_objs.
15
16 * alloc.c: Move the GC related code to gc.c: marking, gc hooks,
17 garbage_collect_1, GC related Lisp functions and variables. Left
18 in alloc.c are the allocation functions, the definition of
19 lrecords, the sweep functions of the old garbage collector, and
20 root-set code like staticpro and mcpro. Remove
21 lrecord_string_data_stats.
22 * alloc.c (DECREMENT_CONS_COUNTER): Remove call to
23 recompute_need_to_garbage_collect.
24 * alloc.c (init_lrecord_stats): Remove additionally allocated
25 memory statistics, i.e. statistics for string data.
26 * alloc.c (alloc_lrecord_array): New.
27 * alloc.c (free_lrecord): Do not explicitly free during gc. Add
28 recompute_need_to_garbage_collect.
29 * alloc.c (make_compiled_function): Field arguments is now a Lisp
30 object, thus init it to Qnil rather than NULL.
31 * alloc.c (struct string_chars_block):
32 * alloc.c (finalize_string):
33 * alloc.c (struct string_chars):
34 * alloc.c (make_uninit_string):
35 * alloc.c (resize_string):
36 * alloc.c (make_string_nocopy):
37 String data is now a Lisp object. Remove code that handled string
38 data specially.
39 * alloc.c (init_lrecord_stats): Remove lrecord_string_data_stats.
40 * alloc.c (common_init_alloc_early):
41 * alloc.c (init_alloc_once_early):
42 * alloc.c (syms_of_alloc):
43 * alloc.c (vars_of_alloc):
44 * alloc.c (complex_vars_of_alloc):
45 Move init code to gc.c's inizializers.
46
47 * buffer.c:
48 * buffer.c (syms_of_buffer):
49 * buffer.h:
50 * buffer.h (struct buffer_text): Add new Lisp object: buffer_text.
51
52 * bytecode.c:
53 * bytecode.c (make_compiled_function_args):
54 * bytecode.c (optimize_compiled_function):
55 * bytecode.c (mark_compiled_function):
56 * bytecode.c (finalize_compiled_function):
57 * bytecode.c (syms_of_bytecode):
58 * bytecode.h:
59 * bytecode.h (struct compiled_function_args):
60 * bytecode.h (struct Lisp_Compiled_Function): Add new Lisp object:
61 compiled_function_args.
62
63 * config.h.in: Add NEW_GC symbol, add VDB_* symbols, and symbols
64 for functions and structs checked for vdb.
65
66 * console-gtk-impl.h:
67 * console-gtk-impl.h (struct gtk_device):
68 * console-gtk-impl.h (struct gtk_frame):
69 * console-msw-impl.h:
70 * console-msw-impl.h (struct mswindows_device):
71 * console-msw-impl.h (struct msprinter_device):
72 * console-msw-impl.h (struct mswindows_frame):
73 * console-stream-impl.h:
74 * console-stream-impl.h (struct stream_console):
75 * console-stream.c:
76 * console-stream.c (stream_init_console):
77 * console-stream.c (stream_delete_console):
78 * console-stream.h:
79 * console-tty-impl.h:
80 * console-tty-impl.h (struct tty_console):
81 * console-tty-impl.h (struct tty_device):
82 * console-tty.c:
83 * console-tty.c (allocate_tty_console_struct):
84 * console-tty.c (free_tty_console_struct):
85 * console-x-impl.h:
86 * console-x-impl.h (struct x_device):
87 * console-x-impl.h (struct x_frame):
88 * console.c:
89 * console.c (syms_of_console): Add new Lisp objects: tty_console,
90 stream_consle.
91
92 * device-gtk.c:
93 * device-gtk.c (allocate_gtk_device_struct):
94 * device-gtk.c (free_gtk_device_struct):
95 * device-gtk.c (syms_of_device_gtk):
96 * device-msw.c:
97 * device-msw.c (mswindows_init_device):
98 * device-msw.c (mswindows_delete_device):
99 * device-msw.c (msprinter_init_device):
100 * device-msw.c (msprinter_delete_device):
101 * device-msw.c (syms_of_device_mswindows):
102 * device-tty.c:
103 * device-tty.c (free_tty_device_struct):
104 * device-tty.c (syms_of_device_tty):
105 * device-x.c:
106 * device-x.c (allocate_x_device_struct):
107 * device-x.c (free_x_device_struct):
108 * device-x.c (syms_of_device_x):
109 * device.c: Add new Lisp objects: x_device, gtk_device,
110 tty_device, mswindows_device, msprinter_device.
111
112 * dumper.c:
113 * dumper.c (pdump_register_sub): Add XD_LISP_OBJECT_PTR.
114 * dumper.c (pdump_register_object_array): New.
115 * dumper.c (pdump_store_new_pointer_offsets): Add XD_LISP_OBJECT_PTR.
116 * dumper.c (pdump_scan_lisp_objects_by_alignment): Remove assert,
117 XD_LISP_OBJECT_PTR may occur as arrays.
118 * dumper.c (pdump_reloc_one_mc): Add XD_LISP_OBJECT_PTR.
119 * dumper.c (pdump_dump_rtables): Dump arrays.
120 * dumper.c (pdump_load_finish): Store and restore state of
121 allow_incremental_gc. Remove lrecord_string_data_stats.
122
123 * dynarr.c:
124 * dynarr.c (Dynarr_lisp_newf): Special case dynamic Lisp array.
125 * dynarr.c (Dynarr_resize): Special case dynamic Lisp array.
126 * dynarr.c (Dynarr_free): Add dynamic Lisp array.
127
128 * elhash.c:
129 * elhash.c (htentry):
130 * elhash.c (make_general_lisp_hash_table):
131 * elhash.c (Fcopy_hash_table):
132 * elhash.c (resize_hash_table):
133 * elhash.c (pdump_reorganize_hash_table):
134 * elhash.c (init_elhash_once_early):
135 * elhash.h: Add new Lisp object: hash_table_entry. Make
136 hash_table_entries Lisp objects.
137
138 * emacs.c (main_1): Install platform's vdb signal handler, add GC
139 init, add syms of GC and vdb, .
140 * emacs.c: Replace garbage_collect_1 calls with gc_full calls.
141 * emacs.c (fatal_error_signal): With vdb enabled, convert SIGSEGV
142 and SIGBUS to SIGABRT.
143
144 * eval.c (Fsignal): Incremental GC may always run, changes are
145 caught by the write barrier.
146 * eval.c (handle_compiled_function_with_and_rest):
147 * eval.c (funcall_compiled_function):
148 * eval.c (Feval): Invoke incremental GC if need to GC.
149 * eval.c (Ffuncall): Invoke incremental GC if need to GC.
150 * eval.c (run_hook_with_args_in_buffer): Add new Lisp object:
151 compiled_function_args.
152
153 * event-msw.c (mswindows_wnd_proc): Incremental GC may always run,
154 changes are caught by the write barrier.
155 * events.c (reinit_vars_of_events): Vevent_resource now
156 collectible, staticpro it.
157
158 * extents.c:
159 * extents.c (gap_array_marker):
160 * extents.c (gap_array):
161 * extents.c (extent_list_marker):
162 * extents.c (extent_list):
163 * extents.c (stack_of_extents):
164 * extents.c (gap_array_make_gap):
165 * extents.c (gap_array_make_marker):
166 * extents.c (gap_array_delete_marker):
167 * extents.c (gap_array_delete_all_markers):
168 * extents.c (make_gap_array):
169 * extents.c (free_gap_array):
170 * extents.c (extent_list_insert):
171 * extents.c (extent_list_make_marker):
172 * extents.c (extent_list_delete_marker):
173 * extents.c (allocate_extent_list):
174 * extents.c (free_extent_list):
175 * extents.c (finalize_extent_info):
176 * extents.c (flush_cached_extent_info):
177 * extents.c (uninit_buffer_extents):
178 * extents.c (allocate_soe):
179 * extents.c (free_soe):
180 * extents.c (syms_of_extents):
181 * extents.h: Add new Lisp object: gap_array_marker, gap_array,
182 extent_list_marker, extent_list, and stack_of_extents.
183
184 * faces.h:
185 * faces.h (struct face_cachel): Add new Lisp object: face cachel.
186
187 * frame-gtk.c:
188 * frame-gtk.c (allocate_gtk_frame_struct):
189 * frame-gtk.c (gtk_delete_frame):
190 * frame-gtk.c (syms_of_frame_gtk):
191 * frame-msw.c:
192 * frame-msw.c (mswindows_init_frame_1):
193 * frame-msw.c (mswindows_delete_frame):
194 * frame-msw.c (syms_of_frame_mswindows):
195 * frame-x.c:
196 * frame-x.c (allocate_x_frame_struct):
197 * frame-x.c (x_delete_frame):
198 * frame-x.c (syms_of_frame_x):
199 * frame.c:
200 * frame.c (change_frame_size):
201 * frame.c (syms_of_frame): Add new Lisp object: gtk_console,
202 mswindows_console, and x_console.
203
204 * glyphs.c (struct expose_ignore_blocktype):
205 * glyphs.c (check_for_ignored_expose):
206 * glyphs.c (register_ignored_expose):
207 * glyphs.c (reinit_vars_of_glyphs):
208 * glyphs.h:
209 * glyphs.h (struct glyph_cachel):
210 * glyphs.h (struct expose_ignore): Add new Lisp object:
211 glyph_cachel and expose_ignore.
212
213 * lisp.h: Move dynamic array definition down after lrecord
214 inclusion. Add dynamic lisp array macros. Add direct and
215 indirect string data. Add string accessors. Remove
216 lrecord_string_data_stats.
217 * lisp.h (struct Lisp_String_Direct_Data): New.
218 * lisp.h (struct Lisp_String_Indirect_Data): New.
219 * lisp.h (struct Lisp_String): Add indirect flag and Lisp object
220 data.
221
222 * lrecord.h: Remove lrecord_type numbering.
223 * lrecord.h (enum lrecord_type): Add new Lisp objects.
224 * lrecord.h (MC_ALLOC_CALL_FINALIZER): Add GC statistics.
225 * lrecord.h (enum memory_description_type): Add
226 XD_LISP_OBJECT_BLOCK_PTR.
227 * lrecord.h (XD_LISP_DYNARR_DESC): New.
228 * lrecord.h (alloc_lrecord_array): New.
229
230 * mc-alloc.c:
231 * mc-alloc.c (MIN_HEAP_INCREASE):
232 * mc-alloc.c (free_link):
233 * mc-alloc.c (page_header):
234 * mc-alloc.c (FREE_HEAP_PAGES):
235 * mc-alloc.c (PH_BLACK_BIT):
236 * mc-alloc.c (get_mark_bit_index):
237 * mc-alloc.c (add_pages_to_lookup_table):
238 * mc-alloc.c (alloc_bit_array):
239 * mc-alloc.c (get_bit):
240 * mc-alloc.c (set_bit):
241 * mc-alloc.c (USE_PNTR_MARK_BITS):
242 * mc-alloc.c (GET_BIT_WORD):
243 * mc-alloc.c (SET_BIT_WORD):
244 * mc-alloc.c (ZERO_MARK_BITS_PNTR):
245 * mc-alloc.c (alloc_mark_bits):
246 * mc-alloc.c (free_mark_bits):
247 * mc-alloc.c (set_mark_bit):
248 * mc-alloc.c (alloc_page_header):
249 * mc-alloc.c (free_page_header):
250 * mc-alloc.c (get_used_list_index):
251 * mc-alloc.c (get_free_list_index):
252 * mc-alloc.c (install_cell_free_list):
253 * mc-alloc.c (install_page_in_used_list):
254 * mc-alloc.c (remove_page_from_used_list):
255 * mc-alloc.c (allocate_new_page):
256 * mc-alloc.c (mc_alloc_1):
257 * mc-alloc.c (mc_alloc_array):
258 * mc-alloc.c (mc_alloc):
259 * mc-alloc.c (mark_free_list):
260 * mc-alloc.c (finalize_page):
261 * mc-alloc.c (finalize_page_for_disksave):
262 * mc-alloc.c (sweep_page):
263 * mc-alloc.c (mc_free):
264 * mc-alloc.c (mc_realloc_1):
265 * mc-alloc.c (mc_realloc_array):
266 * mc-alloc.c (init_mc_allocator):
267 * mc-alloc.c (Fmc_alloc_memory_usage):
268 * mc-alloc.c (maybe_mark_black):
269 * mc-alloc.h: Add incremental garbage collector support, various
270 cleanups.
271
272 * objects-tty-impl.h:
273 * objects-tty-impl.h (struct tty_color_instance_data):
274 * objects-tty-impl.h (struct tty_font_instance_data):
275 * objects-tty.c:
276 * objects-tty.c (tty_initialize_color_instance):
277 * objects-tty.c (tty_finalize_color_instance):
278 * objects-tty.c (tty_initialize_font_instance):
279 * objects-tty.c (tty_finalize_font_instance):
280 * objects-tty.c (syms_of_objects_tty):
281 * objects.c: New Lisp objects: color_instance_data and
282 font_instance_data.
283
284 * print.c (print_internal): New Lisp object: string_data.
285
286 * specifier.c:
287 * specifier.c (finalize_specifier):
288 * specifier.c (set_specifier_caching):
289 * specifier.c (syms_of_specifier):
290 * specifier.h:
291 * specifier.h (struct specifier_caching): New Lisp object:
292 specifier caching.
293
294 * syntax.c:
295 * syntax.c (init_buffer_syntax_cache):
296 * syntax.c (uninit_buffer_syntax_cache):
297 * syntax.c (syms_of_syntax):
298 * syntax.h:
299 * syntax.h (struct syntax_cache): New Lisp object: syntax_cache.
300
301 * window.c:
302 * window.c (allocate_window):
303 * window.c (make_dummy_parent):
304 * window.c (syms_of_window): New Lisp objects: face_cachel,
305 fache_cachel_dynarr, glyph_cachel, and glyph_cachel_dynarr.
306
307
308 New files:
309 * gc.c: Moved code from alloc.c. Split up garbage_collect_1 in a
310 couple of smaller functions.
311 * gc.h: Incremental Garbage Collector
312
313 * vdb-fake.c: Virtual dirty bit fake implementation.
314 * vdb-mach.c: Virtual dirty bit implementation for Mach systems.
315 * vdb-posix.c: Virtual dirty bit implementation for POSIX systems.
316 * vdb-win32.c: Virtual dirty bit implementation for Win32 systems.
317
318 * vdb.c:
319 * vdb.h: Platform independent virtual dirty bit implementation.
320
321
322 Remove files:
323 * .dbxrc:
324 * .gdbinit: Now generated by configure script.
325
1 2005-11-22 Malcolm Purvis <malcolmp@xemacs.org> 326 2005-11-22 Malcolm Purvis <malcolmp@xemacs.org>
2 327
3 * frame-gtk.c (gtk_internal_frame_property_p): 328 * frame-gtk.c (gtk_internal_frame_property_p):
4 * glyphs-gtk.c (image_instance_convert_to_pointer): 329 * glyphs-gtk.c (image_instance_convert_to_pointer):
5 * glyphs-gtk.c (gtk_xpm_instantiate): 330 * glyphs-gtk.c (gtk_xpm_instantiate):