comparison src/ChangeLog @ 853:2b6fa2618f76

[xemacs-hg @ 2002-05-28 08:44:22 by ben] merge my stderr-proc ws make-docfile.c: Fix places where we forget to check for EOF. code-init.el: Don't use CRLF conversion by default on process output. CMD.EXE and friends work both ways but Cygwin programs don't like the CRs. code-process.el, multicast.el, process.el: Removed. Improvements to call-process-internal: -- allows a buffer to be specified for input and stderr output -- use it on all systems -- implement C-g as documented -- clean up and comment call-process-region uses new call-process facilities; no temp file. remove duplicate funs in process.el. comment exactly how coding systems work and fix various problems. open-multicast-group now does similar coding-system frobbing to open-network-stream. dumped-lisp.el, faces.el, msw-faces.el: Fix some hidden errors due to code not being defined at the right time. xemacs.mak: Add -DSTRICT. ================================================================ ALLOW SEPARATION OF STDOUT AND STDERR IN PROCESSES ================================================================ Standard output and standard error can be processed separately in a process. Each can have its own buffer, its own mark in that buffer, and its filter function. You can specify a separate buffer for stderr in `start-process' to get things started, or use the new primitives: set-process-stderr-buffer process-stderr-buffer process-stderr-mark set-process-stderr-filter process-stderr-filter Also, process-send-region takes a 4th optional arg, a buffer. Currently always uses a pipe() under Unix to read the error output. (#### Would a PTY be better?) sysdep.h, sysproc.h, unexfreebsd.c, unexsunos4.c, nt.c, emacs.c, callproc.c, symsinit.h, sysdep.c, Makefile.in.in, process-unix.c: Delete callproc.c. Move child_setup() to process-unix.c. wait_for_termination() now only needed on a few really old systems. console-msw.h, event-Xt.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.h, process-nt.c, process-unix.c, process.c, process.h, procimpl.h: Rewrite the process methods to handle a separate channel for error input. Create Lstreams for reading in the error channel. Many process methods need change. In general the changes are fairly clear as they involve duplicating what's used for reading the normal stdout and changing for stderr -- although tedious, as such changes are required throughout the entire process code. Rewrote the code that reads process output to do two loops, one for stdout and one for stderr. gpmevent.c, tooltalk.c: set_process_filter takes an argument for stderr. ================================================================ NEW ERROR-TRAPPING MECHANISM ================================================================ Totally rewrite error trapping code to be unified and support more features. Basic function is call_trapping_problems(), which lets you specify, by means of flags, what sorts of problems you want trapped. these can include -- quit -- errors -- throws past the function -- creation of "display objects" (e.g. buffers) -- deletion of already-existing "display objects" (e.g. buffers) -- modification of already-existing buffers -- entering the debugger -- gc -- errors->warnings (ala suspended errors) etc. All other error funs rewritten in terms of this one. Various older mechanisms removed or rewritten. window.c, insdel.c, console.c, buffer.c, device.c, frame.c: When creating a display object, added call to note_object_created(), for use with trapping_problems mechanism. When deleting, call check_allowed_operation() and note_object deleted(). The trapping-problems code records the objects created since the call-trapping-problems began. Those objects can be deleted, but none others (i.e. previously existing ones). bytecode.c, cmdloop.c: internal_catch takes another arg. eval.c: Add long comments describing the "five lists" used to maintain state (backtrace, gcpro, specbind, etc.) in the Lisp engine. backtrace.h, eval.c: Implement trapping-problems mechanism, eliminate old mechanisms or redo in terms of new one. frame.c, gutter.c: Flush out the concept of "critical display section", defined by the in_display() var. Use an internal_bind() to get it reset, rather than just doing it at end, because there may be a non-local exit. event-msw.c, event-stream.c, console-msw.h, device.c, dialog-msw.c, frame.c, frame.h, intl.c, toolbar.c, menubar-msw.c, redisplay.c, alloc.c, menubar-x.c: Make use of new trapping-errors stuff and rewrite code based on old mechanisms. glyphs-widget.c, redisplay.h: Protect calling Lisp in redisplay. insdel.c: Protect hooks against deleting existing buffers. frame-msw.c: Use EQ, not EQUAL in hash tables whose keys are just numbers. Otherwise we run into stickiness in redisplay because internal_equal() can QUIT. ================================================================ SIGNAL, C-G CHANGES ================================================================ Here we change the way that C-g interacts with event reading. The idea is that a C-g occurring while we're reading a user event should be read as C-g, but elsewhere should be a QUIT. The former code did all sorts of bizarreness -- requiring that no QUIT occurs anywhere in event-reading code (impossible to enforce given the stuff called or Lisp code invoked), and having some weird system involving enqueue/dequeue of a C-g and interaction with Vquit_flag -- and it didn't work. Now, we simply enclose all code where we want C-g read as an event with {begin/end}_dont_check_for_quit(). This completely turns off the mechanism that checks (and may remove or alter) C-g in the read-ahead queues, so we just get the C-g normal. Signal.c documents this very carefully. cmdloop.c: Correct use of dont_check_for_quit to new scheme, remove old out-of-date comments. event-stream.c: Fix C-g handling to actually work. device-x.c: Disable quit checking when err out. signal.c: Cleanup. Add large descriptive comment. process-unix.c, process-nt.c, sysdep.c: Use QUIT instead of REALLY_QUIT. It's not necessary to use REALLY_QUIT and just confuses the issue. lisp.h: Comment quit handlers. ================================================================ CONS CHANGES ================================================================ free_cons() now takes a Lisp_Object not the result of XCONS(). car and cdr have been renamed so that they don't get used directly; go through XCAR(), XCDR() instead. alloc.c, dired.c, editfns.c, emodules.c, fns.c, glyphs-msw.c, glyphs-x.c, glyphs.c, keymap.c, minibuf.c, search.c, eval.c, lread.c, lisp.h: Correct free_cons calling convention: now takes Lisp_Object, not Lisp_Cons chartab.c: Eliminate direct use of ->car, ->cdr, should be black box. callint.c: Rewrote using EXTERNAL_LIST_LOOP to avoid use of Lisp_Cons. ================================================================ USE INTERNAL-BIND-* ================================================================ eval.c: Cleanups of these funs. alloc.c, fileio.c, undo.c, specifier.c, text.c, profile.c, lread.c, redisplay.c, menubar-x.c, macros.c: Rewrote to use internal_bind_int() and internal_bind_lisp_object() in place of whatever varied and cumbersome mechanisms were formerly there. ================================================================ SPECBIND SANITY ================================================================ backtrace.h: - Improved comments backtrace.h, bytecode.c, eval.c: Add new mechanism check_specbind_stack_sanity() for sanity checking code each time the catchlist or specbind stack change. Removed older prototype of same mechanism. ================================================================ MISC ================================================================ lisp.h, insdel.c, window.c, device.c, console.c, buffer.c: Fleshed out authorship. device-msw.c: Correct bad Unicode-ization. print.c: Be more careful when not initialized or in fatal error handling. search.c: Eliminate running_asynch_code, an FSF holdover. alloc.c: Added comments about gc-cons-threshold. dialog-x.c: Use begin_gc_forbidden() around code to build up a widget value tree, like in menubar-x.c. gui.c: Use Qunbound not Qnil as the default for gethash. lisp-disunion.h, lisp-union.h: Added warnings on use of VOID_TO_LISP(). lisp.h: Use ERROR_CHECK_STRUCTURES to turn on ERROR_CHECK_TRAPPING_PROBLEMS and ERROR_CHECK_TYPECHECK lisp.h: Add assert_with_message. lisp.h: Add macros for gcproing entire arrays. (You could do this before but it required manual twiddling the gcpro structure.) lisp.h: Add prototypes for new functions defined elsewhere.
author ben
date Tue, 28 May 2002 08:45:36 +0000
parents e7ee5f8bde58
children 1d8fb2eee1bb
comparison
equal deleted inserted replaced
852:d83885ef293b 853:2b6fa2618f76
1 2002-05-28 Ben Wing <ben@xemacs.org>
2
3 ================================================================
4 ALLOW SEPARATION OF STDOUT AND STDERR IN PROCESSES
5 ================================================================
6
7 Standard output and standard error can be processed separately in
8 a process. Each can have its own buffer, its own mark in that buffer,
9 and its filter function. You can specify a separate buffer for stderr
10 in `start-process' to get things started, or use the new primitives:
11
12 set-process-stderr-buffer
13 process-stderr-buffer
14 process-stderr-mark
15 set-process-stderr-filter
16 process-stderr-filter
17
18 Also, process-send-region takes a 4th optional arg, a buffer.
19
20 Currently always uses a pipe() under Unix to read the error output.
21 (#### Would a PTY be better?)
22
23 * sysdep.h:
24 * sysproc.h:
25 * unexfreebsd.c (unexec):
26 * unexsunos4.c (unexec):
27 * nt.c (init_user_info):
28 * emacs.c:
29 * emacs.c (main_1):
30 * callproc.c:
31 * symsinit.h:
32 * sysdep.c:
33 * sysdep.c (wait_for_termination):
34 * Makefile.in.in (objs):
35 * process-unix.c (child_setup):
36 Delete callproc.c. Move child_setup() to process-unix.c.
37 wait_for_termination() now only needed on a few really old systems.
38
39 * console-msw.h:
40 * event-Xt.c (emacs_Xt_select_process):
41 * event-Xt.c (emacs_Xt_unselect_process):
42 * event-Xt.c (emacs_Xt_create_io_streams):
43 * event-Xt.c (emacs_Xt_delete_io_streams):
44 * event-Xt.c (debug_process_finalization):
45 * event-Xt.c (reinit_vars_of_event_Xt):
46 * event-msw.c (get_process_stderr_waitable):
47 * event-msw.c (emacs_mswindows_select_process):
48 * event-msw.c (emacs_mswindows_unselect_process):
49 * event-msw.c (emacs_mswindows_create_io_streams):
50 * event-msw.c (emacs_mswindows_delete_io_streams):
51 * event-msw.c (debug_process_finalization):
52 * event-msw.c (reinit_vars_of_event_mswindows):
53 * event-msw.c (vars_of_event_mswindows):
54 * event-msw.c (lstream_type_create_mswindows_selectable):
55 * event-stream.c (event_stream_select_process):
56 * event-stream.c (event_stream_unselect_process):
57 * event-stream.c (event_stream_create_io_streams):
58 * event-stream.c (event_stream_delete_io_streams):
59 * event-stream.c (Faccept_process_output):
60 * event-tty.c (emacs_tty_select_process):
61 * event-tty.c (emacs_tty_unselect_process):
62 * event-tty.c (emacs_tty_create_io_streams):
63 * event-tty.c (emacs_tty_delete_io_streams):
64 * event-tty.c (reinit_vars_of_event_tty):
65 * event-unixoid.c:
66 * event-unixoid.c (get_process_infd):
67 * event-unixoid.c (get_process_errfd):
68 * event-unixoid.c (event_stream_unixoid_select_process):
69 * event-unixoid.c (event_stream_unixoid_unselect_process):
70 * event-unixoid.c (event_stream_unixoid_create_io_streams):
71 * event-unixoid.c (event_stream_unixoid_delete_io_streams):
72 * events.h:
73 * events.h (struct event_stream):
74 * process-nt.c:
75 * process-nt.c (struct nt_process_data):
76 * process-nt.c (nt_create_process):
77 * process-nt.c (get_internet_address):
78 * process-nt.c (nt_open_network_stream):
79 * process-unix.c:
80 * process-unix.c (struct unix_process_data):
81 * process-unix.c (UNIX_DATA):
82 * process-unix.c (close_process_descs_mapfun):
83 * process-unix.c (close_process_descs):
84 * process-unix.c (connect_to_file_descriptor):
85 * process-unix.c (process_signal_char):
86 * process-unix.c (unix_alloc_process_data):
87 * process-unix.c (unix_init_process_io_handles):
88 * process-unix.c (unix_create_process):
89 * process-unix.c (io_failure): Removed.
90 * process-unix.c (unix_tooltalk_connection_p):
91 * process-unix.c (unix_set_window_size):
92 * process-unix.c (unix_reap_exited_processes):
93 * process-unix.c (unix_deactivate_process):
94 * process-unix.c (unix_kill_child_process):
95 * process.c:
96 * process.c (mark_process):
97 * process.c (get_process_streams):
98 * process.c (get_process_from_usid):
99 * process.c (get_process_selected_p):
100 * process.c (set_process_selected_p):
101 * process.c (make_process_internal):
102 * process.c (init_process_io_handles):
103 * process.c (create_process):
104 * process.c (Fstart_process_internal):
105 * process.c (Fopen_multicast_group_internal):
106 * process.c (process_setup_for_insertion):
107 * process.c (read_process_output):
108 * process.c (Fset_process_stderr_buffer):
109 * process.c (Fprocess_stderr_mark):
110 * process.c (set_process_filter):
111 * process.c (Fset_process_filter):
112 * process.c (Fset_process_stderr_filter):
113 * process.c (Fprocess_stderr_filter):
114 * process.c (exec_sentinel_unwind):
115 * process.c (exec_sentinel):
116 * process.c (status_notify):
117 * process.c (Fprocess_send_eof):
118 * process.c (deactivate_process):
119 * process.c (syms_of_process):
120 * process.c (vars_of_process):
121 * process.h:
122 * procimpl.h:
123 * procimpl.h (struct process_methods):
124 * procimpl.h (struct Lisp_Process):
125 * procimpl.h (DATA_ERRSTREAM):
126 Rewrite the process methods to handle a separate channel for
127 error input. Create Lstreams for reading in the error channel.
128 Many process methods need change. In general the changes are
129 fairly clear as they involve duplicating what's used for reading
130 the normal stdout and changing for stderr -- although tedious,
131 as such changes are required throughout the entire process code.
132 Rewrote the code that reads process output to do two loops, one
133 for stdout and one for stderr.
134
135 * gpmevent.c (get_process_infd):
136 * gpmevent.c (Fgpm_enable):
137 * tooltalk.c:
138 * tooltalk.c (init_tooltalk):
139 set_process_filter takes an argument for stderr.
140
141 ================================================================
142 NEW ERROR-TRAPPING MECHANISM
143 ================================================================
144
145 Totally rewrite error trapping code to be unified and support more
146 features. Basic function is call_trapping_problems(), which lets
147 you specify, by means of flags, what sorts of problems you want
148 trapped. these can include
149
150 -- quit
151 -- errors
152 -- throws past the function
153 -- creation of "display objects" (e.g. buffers)
154 -- deletion of already-existing "display objects" (e.g. buffers)
155 -- modification of already-existing buffers
156 -- entering the debugger
157 -- gc
158 -- errors->warnings (ala suspended errors)
159
160 etc. All other error funs rewritten in terms of this one.
161 Various older mechanisms removed or rewritten.
162
163 * window.c (mark_window_as_deleted):
164 * window.c (Fdelete_window):
165 * window.c (Fset_window_configuration):
166 * insdel.c (prepare_to_modify_buffer):
167 * insdel.c (buffer_insert_string_1):
168 * console.c (create_console):
169 * buffer.c (finish_init_buffer):
170 * device.c (allocate_device):
171 * device.c (Fmake_device):
172 * frame.c:
173 * frame.c (Fmake_frame):
174 * frame.c (allocate_frame_core):
175 * frame.c (setup_normal_frame):
176 * frame.c (delete_frame_internal):
177 * window.c (Fsplit_window):
178 * device.c (delete_device_internal):
179 * console.c (delete_console_internal):
180 * buffer.c (Fkill_buffer):
181 When creating a display object, added call to
182 note_object_created(), for use with trapping_problems mechanism.
183 When deleting, call check_allowed_operation() and note_object
184 deleted().
185
186 The trapping-problems code records the objects created since the
187 call-trapping-problems began. Those objects can be deleted, but
188 none others (i.e. previously existing ones).
189
190 * bytecode.c (execute_rare_opcode):
191 * cmdloop.c:
192 * cmdloop.c (initial_command_loop):
193 * cmdloop.c (Frecursive_edit):
194 * cmdloop.c (call_command_loop):
195 internal_catch takes another arg.
196
197 * eval.c:
198 Add long comments describing the "five lists" used to maintain
199 state (backtrace, gcpro, specbind, etc.) in the Lisp engine.
200
201 * backtrace.h:
202 * eval.c (current_warning_level):
203 * eval.c (call_debugger):
204 * eval.c (signal_call_debugger):
205 * eval.c (Fwhen):
206 * eval.c (Fcatch):
207 * eval.c (internal_catch):
208 * eval.c (unwind_to_catch):
209 * eval.c (throw_or_bomb_out):
210 * eval.c (condition_bind_unwind):
211 * eval.c (condition_case_1):
212 * eval.c (Fcall_with_condition_handler):
213 * eval.c (call_with_condition_handler):
214 * eval.c (Fsignal):
215 * eval.c (check_catchlist_sanity):
216 * eval.c (check_specbind_stack_sanity):
217 * eval.c (signal_quit):
218 * eval.c (Feval):
219 * eval.c (run_hook_list_with_args):
220 * eval.c (run_hook):
221 * eval.c (get_inhibit_flags):
222 * eval.c (check_allowed_operation):
223 * eval.c (note_object_created):
224 * eval.c (note_object_deleted):
225 * eval.c (struct call_trapping_problems):
226 * eval.c (flagged_a_squirmer):
227 * eval.c (call_trapping_problems_2):
228 * eval.c (call_trapping_problems_1):
229 * eval.c (call_trapping_problems):
230 * eval.c (struct va_call_trapping_problems):
231 * eval.c (va_call_trapping_problems_1):
232 * eval.c (va_call_trapping_problems):
233 * eval.c (call_with_suspended_errors):
234 * eval.c (struct calln_trapping_problems):
235 * eval.c (calln_trapping_problems_1):
236 * eval.c (calln_trapping_problems):
237 * eval.c (call1_trapping_problems):
238 * eval.c (call2_trapping_problems):
239 * eval.c (call3_trapping_problems):
240 * eval.c (call4_trapping_problems):
241 * eval.c (call5_trapping_problems):
242 * eval.c (eval_in_buffer_trapping_problems_1):
243 * eval.c (eval_in_buffer_trapping_problems):
244 * eval.c (run_hook_trapping_problems):
245 * eval.c (safe_run_hook_trapping_problems_1):
246 * eval.c (safe_run_hook_trapping_problems):
247 * eval.c (struct run_hook_with_args_in_buffer_trapping_problems):
248 * eval.c (run_hook_with_args_in_buffer_trapping_problems_1):
249 * eval.c (run_hook_with_args_in_buffer_trapping_problems):
250 * eval.c (va_run_hook_with_args_trapping_problems):
251 * eval.c (va_run_hook_with_args_in_buffer_trapping_problems):
252 * eval.c (reinit_vars_of_eval):
253 * eval.c (vars_of_eval):
254 Implement trapping-problems mechanism, eliminate old mechanisms or
255 redo in terms of new one.
256
257 * frame.c (enter_redisplay_critical_section):
258 * frame.c (exit_redisplay_critical_section):
259 * gutter.c (redraw_exposed_gutters):
260 * gutter.c (Fset_default_gutter_position):
261 * gutter.c (Fredisplay_gutter_area):
262 Flush out the concept of "critical display section", defined by
263 the in_display() var. Use an internal_bind() to get it reset,
264 rather than just doing it at end, because there may be a non-local
265 exit.
266
267 * event-msw.c (struct mswindows_protect_modal_loop):
268 * event-msw.c (mswindows_protect_modal_loop_1):
269 * event-msw.c (mswindows_protect_modal_loop):
270 * event-msw.c (mswindows_unmodalize_signal_maybe):
271 * event-msw.c (mswindows_pump_outstanding_events):
272 * event-msw.c (mswindows_need_event):
273 * event-msw.c (mswindows_dde_callback):
274 * event-msw.c (mswindows_wnd_proc):
275 * event-msw.c:
276 * event-msw.c (vars_of_event_mswindows):
277 * event-msw.c (struct ntpipe_slurp_stream_shared_data):
278 * event-msw.c (struct ntpipe_shove_stream):
279 * event-stream.c (pre_command_hook):
280 * event-stream.c (post_command_hook):
281 * event-stream.c (vars_of_event_stream):
282 * event-stream.c (run_pre_idle_hook):
283 * console-msw.h:
284 * device.c (call_critical_lisp_code): Rewrite.
285 * dialog-msw.c (dialog_proc):
286 * frame.c (adjust_frame_size):
287 * frame.h:
288 * intl.c (init_intl):
289 * toolbar.c (Fset_default_toolbar_position):
290 * toolbar.c (update_toolbar_button):
291 * menubar-msw.c (unsafe_handle_wm_initmenu_1):
292 * menubar-msw.c (mswindows_handle_wm_initmenupopup):
293 * menubar-msw.c (mswindows_handle_wm_initmenu):
294 * redisplay.c:
295 * redisplay.c (call_redisplay_end_triggers):
296 * redisplay.c (redisplay_frame):
297 * redisplay.c (redisplay_no_pre_idle_hook):
298 * redisplay.c (eval_within_redisplay):
299 * redisplay.c (Fredisplay_echo_area):
300 * alloc.c (garbage_collect_1):
301 * menubar-x.c:
302 * menubar-x.c (menu_item_descriptor_to_widget_value_1):
303 * menubar-x.c (struct menu_item_descriptor_to_widget_value):
304 * menubar-x.c (protected_menu_item_descriptor_to_widget_value_1):
305 * menubar-x.c (protected_menu_item_descriptor_to_widget_value):
306 * menubar-x.c (pre_activate_callback):
307 Make use of new trapping-errors stuff and rewrite code based on
308 old mechanisms.
309
310 * glyphs-widget.c (widget_query_geometry):
311 * glyphs-widget.c (layout_query_geometry):
312 * redisplay.h:
313 Protect calling Lisp in redisplay.
314
315 * insdel.c (signal_first_change):
316 * insdel.c (signal_before_change):
317 * insdel.c (signal_after_change):
318 Protect hooks against deleting existing buffers.
319
320 * frame-msw.c (mswindows_init_frame_1):
321 Use EQ, not EQUAL in hash tables whose keys are just numbers.
322 Otherwise we run into stickiness in redisplay because
323 internal_equal() can QUIT.
324
325 ================================================================
326 SIGNAL, C-G CHANGES
327 ================================================================
328
329 Here we change the way that C-g interacts with event reading. The
330 idea is that a C-g occurring while we're reading a user event
331 should be read as C-g, but elsewhere should be a QUIT. The former
332 code did all sorts of bizarreness -- requiring that no QUIT occurs
333 anywhere in event-reading code (impossible to enforce given the
334 stuff called or Lisp code invoked), and having some weird system
335 involving enqueue/dequeue of a C-g and interaction with Vquit_flag
336 -- and it didn't work.
337
338 Now, we simply enclose all code where we want C-g read as an event
339 with {begin/end}_dont_check_for_quit(). This completely turns off
340 the mechanism that checks (and may remove or alter) C-g in the
341 read-ahead queues, so we just get the C-g normal.
342
343 Signal.c documents this very carefully.
344
345 * cmdloop.c (Fcommand_loop_1):
346 Correct use of dont_check_for_quit to new scheme, remove old
347 out-of-date comments.
348
349 * event-stream.c (maybe_echo_keys):
350 * event-stream.c (enqueue_command_event_1):
351 * event-stream.c (next_event_internal):
352 * event-stream.c (Fnext_event):
353 * event-stream.c (Fnext_command_event):
354 * event-stream.c (Fdispatch_non_command_events):
355 * event-stream.c (Fdiscard_input):
356 * event-stream.c (Fsleep_for):
357 * event-stream.c (Fsit_for):
358 * event-stream.c (wait_delaying_user_input):
359 * event-stream.c (execute_internal_event):
360 * event-stream.c (lookup_command_event):
361 * event-stream.c (Fread_key_sequence):
362 * event-stream.c:
363 * event-stream.c (event_stream_next_event):
364 Fix C-g handling to actually work.
365
366 * device-x.c (get_device_from_display):
367 * device-x.c (x_error_handler):
368 * device-x.c (x_IO_error_handler):
369 Disable quit checking when err out.
370
371 * signal.c:
372 * signal.c (handle_async_timeout_signal):
373 * signal.c (check_what_happened):
374 * signal.c (begin_dont_check_for_quit):
375 * signal.c (check_quit):
376 Cleanup. Add large descriptive comment.
377
378 * process-unix.c (unix_open_network_stream):
379 * process-unix.c (unix_open_multicast_group):
380 * process-nt.c (nt_open_network_stream):
381 * sysdep.c (retry_read_1):
382 * sysdep.c (retry_write_1):
383 Use QUIT instead of REALLY_QUIT.
384 It's not necessary to use REALLY_QUIT and just confuses the issue.
385
386 * lisp.h (INTERNAL_QUITP): Comment quit handlers.
387
388 ================================================================
389 CONS CHANGES
390 ================================================================
391
392 free_cons() now takes a Lisp_Object not the result of XCONS().
393 car and cdr have been renamed so that they don't get used directly;
394 go through XCAR(), XCDR() instead.
395
396 * alloc.c (Fcons):
397 * alloc.c (free_cons):
398 * alloc.c (free_list):
399 * alloc.c (free_alist):
400 * dired.c (file_name_completion_unwind):
401 * dired.c (user_name_completion_unwind):
402 * editfns.c (save_excursion_save):
403 * editfns.c (save_excursion_restore):
404 * editfns.c (save_restriction_restore):
405 * emodules.c (module_load_unwind):
406 * fns.c:
407 * fns.c (delq_no_quit_and_free_cons):
408 * fns.c (merge_pred_function):
409 * fns.c (tweaked_internal_equal):
410 * glyphs-msw.c (extract_xpm_color_names):
411 * glyphs-x.c (extract_xpm_color_names):
412 * glyphs.c (image_instantiate_cache_result):
413 * glyphs.c (image_instance_changed):
414 * keymap.c (traverse_keymaps):
415 * minibuf.c (read_minibuffer_internal_unwind):
416 * search.c (free_created_dynarrs):
417 * eval.c (specbind_unwind_local):
418 * lread.c (various):
419 * lisp.h (struct Lisp_Cons):
420 * lisp.h (cons_car):
421 Correct free_cons calling convention: now takes Lisp_Object,
422 not Lisp_Cons
423
424 * chartab.c (word_boundary_p):
425 Eliminate direct use of ->car, ->cdr, should be black box.
426
427
428 * callint.c (quotify_args):
429 Rewrote using EXTERNAL_LIST_LOOP to avoid use of Lisp_Cons.
430
431 ================================================================
432 USE INTERNAL-BIND-*
433 ================================================================
434
435 * eval.c (restore_lisp_object):
436 * eval.c (restore_int):
437 Cleanups of these funs.
438
439 * alloc.c (begin_gc_forbidden):
440 * fileio.c:
441 * fileio.c (close_file_unwind):
442 * fileio.c (Fdo_auto_save):
443 * undo.c:
444 * undo.c (Fprimitive_undo):
445 * specifier.c:
446 * specifier.c (unlock_ghost_specifiers_protected):
447 * specifier.c (set_specifier_caching):
448 * text.c (dfc_convert_to_external_format):
449 * text.c (dfc_convert_to_internal_format):
450 * profile.c (struct get_profiling_info_closure):
451 * profile.c (Fget_profiling_info):
452 * lread.c:
453 * lread.c (load_unwind):
454 * lread.c (Fload_internal):
455 * lread.c (read0):
456 * lread.c (read1):
457 * lread.c (read_list_conser):
458 * lread.c (read_vector):
459 * lread.c (read_compiled_function):
460 * redisplay.c (Fredraw_frame):
461 * redisplay.c (Fredisplay_frame):
462 * redisplay.c (Fredraw_device):
463 * redisplay.c (Note): New.
464 * redisplay.c (Fredisplay_device):
465 * redisplay.c (redisplay_without_hooks):
466 * menubar-x.c (pre_activate_callback):
467 * macros.c (Fexecute_kbd_macro):
468 Rewrote to use internal_bind_int() and internal_bind_lisp_object()
469 in place of whatever varied and cumbersome mechanisms were
470 formerly there.
471
472
473 ================================================================
474 SPECBIND SANITY
475 ================================================================
476
477 * backtrace.h:
478 - Improved comments
479
480 * backtrace.h (SPECBIND):
481 * backtrace.h (SPECBIND_FAST_UNSAFE):
482 * backtrace.h (UNBIND_TO_GCPRO):
483 * backtrace.h (UNBIND_TO):
484 * backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
485 * bytecode.c (execute_optimized_program):
486 * eval.c (grow_specpdl):
487 * eval.c (specbind):
488 * eval.c (specbind_magic):
489 * eval.c (record_unwind_protect):
490 * eval.c (unbind_to_1):
491 * eval.c (unbind_to_hairy):
492 Add new mechanism check_specbind_stack_sanity() for sanity
493 checking code each time the catchlist or specbind stack change.
494 Removed older prototype of same mechanism.
495
496 ================================================================
497 MISC
498 ================================================================
499
500 * lisp.h:
501 * insdel.c:
502 * window.c:
503 * device.c:
504 * console.c:
505 * buffer.c:
506 Fleshed out authorship.
507
508 * device-msw.c (mswindows_handle_page_setup_dialog_box):
509 Correct bad Unicode-ization.
510
511 * print.c (debug_print_no_newline):
512 * print.c (debug_backtrace):
513 Be more careful when not initialized or in fatal error handling.
514
515 * search.c (looking_at_1):
516 * search.c (string_match_1):
517 * search.c (search_buffer):
518 * search.c (Fstore_match_data):
519 Eliminate running_asynch_code, an FSF holdover.
520
521 * alloc.c (vars_of_alloc):
522 * alloc.c:
523 Added comments about gc-cons-threshold.
524
525 * dialog-x.c:
526 * dialog-x.c (dbox_descriptor_to_widget_value):
527 Use begin_gc_forbidden() around code to build up a widget value
528 tree, like in menubar-x.c.
529
530 * gui.c (gui_item_id_hash): Use Qunbound not Qnil as the default for
531 gethash.
532
533 * lisp-disunion.h:
534 * lisp-union.h:
535 Added warnings on use of VOID_TO_LISP().
536
537 * lisp.h:
538 Use ERROR_CHECK_STRUCTURES to turn on
539 ERROR_CHECK_TRAPPING_PROBLEMS and ERROR_CHECK_TYPECHECK
540
541 * lisp.h (assert_with_message):
542 Add assert_with_message.
543
544 * lisp.h (GCPRO1_ARRAY):
545 * lisp.h (NGCPRO1_ARRAY):
546 * lisp.h (NNGCPRO1_ARRAY):
547 Add macros for gcproing entire arrays. (You could do this before
548 but it required manual twiddling the gcpro structure.)
549
550 * lisp.h:
551 Add prototypes for new functions defined elsewhere.
552
1 2002-05-23 Ben Wing <ben@xemacs.org> 553 2002-05-23 Ben Wing <ben@xemacs.org>
2 554
3 * Makefile.in.in (objs): 555 * Makefile.in.in (objs):
4 * Makefile.in.in (Emacs.ad.h): 556 * Makefile.in.in (Emacs.ad.h):
5 * Makefile.in.in (alloca.o): Removed. 557 * Makefile.in.in (alloca.o): Removed.
1608 console-tty.c and see how it gets the coding system; maybe there's 2160 console-tty.c and see how it gets the coding system; maybe there's
1609 a way to change it (and if not, there should be!). 2161 a way to change it (and if not, there should be!).
1610 2162
1611 Also fix warning in sysdep.c. 2163 Also fix warning in sysdep.c.
1612 2164
1613 2002-03-31 Ben Wing <ben@xemacs.org> 2165 2002-03-31 Ben Wing <ben@xemacs.org>
1614 2166
1615 * alloc.c: 2167 * alloc.c:
1616 * alloc.c (INCREMENT_CONS_COUNTER): 2168 * alloc.c (INCREMENT_CONS_COUNTER):
1617 * alloc.c (xmalloc): 2169 * alloc.c (xmalloc):
1618 * alloc.c (xcalloc): 2170 * alloc.c (xcalloc):