comparison src/profile.c @ 5013:ae48681c47fa

changes to VOID_TO_LISP et al. -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-08 Ben Wing <ben@xemacs.org> * casetab.c (compute_canon_mapper): * casetab.c (initialize_identity_mapper): * casetab.c (compute_up_or_eqv_mapper): * casetab.c (recompute_case_table): * casetab.c (set_case_table): * chartab.c (copy_mapper): * chartab.c (copy_char_table_range): * chartab.c (get_range_char_table_1): * console.c (find_nonminibuffer_frame_not_on_console_predicate): * console.c (find_nonminibuffer_frame_not_on_console): * console.c (nuke_all_console_slots): * device.c: * device.c (find_nonminibuffer_frame_not_on_device_predicate): * device.c (find_nonminibuffer_frame_not_on_device): * dialog-msw.c (dialog_proc): * dialog-msw.c (handle_question_dialog_box): * dialog-x.c (maybe_run_dbox_text_callback): * eval.c: * eval.c (safe_run_hook_trapping_problems_1): * eval.c (safe_run_hook_trapping_problems): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * event-msw.c (mswindows_find_frame): * faces.c (update_face_inheritance_mapper): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_get_mouse_position): * frame-msw.c (mswindows_get_frame_parent): * glade.c (connector): * glade.c (Fglade_xml_signal_connect): * glade.c (Fglade_xml_signal_autoconnect): * glade.c (Fglade_xml_textdomain): * glyphs-msw.c (mswindows_subwindow_instantiate): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs.c (check_instance_cache_mapper): * glyphs.c (check_window_subwindow_cache): * glyphs.c (check_image_instance_structure): * gui-x.c (snarf_widget_value_mapper): * gui-x.c (popup_selection_callback): * gui-x.c (button_item_to_widget_value): * keymap.c (map_keymap_mapper): * keymap.c (Fmap_keymap): * menubar-gtk.c (__torn_off_sir): * menubar-gtk.c (__activate_menu): * menubar-gtk.c (menu_convert): * menubar-gtk.c (__generic_button_callback): * menubar-gtk.c (menu_descriptor_to_widget_1): * menubar-msw.c: * menubar-msw.c (EMPTY_ITEM_ID): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * menubar-x.c (pre_activate_callback): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar-x.c (command_builder_find_menu_accelerator): * print.c (print_internal): * process-unix.c (close_process_descs_mapfun): * process.c (get_process_from_usid): * process.c (init_process_io_handles): * profile.c (sigprof_handler): * profile.c (get_profiling_info_timing_maphash): * profile.c (Fget_profiling_info): * profile.c (set_profiling_info_timing_maphash): * profile.c (mark_profiling_info_maphash): * scrollbar-msw.c (mswindows_create_scrollbar_instance): * scrollbar-msw.c (mswindows_free_scrollbar_instance): * scrollbar-msw.c (mswindows_handle_scrollbar_event): * specifier.c (recompute_cached_specifier_everywhere_mapfun): * specifier.c (recompute_cached_specifier_everywhere): * syntax.c (copy_to_mirrortab): * syntax.c (copy_if_not_already_present): * syntax.c (update_just_this_syntax_table): * text.c (new_dfc_convert_now_damn_it): * text.h (LISP_STRING_TO_EXTERNAL): * tooltalk.c: * tooltalk.c (tooltalk_message_callback): * tooltalk.c (tooltalk_pattern_callback): * tooltalk.c (Fcreate_tooltalk_message): * tooltalk.c (Fcreate_tooltalk_pattern): * ui-byhand.c (__generic_toolbar_callback): * ui-byhand.c (generic_toolbar_insert_item): * ui-byhand.c (__emacs_gtk_ctree_recurse_internal): * ui-byhand.c (Fgtk_ctree_recurse): * ui-gtk.c (__internal_callback_destroy): * ui-gtk.c (__internal_callback_marshal): * ui-gtk.c (Fgtk_signal_connect): * ui-gtk.c (gtk_type_to_lisp): * ui-gtk.c (lisp_to_gtk_type): * ui-gtk.c (lisp_to_gtk_ret_type): * lisp-disunion.h: * lisp-disunion.h (NON_LVALUE): * lisp-union.h: * lisp.h (LISP_HASH): Rename: LISP_TO_VOID -> STORE_LISP_IN_VOID VOID_TO_LISP -> GET_LISP_FROM_VOID These new names are meant to clearly identify that the Lisp object is the source and void the sink, and that they can't be used the other way around -- they aren't exact opposites despite the old names. The names are also important given the new functions created just below. Also, clarify comments in lisp-union.h and lisp-disunion.h about the use of the functions. * lisp.h: New functions STORE_VOID_IN_LISP and GET_VOID_FROM_LISP. These are different from the above in that the source is a void * (previously, you had to use make_opaque_ptr()). * eval.c (restore_lisp_object): * eval.c (record_unwind_protect_restoring_lisp_object): * eval.c (struct restore_int): * eval.c (restore_int): * eval.c (record_unwind_protect_restoring_int): * eval.c (free_pointer): * eval.c (record_unwind_protect_freeing): * eval.c (free_dynarr): * eval.c (record_unwind_protect_freeing_dynarr): * eval.c (unbind_to_1): Use STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to eliminate the use of make_opaque_ptr() and mostly eliminate Lisp consing entirely in the use of these various record_unwind_protect_* functions as well as internal_bind_* (e.g. internal_bind_int). * tests.c: * tests.c (Ftest_store_void_in_lisp): * tests.c (syms_of_tests): * tests.c (vars_of_tests): Add an C-assert-style test to test STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to make sure the same value comes back that was put in.
author Ben Wing <ben@xemacs.org>
date Mon, 08 Feb 2010 06:42:16 -0600
parents 19a72041c5ed
children 9410323e4b0d
comparison
equal deleted inserted replaced
5012:f68b2ec914e3 5013:ae48681c47fa
313 313
314 { 314 {
315 long count; 315 long count;
316 const void *vval; 316 const void *vval;
317 317
318 if (gethash (LISP_TO_VOID (fun), big_profile_table, &vval)) 318 if (gethash (STORE_LISP_IN_VOID (fun), big_profile_table, &vval))
319 count = (long) vval; 319 count = (long) vval;
320 else 320 else
321 count = 0; 321 count = 0;
322 count++; 322 count++;
323 vval = (const void *) count; 323 vval = (const void *) count;
324 puthash (LISP_TO_VOID (fun), (void *) vval, big_profile_table); 324 puthash (STORE_LISP_IN_VOID (fun), (void *) vval, big_profile_table);
325 } 325 }
326 326
327 profiling_lock = 0; 327 profiling_lock = 0;
328 } 328 }
329 in_profiling--; 329 in_profiling--;
461 Lisp_Object key; 461 Lisp_Object key;
462 struct get_profiling_info_closure *closure 462 struct get_profiling_info_closure *closure
463 = (struct get_profiling_info_closure *) void_closure; 463 = (struct get_profiling_info_closure *) void_closure;
464 EMACS_INT val; 464 EMACS_INT val;
465 465
466 key = VOID_TO_LISP (void_key); 466 key = GET_LISP_FROM_VOID (void_key);
467 val = (EMACS_INT) void_val; 467 val = (EMACS_INT) void_val;
468 468
469 Fputhash (key, make_int (val), closure->timing); 469 Fputhash (key, make_int (val), closure->timing);
470 return 0; 470 return 0;
471 } 471 }
522 maphash (get_profiling_info_timing_maphash, big_profile_table, &closure); 522 maphash (get_profiling_info_timing_maphash, big_profile_table, &closure);
523 523
524 /* OK, OK ... the total-timing table is not going to have an entry 524 /* OK, OK ... the total-timing table is not going to have an entry
525 for profile overhead, and it looks strange for it to come out 0, 525 for profile overhead, and it looks strange for it to come out 0,
526 so make sure it looks reasonable. */ 526 so make sure it looks reasonable. */
527 if (!gethash (LISP_TO_VOID (QSprofile_overhead), big_profile_table, 527 if (!gethash (STORE_LISP_IN_VOID (QSprofile_overhead), big_profile_table,
528 &overhead)) 528 &overhead))
529 overhead = 0; 529 overhead = 0;
530 Fputhash (QSprofile_overhead, make_int ((EMACS_INT) overhead), 530 Fputhash (QSprofile_overhead, make_int ((EMACS_INT) overhead),
531 Vtotal_timing_profile_table); 531 Vtotal_timing_profile_table);
532 532
555 if (!INTP (val)) 555 if (!INTP (val))
556 invalid_argument_2 556 invalid_argument_2
557 ("Function timing count is not an integer in given entry", 557 ("Function timing count is not an integer in given entry",
558 key, val); 558 key, val);
559 559
560 puthash (LISP_TO_VOID (key), (void *) XINT (val), big_profile_table); 560 puthash (STORE_LISP_IN_VOID (key), (void *) XINT (val), big_profile_table);
561 561
562 return 0; 562 return 0;
563 } 563 }
564 564
565 DEFUN ("set-profiling-info", Fset_profiling_info, 1, 1, 0, /* 565 DEFUN ("set-profiling-info", Fset_profiling_info, 1, 1, 0, /*
607 mark_profiling_info_maphash (const void *void_key, 607 mark_profiling_info_maphash (const void *void_key,
608 void *UNUSED (void_val), 608 void *UNUSED (void_val),
609 void *UNUSED (void_closure)) 609 void *UNUSED (void_closure))
610 { 610 {
611 #ifdef USE_KKCC 611 #ifdef USE_KKCC
612 kkcc_gc_stack_push_lisp_object (VOID_TO_LISP (void_key), 0, -1); 612 kkcc_gc_stack_push_lisp_object (GET_LISP_FROM_VOID (void_key), 0, -1);
613 #else /* NOT USE_KKCC */ 613 #else /* NOT USE_KKCC */
614 mark_object (VOID_TO_LISP (void_key)); 614 mark_object (GET_LISP_FROM_VOID (void_key));
615 #endif /* NOT USE_KKCC */ 615 #endif /* NOT USE_KKCC */
616 return 0; 616 return 0;
617 } 617 }
618 618
619 void 619 void