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/alloc.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/alloc.c')
| -rw-r--r-- | src/alloc.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/alloc.c b/src/alloc.c index 5d7b484f6ea..a3410be7e26 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -3891,7 +3891,7 @@ run_finalizer_handler (Lisp_Object args) | |||
| 3891 | static void | 3891 | static void |
| 3892 | run_finalizer_function (Lisp_Object function) | 3892 | run_finalizer_function (Lisp_Object function) |
| 3893 | { | 3893 | { |
| 3894 | ptrdiff_t count = SPECPDL_INDEX (); | 3894 | specpdl_ref count = SPECPDL_INDEX (); |
| 3895 | #ifdef HAVE_PDUMPER | 3895 | #ifdef HAVE_PDUMPER |
| 3896 | ++number_finalizers_run; | 3896 | ++number_finalizers_run; |
| 3897 | #endif | 3897 | #endif |
| @@ -5744,10 +5744,10 @@ allow_garbage_collection (intmax_t consing) | |||
| 5744 | garbage_collection_inhibited--; | 5744 | garbage_collection_inhibited--; |
| 5745 | } | 5745 | } |
| 5746 | 5746 | ||
| 5747 | ptrdiff_t | 5747 | specpdl_ref |
| 5748 | inhibit_garbage_collection (void) | 5748 | inhibit_garbage_collection (void) |
| 5749 | { | 5749 | { |
| 5750 | ptrdiff_t count = SPECPDL_INDEX (); | 5750 | specpdl_ref count = SPECPDL_INDEX (); |
| 5751 | record_unwind_protect_intmax (allow_garbage_collection, consing_until_gc); | 5751 | record_unwind_protect_intmax (allow_garbage_collection, consing_until_gc); |
| 5752 | garbage_collection_inhibited++; | 5752 | garbage_collection_inhibited++; |
| 5753 | consing_until_gc = HI_THRESHOLD; | 5753 | consing_until_gc = HI_THRESHOLD; |
| @@ -6107,7 +6107,7 @@ garbage_collect (void) | |||
| 6107 | Lisp_Object tail, buffer; | 6107 | Lisp_Object tail, buffer; |
| 6108 | char stack_top_variable; | 6108 | char stack_top_variable; |
| 6109 | bool message_p; | 6109 | bool message_p; |
| 6110 | ptrdiff_t count = SPECPDL_INDEX (); | 6110 | specpdl_ref count = SPECPDL_INDEX (); |
| 6111 | struct timespec start; | 6111 | struct timespec start; |
| 6112 | 6112 | ||
| 6113 | eassert (weak_hash_tables == NULL); | 6113 | eassert (weak_hash_tables == NULL); |
| @@ -6265,7 +6265,7 @@ garbage_collect (void) | |||
| 6265 | 6265 | ||
| 6266 | if (!NILP (Vpost_gc_hook)) | 6266 | if (!NILP (Vpost_gc_hook)) |
| 6267 | { | 6267 | { |
| 6268 | ptrdiff_t gc_count = inhibit_garbage_collection (); | 6268 | specpdl_ref gc_count = inhibit_garbage_collection (); |
| 6269 | safe_run_hooks (Qpost_gc_hook); | 6269 | safe_run_hooks (Qpost_gc_hook); |
| 6270 | unbind_to (gc_count, Qnil); | 6270 | unbind_to (gc_count, Qnil); |
| 6271 | } | 6271 | } |
| @@ -6318,7 +6318,7 @@ For further details, see Info node `(elisp)Garbage Collection'. */) | |||
| 6318 | if (garbage_collection_inhibited) | 6318 | if (garbage_collection_inhibited) |
| 6319 | return Qnil; | 6319 | return Qnil; |
| 6320 | 6320 | ||
| 6321 | ptrdiff_t count = SPECPDL_INDEX (); | 6321 | specpdl_ref count = SPECPDL_INDEX (); |
| 6322 | specbind (Qsymbols_with_pos_enabled, Qnil); | 6322 | specbind (Qsymbols_with_pos_enabled, Qnil); |
| 6323 | garbage_collect (); | 6323 | garbage_collect (); |
| 6324 | unbind_to (count, Qnil); | 6324 | unbind_to (count, Qnil); |
| @@ -7421,7 +7421,7 @@ Lisp_Object | |||
| 7421 | which_symbols (Lisp_Object obj, EMACS_INT find_max) | 7421 | which_symbols (Lisp_Object obj, EMACS_INT find_max) |
| 7422 | { | 7422 | { |
| 7423 | struct symbol_block *sblk; | 7423 | struct symbol_block *sblk; |
| 7424 | ptrdiff_t gc_count = inhibit_garbage_collection (); | 7424 | specpdl_ref gc_count = inhibit_garbage_collection (); |
| 7425 | Lisp_Object found = Qnil; | 7425 | Lisp_Object found = Qnil; |
| 7426 | 7426 | ||
| 7427 | if (! deadp (obj)) | 7427 | if (! deadp (obj)) |