diff options
| author | Mattias EngdegÄrd | 2022-02-12 16:05:17 +0100 |
|---|---|---|
| committer | Mattias EngdegÄrd | 2022-02-12 18:00:21 +0100 |
| commit | a8245e122075175df2f124b20e9e5b1b583eff89 (patch) | |
| tree | 4e7c180a785879d056149013c2933b62445f1361 /src/buffer.c | |
| parent | be06b40ebdd6cfbd23558ce210a8a7ad2b4c7a40 (diff) | |
| download | emacs-a8245e122075175df2f124b20e9e5b1b583eff89.tar.gz emacs-a8245e122075175df2f124b20e9e5b1b583eff89.zip | |
Replace ptrdiff_t with new specpdl_ref type for specpdl references
The specpdl_ref type is just an alias for ptrdiff_t; the compiled code
remains the same. All operations on specpdl_ref (arithmetic,
comparison etc) now go through inline functions.
The bulk of the change is almost completely mechanical. It is done to
prepare for a type-safe representation and subsequent performance
improvement.
* src/lisp.h (specpdl_ref, specpdl_count_to_ref, specpdl_ref_to_count)
(specpdl_ref_eq, specpdl_ref_lt, specpdl_ref_valid_p)
(make_invalid_specpdl_ref, specpdl_ref_add, specpdl_ref_to_ptr): New.
(SPECPDL_INDEX, struct handler, USE_SAFE_ALLOCA, safe_free)
(safe_free_unbind_to):
* src/alloc.c (run_finalizer_function, inhibit_garbage_collection)
(garbage_collect, Fgarbage_collect, which_symbols):
* src/bidi.c (bidi_at_paragraph_end, bidi_find_paragraph_start):
* src/buffer.c (Fkill_buffer, Fset_buffer_major_mode, Fmove_overlay)
(Fdelete_overlay):
* src/bytecode.c (exec_byte_code):
* src/callint.c (Ffuncall_interactively, Fcall_interactively):
* src/callproc.c (Fcall_process, call_process, create_temp_file)
(Fcall_process_region):
* src/charset.c (load_charset_map_from_file):
* src/coding.c (decode_coding_gap, decode_coding_object)
(encode_coding_object, Fread_coding_system):
* src/comp.c (emit_static_object, helper_unbind_n, load_comp_unit):
* src/composite.c (update_compositions, autocmp_chars):
* src/cygw32.c (conv_filename_to_w32_unicode)
(conv_filename_from_w32_unicode):
* src/data.c (notify_variable_watchers):
* src/decompress.c (Fzlib_decompress_region):
* src/dired.c (directory_files_internal, file_name_completion)
(file_attributes):
* src/dispnew.c (Fredisplay):
* src/doc.c (get_doc_string, Fsnarf_documentation):
* src/editfns.c (Fsave_excursion, Fsave_current_buffer)
(Freplace_buffer_contents, Fsubst_char_in_region, Fsave_restriction)
(styled_format):
* src/emacs-module.c (Fmodule_load, funcall_module):
* src/emacs.c (init_cmdargs, Fdump_emacs):
* src/eval.c (call_debugger, do_debug_on_call, FletX, Flet)
(Ffuncall_with_delayed_message, Funwind_protect)
(internal_lisp_condition_case, signal_or_quit)
(load_with_autoload_queue, Feval, grow_specpdl_allocation)
(record_in_backtrace, eval_sub, Ffuncall, apply_lambda)
(funcall_lambda, clear_unwind_protect, set_unwind_protect)
(set_unwind_protect_ptr, unbind_to, Fbacktrace_eval):
* src/fileio.c (Fmake_temp_file_internal, Fcopy_file, Frename_file)
(Finsert_file_contents, write_region, Fdo_auto_save):
* src/fns.c (Fyes_or_no_p, Frequire, hash_table_user_defined_call):
* src/fringe.c (update_window_fringes):
* src/gtkutil.c (xg_dialog_run):
* src/haiku_io.c (c_specpdl_idx_from_cxx):
* src/haiku_support.cc (be_popup_file_dialog):
* src/haiku_support.h (c_specpdl_idx_from_cxx):
* src/haikufns.c (haiku_create_frame, haiku_create_tip_frame)
(haiku_hide_tip, Fx_show_tip, Fhaiku_read_file_name):
* src/haikumenu.c (haiku_popup_dialog, set_frame_menubar):
* src/image.c (slurp_file):
* src/indent.c (line_number_display_width, Fvertical_motion):
* src/insdel.c (signal_before_change, signal_after_change)
(Fcombine_after_change_execute):
* src/intervals.c (get_local_map):
* src/json.c (lisp_to_json_nonscalar_1, Fjson_serialize, Fjson_insert)
(Fjson_parse_string, Fjson_parse_buffer):
* src/keyboard.c (recursive_edit_1, Frecursive_edit, cmd_error)
(Finternal_track_mouse, command_loop_1, read_menu_command)
(safe_run_hooks, read_event_from_main_queue, read_char, timer_check_2)
(menu_item_eval_property, read_key_sequence, read_key_sequence_vs)
(Fsuspend_emacs):
* src/keymap.c (Fcurrent_active_maps, Fdescribe_vector)
(Fhelp__describe_vector):
* src/lread.c (Fload, save_match_data_load, readevalloop)
(Feval_buffer, Feval_region, grow_read_buffer, read_integer, read1):
* src/macros.c (Fexecute_kbd_macro):
* src/menu.c (x_popup_menu_1):
* src/minibuf.c (read_minibuf, set_minibuffer_mode)
(read_minibuf_unwind, Fread_string, Fread_buffer):
* src/nsfns.m (Fx_create_frame, Fx_show_tip):
* src/nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog):
* src/pdumper.c (Fdump_emacs_portable):
* src/pgtkfns.c (Fx_create_frame, x_create_tip_frame, x_hide_tip)
(Fx_show_tip, Fpgtk_print_frames_dialog, Fx_file_dialog, Fx_select_font):
* src/pgtkmenu.c (set_frame_menubar, create_and_show_popup_menu)
(pgtk_menu_show, create_and_show_dialog, pgtk_dialog_show)
(pgtk_popup_dialog):
* src/pgtkterm.c (pgtk_cr_export_frames):
* src/print.c (PRINTPREPARE, temp_output_buffer_setup)
(Fprin1_to_string, print_vectorlike):
* src/process.c (Fmake_process, create_process, Fmake_pipe_process)
(Fmake_serial_process, connect_network_socket, Fmake_network_process)
(network_interface_info, server_accept_connection)
(wait_reading_process_output, read_process_output, exec_sentinel):
* src/regex-emacs.c (re_match_2_internal):
* src/search.c (looking_at_1, fast_looking_at, search_buffer_re):
* src/sound.c (Fplay_sound_internal):
* src/sysdep.c (system_process_attributes):
* src/term.c (tty_menu_show):
* src/textprop.c (Fnext_single_char_property_change)
(Fprevious_single_char_property_change, add_text_properties_1)
(set_text_properties, set_text_properties_1, Fremove_text_properties)
(Fremove_list_of_text_properties):
* src/thread.c (Fmutex_lock, invoke_thread_function):
* src/undo.c (truncate_undo_list):
* src/w32fns.c (Fx_create_frame, w32_create_tip_frame, w32_hide_tip)
(Fx_show_tip, Fx_file_dialog):
* src/w32font.c (Fx_select_font):
* src/w32menu.c (set_frame_menubar):
* src/window.c (window_list, next_window, window_list_1)
(run_window_configuration_change_hook, Frun_window_scroll_functions)
(run_window_change_functions, set_window_buffer)
(temp_output_buffer_show, window_scroll, scroll_command)
(Fscroll_other_window, Fscroll_other_window_down):
* src/xdisp.c (safe__call, handle_fontified_prop, handle_face_prop)
(handle_single_display_spec, Fbuffer_text_pixel_size)
(message_dolog, with_echo_area_buffer, setup_echo_area_for_printing)
(display_echo_area, set_message, clear_message, echo_area_display)
(gui_consider_frame_title, prepare_menu_bars, update_menu_bar)
(update_tab_bar, update_tool_bar, redisplay_internal)
(redisplay_preserve_echo_area, run_window_scroll_functions)
(redisplay_window, extend_face_to_end_of_line)
(display_count_lines_logically, display_count_lines_visually)
(display_mode_lines, display_mode_line, Fformat_mode_line)
(decode_mode_spec):
* src/xfns.c (Fx_create_frame, x_create_tip_frame, x_hide_tip)
(Fx_show_tip, Fx_file_dialog, Fx_select_font, Fx_print_frames_dialog):
* src/xmenu.c (set_frame_menubar, create_and_show_popup_menu)
(x_menu_show, create_and_show_dialog, x_dialog_show)
(xw_popup_dialog):
* src/xselect.c (x_get_local_selection, x_reply_selection_request)
(x_handle_selection_request, wait_for_property_change):
* src/xterm.c (x_cr_export_frames, x_connection_closed):
Replace ptrdiff_t with specpdl_ref for referencing specpdl and use the
corresponding functions instead of direct arithmetic.
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/buffer.c b/src/buffer.c index 0bdad086ddd..91ff6b946f7 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -1774,7 +1774,7 @@ cleaning up all windows currently displaying the buffer to be killed. */) | |||
| 1774 | 1774 | ||
| 1775 | /* Run hooks with the buffer to be killed as the current buffer. */ | 1775 | /* Run hooks with the buffer to be killed as the current buffer. */ |
| 1776 | { | 1776 | { |
| 1777 | ptrdiff_t count = SPECPDL_INDEX (); | 1777 | specpdl_ref count = SPECPDL_INDEX (); |
| 1778 | bool modified; | 1778 | bool modified; |
| 1779 | 1779 | ||
| 1780 | record_unwind_protect_excursion (); | 1780 | record_unwind_protect_excursion (); |
| @@ -2097,7 +2097,6 @@ Use this function before selecting the buffer, since it may need to inspect | |||
| 2097 | the current buffer's major mode. */) | 2097 | the current buffer's major mode. */) |
| 2098 | (Lisp_Object buffer) | 2098 | (Lisp_Object buffer) |
| 2099 | { | 2099 | { |
| 2100 | ptrdiff_t count; | ||
| 2101 | Lisp_Object function; | 2100 | Lisp_Object function; |
| 2102 | 2101 | ||
| 2103 | CHECK_BUFFER (buffer); | 2102 | CHECK_BUFFER (buffer); |
| @@ -2120,7 +2119,7 @@ the current buffer's major mode. */) | |||
| 2120 | `hack-local-variables' get run. */ | 2119 | `hack-local-variables' get run. */ |
| 2121 | return Qnil; | 2120 | return Qnil; |
| 2122 | 2121 | ||
| 2123 | count = SPECPDL_INDEX (); | 2122 | specpdl_ref count = SPECPDL_INDEX (); |
| 2124 | 2123 | ||
| 2125 | /* To select a nonfundamental mode, | 2124 | /* To select a nonfundamental mode, |
| 2126 | select the buffer temporarily and then call the mode function. */ | 2125 | select the buffer temporarily and then call the mode function. */ |
| @@ -4035,7 +4034,7 @@ buffer. */) | |||
| 4035 | { | 4034 | { |
| 4036 | struct buffer *b, *ob = 0; | 4035 | struct buffer *b, *ob = 0; |
| 4037 | Lisp_Object obuffer; | 4036 | Lisp_Object obuffer; |
| 4038 | ptrdiff_t count = SPECPDL_INDEX (); | 4037 | specpdl_ref count = SPECPDL_INDEX (); |
| 4039 | ptrdiff_t n_beg, n_end; | 4038 | ptrdiff_t n_beg, n_end; |
| 4040 | ptrdiff_t o_beg UNINIT, o_end UNINIT; | 4039 | ptrdiff_t o_beg UNINIT, o_end UNINIT; |
| 4041 | 4040 | ||
| @@ -4156,7 +4155,7 @@ DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, | |||
| 4156 | { | 4155 | { |
| 4157 | Lisp_Object buffer; | 4156 | Lisp_Object buffer; |
| 4158 | struct buffer *b; | 4157 | struct buffer *b; |
| 4159 | ptrdiff_t count = SPECPDL_INDEX (); | 4158 | specpdl_ref count = SPECPDL_INDEX (); |
| 4160 | 4159 | ||
| 4161 | CHECK_OVERLAY (overlay); | 4160 | CHECK_OVERLAY (overlay); |
| 4162 | 4161 | ||