Mercurial > hg > xemacs-beta
comparison src/alloc.c @ 4952:19a72041c5ed
Mule-izing, various fixes related to char * arguments
-------------------- ChangeLog entries follow: --------------------
modules/ChangeLog addition:
2010-01-26 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
* postgresql/postgresql.c (CHECK_LIVE_CONNECTION):
* postgresql/postgresql.c (print_pgresult):
* postgresql/postgresql.c (Fpq_conn_defaults):
* postgresql/postgresql.c (Fpq_connectdb):
* postgresql/postgresql.c (Fpq_connect_start):
* postgresql/postgresql.c (Fpq_result_status):
* postgresql/postgresql.c (Fpq_res_status):
Mule-ize large parts of it.
2010-01-26 Ben Wing <ben@xemacs.org>
* ldap/eldap.c (print_ldap):
* ldap/eldap.c (allocate_ldap):
Use write_ascstring().
src/ChangeLog addition:
2010-01-26 Ben Wing <ben@xemacs.org>
* alloc.c:
* alloc.c (build_ascstring):
* alloc.c (build_msg_cistring):
* alloc.c (staticpro_1):
* alloc.c (staticpro_name):
* alloc.c (staticpro_nodump_1):
* alloc.c (staticpro_nodump_name):
* alloc.c (unstaticpro_nodump_1):
* alloc.c (mcpro_1):
* alloc.c (mcpro_name):
* alloc.c (object_memory_usage_stats):
* alloc.c (common_init_alloc_early):
* alloc.c (init_alloc_once_early):
* buffer.c (print_buffer):
* buffer.c (vars_of_buffer):
* buffer.c (common_init_complex_vars_of_buffer):
* buffer.c (init_initial_directory):
* bytecode.c (invalid_byte_code):
* bytecode.c (print_compiled_function):
* bytecode.c (mark_compiled_function):
* chartab.c (print_table_entry):
* chartab.c (print_char_table):
* config.h.in:
* console-gtk.c:
* console-gtk.c (gtk_device_to_console_connection):
* console-gtk.c (gtk_semi_canonicalize_console_connection):
* console-gtk.c (gtk_canonicalize_console_connection):
* console-gtk.c (gtk_semi_canonicalize_device_connection):
* console-gtk.c (gtk_canonicalize_device_connection):
* console-stream.c (stream_init_frame_1):
* console-stream.c (vars_of_console_stream):
* console-stream.c (init_console_stream):
* console-x.c (x_semi_canonicalize_console_connection):
* console-x.c (x_semi_canonicalize_device_connection):
* console-x.c (x_canonicalize_device_connection):
* console-x.h:
* data.c (eq_with_ebola_notice):
* data.c (Fsubr_interactive):
* data.c (Fnumber_to_string):
* data.c (digit_to_number):
* device-gtk.c (gtk_init_device):
* device-msw.c (print_devmode):
* device-x.c (x_event_name):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-msw.c (handle_file_dialog_box):
* dialog-msw.c (vars_of_dialog_mswindows):
* doc.c (weird_doc):
* doc.c (Fsnarf_documentation):
* doc.c (vars_of_doc):
* dumper.c (pdump):
* dynarr.c:
* dynarr.c (Dynarr_realloc):
* editfns.c (Fuser_real_login_name):
* editfns.c (get_home_directory):
* elhash.c (print_hash_table_data):
* elhash.c (print_hash_table):
* emacs.c (main_1):
* emacs.c (vars_of_emacs):
* emodules.c:
* emodules.c (_emodules_list):
* emodules.c (Fload_module):
* emodules.c (Funload_module):
* emodules.c (Flist_modules):
* emodules.c (find_make_module):
* emodules.c (attempt_module_delete):
* emodules.c (emodules_load):
* emodules.c (emodules_doc_subr):
* emodules.c (emodules_doc_sym):
* emodules.c (syms_of_module):
* emodules.c (vars_of_module):
* emodules.h:
* eval.c (print_subr):
* eval.c (signal_call_debugger):
* eval.c (build_error_data):
* eval.c (signal_error):
* eval.c (maybe_signal_error):
* eval.c (signal_continuable_error):
* eval.c (maybe_signal_continuable_error):
* eval.c (signal_error_2):
* eval.c (maybe_signal_error_2):
* eval.c (signal_continuable_error_2):
* eval.c (maybe_signal_continuable_error_2):
* eval.c (signal_ferror):
* eval.c (maybe_signal_ferror):
* eval.c (signal_continuable_ferror):
* eval.c (maybe_signal_continuable_ferror):
* eval.c (signal_ferror_with_frob):
* eval.c (maybe_signal_ferror_with_frob):
* eval.c (signal_continuable_ferror_with_frob):
* eval.c (maybe_signal_continuable_ferror_with_frob):
* eval.c (syntax_error):
* eval.c (syntax_error_2):
* eval.c (maybe_syntax_error):
* eval.c (sferror):
* eval.c (sferror_2):
* eval.c (maybe_sferror):
* eval.c (invalid_argument):
* eval.c (invalid_argument_2):
* eval.c (maybe_invalid_argument):
* eval.c (invalid_constant):
* eval.c (invalid_constant_2):
* eval.c (maybe_invalid_constant):
* eval.c (invalid_operation):
* eval.c (invalid_operation_2):
* eval.c (maybe_invalid_operation):
* eval.c (invalid_change):
* eval.c (invalid_change_2):
* eval.c (maybe_invalid_change):
* eval.c (invalid_state):
* eval.c (invalid_state_2):
* eval.c (maybe_invalid_state):
* eval.c (wtaerror):
* eval.c (stack_overflow):
* eval.c (out_of_memory):
* eval.c (print_multiple_value):
* eval.c (issue_call_trapping_problems_warning):
* eval.c (backtrace_specials):
* eval.c (backtrace_unevalled_args):
* eval.c (Fbacktrace):
* eval.c (warn_when_safe):
* event-Xt.c (modwarn):
* event-Xt.c (modbarf):
* event-Xt.c (check_modifier):
* event-Xt.c (store_modifier):
* event-Xt.c (emacs_Xt_format_magic_event):
* event-Xt.c (describe_event):
* event-gtk.c (dragndrop_data_received):
* event-gtk.c (store_modifier):
* event-gtk.c (gtk_reset_modifier_mapping):
* event-msw.c (dde_eval_string):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (FROB):
* event-msw.c (emacs_mswindows_format_magic_event):
* event-stream.c (external_debugging_print_event):
* event-stream.c (execute_help_form):
* event-stream.c (vars_of_event_stream):
* events.c (print_event_1):
* events.c (print_event):
* events.c (event_equal):
* extents.c (print_extent_1):
* extents.c (print_extent):
* extents.c (vars_of_extents):
* faces.c (print_face):
* faces.c (complex_vars_of_faces):
* file-coding.c:
* file-coding.c (print_coding_system):
* file-coding.c (print_coding_system_in_print_method):
* file-coding.c (default_query_method):
* file-coding.c (find_coding_system):
* file-coding.c (make_coding_system_1):
* file-coding.c (chain_print):
* file-coding.c (undecided_print):
* file-coding.c (gzip_print):
* file-coding.c (vars_of_file_coding):
* file-coding.c (complex_vars_of_file_coding):
* fileio.c:
* fileio.c (report_file_type_error):
* fileio.c (report_error_with_errno):
* fileio.c (report_file_error):
* fileio.c (barf_or_query_if_file_exists):
* fileio.c (vars_of_fileio):
* floatfns.c (matherr):
* fns.c (print_bit_vector):
* fns.c (Fmapconcat):
* fns.c (add_suffix_to_symbol):
* fns.c (add_prefix_to_symbol):
* frame-gtk.c:
* frame-gtk.c (Fgtk_window_id):
* frame-x.c (def):
* frame-x.c (x_cde_transfer_callback):
* frame.c:
* frame.c (Fmake_frame):
* gc.c (show_gc_cursor_and_message):
* gc.c (vars_of_gc):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (gtk_print_image_instance):
* glyphs-msw.c (mswindows_print_image_instance):
* glyphs-x.c (x_print_image_instance):
* glyphs-x.c (update_widget_face):
* glyphs.c (make_string_from_file):
* glyphs.c (print_image_instance):
* glyphs.c (signal_image_error):
* glyphs.c (signal_image_error_2):
* glyphs.c (signal_double_image_error):
* glyphs.c (signal_double_image_error_2):
* glyphs.c (xbm_mask_file_munging):
* glyphs.c (pixmap_to_lisp_data):
* glyphs.h:
* gui.c (gui_item_display_flush_left):
* hpplay.c (player_error_internal):
* hpplay.c (myHandler):
* intl-win32.c:
* intl-win32.c (langcode_to_lang):
* intl-win32.c (sublangcode_to_lang):
* intl-win32.c (Fmswindows_get_locale_info):
* intl-win32.c (lcid_to_locale_mule_or_no):
* intl-win32.c (mswindows_multibyte_to_unicode_print):
* intl-win32.c (complex_vars_of_intl_win32):
* keymap.c:
* keymap.c (print_keymap):
* keymap.c (ensure_meta_prefix_char_keymapp):
* keymap.c (Fkey_description):
* keymap.c (Ftext_char_description):
* lisp.h:
* lisp.h (struct):
* lisp.h (DECLARE_INLINE_HEADER):
* lread.c (Fload_internal):
* lread.c (locate_file):
* lread.c (read_escape):
* lread.c (read_raw_string):
* lread.c (read1):
* lread.c (read_list):
* lread.c (read_compiled_function):
* lread.c (init_lread):
* lrecord.h:
* marker.c (print_marker):
* marker.c (marker_equal):
* menubar-msw.c (displayable_menu_item):
* menubar-x.c (command_builder_operate_menu_accelerator):
* menubar.c (vars_of_menubar):
* minibuf.c (reinit_complex_vars_of_minibuf):
* minibuf.c (complex_vars_of_minibuf):
* mule-charset.c (Fmake_charset):
* mule-charset.c (complex_vars_of_mule_charset):
* mule-coding.c (iso2022_print):
* mule-coding.c (fixed_width_query):
* number.c (bignum_print):
* number.c (ratio_print):
* number.c (bigfloat_print):
* number.c (bigfloat_finalize):
* objects-msw.c:
* objects-msw.c (mswindows_color_to_string):
* objects-msw.c (mswindows_color_list):
* objects-tty.c:
* objects-tty.c (tty_font_list):
* objects-tty.c (tty_find_charset_font):
* objects-xlike-inc.c (xft_find_charset_font):
* objects-xlike-inc.c (endif):
* print.c:
* print.c (write_istring):
* print.c (write_ascstring):
* print.c (Fterpri):
* print.c (Fprint):
* print.c (print_error_message):
* print.c (print_vector_internal):
* print.c (print_cons):
* print.c (print_string):
* print.c (printing_unreadable_object):
* print.c (print_internal):
* print.c (print_float):
* print.c (print_symbol):
* process-nt.c (mswindows_report_winsock_error):
* process-nt.c (nt_canonicalize_host_name):
* process-unix.c (unix_canonicalize_host_name):
* process.c (print_process):
* process.c (report_process_error):
* process.c (report_network_error):
* process.c (make_process_internal):
* process.c (Fstart_process_internal):
* process.c (status_message):
* process.c (putenv_internal):
* process.c (vars_of_process):
* process.h:
* profile.c (vars_of_profile):
* rangetab.c (print_range_table):
* realpath.c (vars_of_realpath):
* redisplay.c (vars_of_redisplay):
* search.c (wordify):
* search.c (Freplace_match):
* sheap.c (sheap_adjust_h):
* sound.c (report_sound_error):
* sound.c (Fplay_sound_file):
* specifier.c (print_specifier):
* symbols.c (Fsubr_name):
* symbols.c (do_symval_forwarding):
* symbols.c (set_default_buffer_slot_variable):
* symbols.c (set_default_console_slot_variable):
* symbols.c (store_symval_forwarding):
* symbols.c (default_value):
* symbols.c (defsymbol_massage_name_1):
* symbols.c (defsymbol_massage_name_nodump):
* symbols.c (defsymbol_massage_name):
* symbols.c (defsymbol_massage_multiword_predicate_nodump):
* symbols.c (defsymbol_massage_multiword_predicate):
* symbols.c (defsymbol_nodump):
* symbols.c (defsymbol):
* symbols.c (defkeyword):
* symbols.c (defkeyword_massage_name):
* symbols.c (check_module_subr):
* symbols.c (deferror_1):
* symbols.c (deferror):
* symbols.c (deferror_massage_name):
* symbols.c (deferror_massage_name_and_message):
* symbols.c (defvar_magic):
* symeval.h:
* symeval.h (DEFVAR_SYMVAL_FWD):
* sysdep.c:
* sysdep.c (init_system_name):
* sysdll.c:
* sysdll.c (MAYBE_PREPEND_UNDERSCORE):
* sysdll.c (dll_function):
* sysdll.c (dll_variable):
* sysdll.c (dll_error):
* sysdll.c (dll_open):
* sysdll.c (dll_close):
* sysdll.c (image_for_address):
* sysdll.c (my_find_image):
* sysdll.c (search_linked_libs):
* sysdll.h:
* sysfile.h:
* sysfile.h (DEFAULT_DIRECTORY_FALLBACK):
* syswindows.h:
* tests.c (DFC_CHECK_LENGTH):
* tests.c (DFC_CHECK_CONTENT):
* tests.c (Ftest_hash_tables):
* text.c (vars_of_text):
* text.h:
* tooltalk.c (tt_opnum_string):
* tooltalk.c (tt_message_arg_ival_string):
* tooltalk.c (Ftooltalk_default_procid):
* tooltalk.c (Ftooltalk_default_session):
* tooltalk.c (init_tooltalk):
* tooltalk.c (vars_of_tooltalk):
* ui-gtk.c (Fdll_load):
* ui-gtk.c (type_to_marshaller_type):
* ui-gtk.c (Fgtk_import_function_internal):
* ui-gtk.c (emacs_gtk_object_printer):
* ui-gtk.c (emacs_gtk_boxed_printer):
* unicode.c (unicode_to_ichar):
* unicode.c (unicode_print):
* unicode.c (unicode_query):
* unicode.c (vars_of_unicode):
* unicode.c (complex_vars_of_unicode):
* win32.c:
* win32.c (mswindows_report_process_error):
* window.c (print_window):
* xemacs.def.in.in:
BASIC IDEA: Further fixing up uses of char * and CIbyte *
to reflect their actual semantics; Mule-izing some code;
redoing of the not-yet-working code to handle message translation.
Clean up code to handle message-translation (not yet working).
Create separate versions of build_msg_string() for working with
Ibyte *, CIbyte *, and Ascbyte * arguments. Assert that Ascbyte *
arguments are pure-ASCII. Make build_msg_string() be the same
as build_msg_ascstring(). Create same three versions of GETTEXT()
and DEFER_GETTEXT(). Also create build_defer_string() and
variants for the equivalent of DEFER_GETTEXT() when building a
string. Remove old CGETTEXT(). Clean up code where GETTEXT(),
DEFER_GETTEXT(), build_msg_string(), etc. was being called and
introduce some new calls to build_msg_string(), etc. Remove
GETTEXT() from calls to weird_doc() -- we assume that the
message snarfer knows about weird_doc(). Remove uses of
DEFER_GETTEXT() from error messages in sysdep.c and instead use
special comments /* @@@begin-snarf@@@ */ and /* @@@end-snarf@@@ */
that the message snarfer presumably knows about.
Create build_ascstring() and use it in many instances in place
of build_string(). The purpose of having Ascbyte * variants is
to make the code more self-documenting in terms of what sort of
semantics is expected for char * strings. In fact in the process
of looking for uses of build_string(), much improperly Mule-ized
was discovered.
Mule-ize a lot of code as described in previous paragraph,
e.g. in sysdep.c.
Make the error functions take Ascbyte * strings and fix up a
couple of places where non-pure-ASCII strings were being passed in
(file-coding.c, mule-coding.c, unicode.c). (It's debatable whether
we really need to make the error functions work this way. It
helps catch places where code is written in a way that message
translation won't work, but we may well never implement message
translation.)
Make staticpro() and friends take Ascbyte * strings instead of
raw char * strings. Create a const_Ascbyte_ptr dynarr type
to describe what's held by staticpro_names[] and friends,
create pdump descriptions for const_Ascbyte_ptr dynarrs, and
use them in place of specially-crafted staticpro descriptions.
Mule-ize certain other functions (e.g. x_event_name) by correcting
raw use of char * to Ascbyte *, Rawbyte * or another such type,
and raw use of char[] buffers to another type (usually Ascbyte[]).
Change many uses of write_c_string() to write_msg_string(),
write_ascstring(), etc.
Mule-ize emodules.c, emodules.h, sysdll.h.
Fix some un-Mule-ized code in intl-win32.c.
A comment in event-Xt.c and the limitations of the message
snarfer (make-msgfile or whatever) is presumably incorrect --
it should be smart enough to handle function calls spread over
more than one line. Clean up code in event-Xt.c that was
written awkwardly for this reason.
In config.h.in, instead of NEED_ERROR_CHECK_TYPES_INLINES,
create a more general XEMACS_DEFS_NEEDS_INLINE_DECLS to
indicate when inlined functions need to be declared in
xemacs.defs.in.in, and make use of it in xemacs.defs.in.in.
We need to do this because postgresql.c now calls qxestrdup(),
which is an inline function.
Make nconc2() and other such functions MODULE_API and put
them in xemacs.defs.in.in since postgresql.c now uses them.
Clean up indentation in lread.c and a few other places.
In text.h, document ASSERT_ASCTEXT_ASCII() and
ASSERT_ASCTEXT_ASCII_LEN(), group together the stand-in
encodings and add some more for DLL symbols, function and
variable names, etc.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Tue, 26 Jan 2010 23:22:30 -0600 |
parents | 299dce99bdad |
children | 304aebb79cd3 |
comparison
equal
deleted
inserted
replaced
4951:de60897044f4 | 4952:19a72041c5ed |
---|---|
2892 } | 2892 } |
2893 | 2893 |
2894 Lisp_Object | 2894 Lisp_Object |
2895 build_string (const CIbyte *str) | 2895 build_string (const CIbyte *str) |
2896 { | 2896 { |
2897 /* Some strlen's crash and burn if passed null. */ | 2897 return build_intstring ((const Ibyte *) str); |
2898 return make_string ((const Ibyte *) str, (str ? strlen (str) : 0)); | 2898 } |
2899 | |
2900 Lisp_Object | |
2901 build_ascstring (const Ascbyte *str) | |
2902 { | |
2903 ASSERT_ASCTEXT_ASCII (str); | |
2904 return build_intstring ((const Ibyte *) str); | |
2899 } | 2905 } |
2900 | 2906 |
2901 Lisp_Object | 2907 Lisp_Object |
2902 build_ext_string (const Extbyte *str, Lisp_Object coding_system) | 2908 build_ext_string (const Extbyte *str, Lisp_Object coding_system) |
2903 { | 2909 { |
2906 (str ? dfc_external_data_len (str, coding_system) : | 2912 (str ? dfc_external_data_len (str, coding_system) : |
2907 0), | 2913 0), |
2908 coding_system); | 2914 coding_system); |
2909 } | 2915 } |
2910 | 2916 |
2911 Lisp_Object | 2917 /* Build a string whose content is a translatable message, and translate |
2912 build_msg_intstring (const Ibyte *str) | 2918 the message according to the current language environment. */ |
2913 { | 2919 |
2914 return build_intstring (GETTEXT (str)); | 2920 Lisp_Object |
2915 } | 2921 build_msg_istring (const Ibyte *str) |
2916 | 2922 { |
2917 Lisp_Object | 2923 return build_intstring (IGETTEXT (str)); |
2918 build_msg_string (const CIbyte *str) | 2924 } |
2919 { | 2925 |
2920 return build_string (CGETTEXT (str)); | 2926 /* Build a string whose content is a translatable message, and translate |
2927 the message according to the current language environment. */ | |
2928 | |
2929 Lisp_Object | |
2930 build_msg_cistring (const CIbyte *str) | |
2931 { | |
2932 return build_msg_istring ((const Ibyte *) str); | |
2933 } | |
2934 | |
2935 /* Build a string whose content is a translatable message, and translate | |
2936 the message according to the current language environment. | |
2937 String must be pure-ASCII, and when compiled with error-checking, | |
2938 an abort will have if not pure-ASCII. */ | |
2939 | |
2940 Lisp_Object | |
2941 build_msg_ascstring (const Ascbyte *str) | |
2942 { | |
2943 ASSERT_ASCTEXT_ASCII (str); | |
2944 return build_msg_istring ((const Ibyte *) str); | |
2945 } | |
2946 | |
2947 /* Build a string whose content is a translatable message, but don't | |
2948 translate the message immediately. Perhaps do something else instead, | |
2949 such as put a property on the string indicating that it needs to be | |
2950 translated. | |
2951 | |
2952 This is useful for strings that are built at dump time or init time, | |
2953 rather than on-the-fly when the current language environment is set | |
2954 properly. */ | |
2955 | |
2956 Lisp_Object | |
2957 build_defer_istring (const Ibyte *str) | |
2958 { | |
2959 Lisp_Object retval = build_intstring ((Ibyte *) str); | |
2960 /* Possibly do something to the return value */ | |
2961 return retval; | |
2962 } | |
2963 | |
2964 Lisp_Object | |
2965 build_defer_cistring (const CIbyte *str) | |
2966 { | |
2967 return build_defer_istring ((Ibyte *) str); | |
2968 } | |
2969 | |
2970 Lisp_Object | |
2971 build_defer_ascstring (const Ascbyte *str) | |
2972 { | |
2973 ASSERT_ASCTEXT_ASCII (str); | |
2974 return build_defer_istring ((Ibyte *) str); | |
2921 } | 2975 } |
2922 | 2976 |
2923 Lisp_Object | 2977 Lisp_Object |
2924 make_string_nocopy (const Ibyte *contents, Bytecount length) | 2978 make_string_nocopy (const Ibyte *contents, Bytecount length) |
2925 { | 2979 { |
3241 staticpros_description_1 | 3295 staticpros_description_1 |
3242 }; | 3296 }; |
3243 | 3297 |
3244 #ifdef DEBUG_XEMACS | 3298 #ifdef DEBUG_XEMACS |
3245 | 3299 |
3246 static const struct memory_description staticpro_one_name_description_1[] = { | |
3247 { XD_ASCII_STRING, 0 }, | |
3248 { XD_END } | |
3249 }; | |
3250 | |
3251 static const struct sized_memory_description staticpro_one_name_description = { | |
3252 sizeof (char *), | |
3253 staticpro_one_name_description_1 | |
3254 }; | |
3255 | |
3256 static const struct memory_description staticpro_names_description_1[] = { | |
3257 XD_DYNARR_DESC (char_ptr_dynarr, &staticpro_one_name_description), | |
3258 { XD_END } | |
3259 }; | |
3260 | |
3261 | |
3262 extern const struct sized_memory_description staticpro_names_description; | |
3263 | |
3264 const struct sized_memory_description staticpro_names_description = { | |
3265 sizeof (char_ptr_dynarr), | |
3266 staticpro_names_description_1 | |
3267 }; | |
3268 | |
3269 /* Help debug crashes gc-marking a staticpro'ed object. */ | 3300 /* Help debug crashes gc-marking a staticpro'ed object. */ |
3270 | 3301 |
3271 Lisp_Object_ptr_dynarr *staticpros; | 3302 Lisp_Object_ptr_dynarr *staticpros; |
3272 char_ptr_dynarr *staticpro_names; | 3303 const_Ascbyte_ptr_dynarr *staticpro_names; |
3273 | 3304 |
3274 /* Mark the Lisp_Object at non-heap VARADDRESS as a root object for | 3305 /* Mark the Lisp_Object at non-heap VARADDRESS as a root object for |
3275 garbage collection, and for dumping. */ | 3306 garbage collection, and for dumping. */ |
3276 void | 3307 void |
3277 staticpro_1 (Lisp_Object *varaddress, char *varname) | 3308 staticpro_1 (Lisp_Object *varaddress, const Ascbyte *varname) |
3278 { | 3309 { |
3279 Dynarr_add (staticpros, varaddress); | 3310 Dynarr_add (staticpros, varaddress); |
3280 Dynarr_add (staticpro_names, varname); | 3311 Dynarr_add (staticpro_names, varname); |
3281 dump_add_root_lisp_object (varaddress); | 3312 dump_add_root_lisp_object (varaddress); |
3282 } | 3313 } |
3283 | 3314 |
3284 /* External debugging function: Return the name of the variable at offset | 3315 /* External debugging function: Return the name of the variable at offset |
3285 COUNT. */ | 3316 COUNT. */ |
3286 char * | 3317 const Ascbyte * |
3287 staticpro_name (int count) | 3318 staticpro_name (int count) |
3288 { | 3319 { |
3289 return Dynarr_at (staticpro_names, count); | 3320 return Dynarr_at (staticpro_names, count); |
3290 } | 3321 } |
3291 | 3322 |
3292 Lisp_Object_ptr_dynarr *staticpros_nodump; | 3323 Lisp_Object_ptr_dynarr *staticpros_nodump; |
3293 char_ptr_dynarr *staticpro_nodump_names; | 3324 const_Ascbyte_ptr_dynarr *staticpro_nodump_names; |
3294 | 3325 |
3295 /* Mark the Lisp_Object at heap VARADDRESS as a root object for | 3326 /* Mark the Lisp_Object at heap VARADDRESS as a root object for |
3296 garbage collection, but not for dumping. (See below.) */ | 3327 garbage collection, but not for dumping. (See below.) */ |
3297 void | 3328 void |
3298 staticpro_nodump_1 (Lisp_Object *varaddress, char *varname) | 3329 staticpro_nodump_1 (Lisp_Object *varaddress, const Ascbyte *varname) |
3299 { | 3330 { |
3300 Dynarr_add (staticpros_nodump, varaddress); | 3331 Dynarr_add (staticpros_nodump, varaddress); |
3301 Dynarr_add (staticpro_nodump_names, varname); | 3332 Dynarr_add (staticpro_nodump_names, varname); |
3302 } | 3333 } |
3303 | 3334 |
3304 /* External debugging function: Return the name of the variable at offset | 3335 /* External debugging function: Return the name of the variable at offset |
3305 COUNT. */ | 3336 COUNT. */ |
3306 char * | 3337 const Ascbyte * |
3307 staticpro_nodump_name (int count) | 3338 staticpro_nodump_name (int count) |
3308 { | 3339 { |
3309 return Dynarr_at (staticpro_nodump_names, count); | 3340 return Dynarr_at (staticpro_nodump_names, count); |
3310 } | 3341 } |
3311 | 3342 |
3312 #ifdef HAVE_SHLIB | 3343 #ifdef HAVE_SHLIB |
3313 /* Stop treating the Lisp_Object at non-heap VARADDRESS as a root object | 3344 /* Stop treating the Lisp_Object at non-heap VARADDRESS as a root object |
3314 for garbage collection, but not for dumping. */ | 3345 for garbage collection, but not for dumping. */ |
3315 void | 3346 void |
3316 unstaticpro_nodump_1 (Lisp_Object *varaddress, char *varname) | 3347 unstaticpro_nodump_1 (Lisp_Object *varaddress, const Ascbyte *varname) |
3317 { | 3348 { |
3318 Dynarr_delete_object (staticpros, varaddress); | 3349 Dynarr_delete_object (staticpros, varaddress); |
3319 Dynarr_delete_object (staticpro_names, varname); | 3350 Dynarr_delete_object (staticpro_names, varname); |
3320 } | 3351 } |
3321 #endif | 3352 #endif |
3395 mcpros_description_1 | 3426 mcpros_description_1 |
3396 }; | 3427 }; |
3397 | 3428 |
3398 #ifdef DEBUG_XEMACS | 3429 #ifdef DEBUG_XEMACS |
3399 | 3430 |
3400 static const struct memory_description mcpro_one_name_description_1[] = { | |
3401 { XD_ASCII_STRING, 0 }, | |
3402 { XD_END } | |
3403 }; | |
3404 | |
3405 static const struct sized_memory_description mcpro_one_name_description = { | |
3406 sizeof (char *), | |
3407 mcpro_one_name_description_1 | |
3408 }; | |
3409 | |
3410 static const struct memory_description mcpro_names_description_1[] = { | |
3411 XD_DYNARR_DESC (char_ptr_dynarr, &mcpro_one_name_description), | |
3412 { XD_END } | |
3413 }; | |
3414 | |
3415 extern const struct sized_memory_description mcpro_names_description; | |
3416 | |
3417 const struct sized_memory_description mcpro_names_description = { | |
3418 sizeof (char_ptr_dynarr), | |
3419 mcpro_names_description_1 | |
3420 }; | |
3421 | |
3422 /* Help debug crashes gc-marking a mcpro'ed object. */ | 3431 /* Help debug crashes gc-marking a mcpro'ed object. */ |
3423 | 3432 |
3424 Lisp_Object_dynarr *mcpros; | 3433 Lisp_Object_dynarr *mcpros; |
3425 char_ptr_dynarr *mcpro_names; | 3434 const_Ascbyte_ptr_dynarr *mcpro_names; |
3426 | 3435 |
3427 /* Mark the Lisp_Object at non-heap VARADDRESS as a root object for | 3436 /* Mark the Lisp_Object at non-heap VARADDRESS as a root object for |
3428 garbage collection, and for dumping. */ | 3437 garbage collection, and for dumping. */ |
3429 void | 3438 void |
3430 mcpro_1 (Lisp_Object varaddress, char *varname) | 3439 mcpro_1 (Lisp_Object varaddress, const Ascbyte *varname) |
3431 { | 3440 { |
3432 Dynarr_add (mcpros, varaddress); | 3441 Dynarr_add (mcpros, varaddress); |
3433 Dynarr_add (mcpro_names, varname); | 3442 Dynarr_add (mcpro_names, varname); |
3434 } | 3443 } |
3435 | 3444 |
3436 /* External debugging function: Return the name of the variable at offset | 3445 /* External debugging function: Return the name of the variable at offset |
3437 COUNT. */ | 3446 COUNT. */ |
3438 char * | 3447 const Ascbyte * |
3439 mcpro_name (int count) | 3448 mcpro_name (int count) |
3440 { | 3449 { |
3441 return Dynarr_at (mcpro_names, count); | 3450 return Dynarr_at (mcpro_names, count); |
3442 } | 3451 } |
3443 | 3452 |
4470 | 4479 |
4471 for (i = 0; i < countof (lrecord_implementations_table); i++) | 4480 for (i = 0; i < countof (lrecord_implementations_table); i++) |
4472 { | 4481 { |
4473 if (lrecord_stats[i].instances_in_use != 0) | 4482 if (lrecord_stats[i].instances_in_use != 0) |
4474 { | 4483 { |
4475 char buf [255]; | 4484 Ascbyte buf[255]; |
4476 const char *name = lrecord_implementations_table[i]->name; | 4485 const Ascbyte *name = lrecord_implementations_table[i]->name; |
4477 int len = strlen (name); | 4486 int len = strlen (name); |
4478 | 4487 |
4479 if (lrecord_stats[i].bytes_in_use_including_overhead != | 4488 if (lrecord_stats[i].bytes_in_use_including_overhead != |
4480 lrecord_stats[i].bytes_in_use) | 4489 lrecord_stats[i].bytes_in_use) |
4481 { | 4490 { |
4514 { | 4523 { |
4515 if (lcrecord_stats[i].bytes_in_use != 0 | 4524 if (lcrecord_stats[i].bytes_in_use != 0 |
4516 || lcrecord_stats[i].bytes_freed != 0 | 4525 || lcrecord_stats[i].bytes_freed != 0 |
4517 || lcrecord_stats[i].instances_on_free_list != 0) | 4526 || lcrecord_stats[i].instances_on_free_list != 0) |
4518 { | 4527 { |
4519 char buf [255]; | 4528 Ascbyte buf[255]; |
4520 const char *name = lrecord_implementations_table[i]->name; | 4529 const Ascbyte *name = lrecord_implementations_table[i]->name; |
4521 int len = strlen (name); | 4530 int len = strlen (name); |
4522 | 4531 |
4523 sprintf (buf, "%s-storage", name); | 4532 sprintf (buf, "%s-storage", name); |
4524 pl = gc_plist_hack (buf, lcrecord_stats[i].bytes_in_use, pl); | 4533 pl = gc_plist_hack (buf, lcrecord_stats[i].bytes_in_use, pl); |
4525 tgu_val += lcrecord_stats[i].bytes_in_use; | 4534 tgu_val += lcrecord_stats[i].bytes_in_use; |
4957 staticpros_nodump = Dynarr_new2 (Lisp_Object_ptr_dynarr, Lisp_Object *); | 4966 staticpros_nodump = Dynarr_new2 (Lisp_Object_ptr_dynarr, Lisp_Object *); |
4958 Dynarr_resize (staticpros_nodump, 100); /* merely a small optimization */ | 4967 Dynarr_resize (staticpros_nodump, 100); /* merely a small optimization */ |
4959 #ifdef DEBUG_XEMACS | 4968 #ifdef DEBUG_XEMACS |
4960 if (staticpro_nodump_names) | 4969 if (staticpro_nodump_names) |
4961 Dynarr_free (staticpro_nodump_names); | 4970 Dynarr_free (staticpro_nodump_names); |
4962 staticpro_nodump_names = Dynarr_new2 (char_ptr_dynarr, char *); | 4971 staticpro_nodump_names = Dynarr_new2 (const_Ascbyte_ptr_dynarr, |
4972 const Ascbyte *); | |
4963 Dynarr_resize (staticpro_nodump_names, 100); /* ditto */ | 4973 Dynarr_resize (staticpro_nodump_names, 100); /* ditto */ |
4964 #endif | 4974 #endif |
4965 | 4975 |
4966 #ifdef NEW_GC | 4976 #ifdef NEW_GC |
4967 mcpros = Dynarr_new2 (Lisp_Object_dynarr, Lisp_Object); | 4977 mcpros = Dynarr_new2 (Lisp_Object_dynarr, Lisp_Object); |
4968 Dynarr_resize (mcpros, 1410); /* merely a small optimization */ | 4978 Dynarr_resize (mcpros, 1410); /* merely a small optimization */ |
4969 dump_add_root_block_ptr (&mcpros, &mcpros_description); | 4979 dump_add_root_block_ptr (&mcpros, &mcpros_description); |
4970 #ifdef DEBUG_XEMACS | 4980 #ifdef DEBUG_XEMACS |
4971 mcpro_names = Dynarr_new2 (char_ptr_dynarr, char *); | 4981 mcpro_names = Dynarr_new2 (const_Ascbyte_ptr_dynarr, const Ascbyte *); |
4972 Dynarr_resize (mcpro_names, 1410); /* merely a small optimization */ | 4982 Dynarr_resize (mcpro_names, 1410); /* merely a small optimization */ |
4973 dump_add_root_block_ptr (&mcpro_names, &mcpro_names_description); | 4983 dump_add_root_block_ptr (&mcpro_names, |
4984 &const_Ascbyte_ptr_dynarr_description_1); | |
4974 #endif | 4985 #endif |
4975 #endif /* NEW_GC */ | 4986 #endif /* NEW_GC */ |
4976 | 4987 |
4977 consing_since_gc = 0; | 4988 consing_since_gc = 0; |
4978 need_to_check_c_alloca = 0; | 4989 need_to_check_c_alloca = 0; |
5061 | 5072 |
5062 staticpros = Dynarr_new2 (Lisp_Object_ptr_dynarr, Lisp_Object *); | 5073 staticpros = Dynarr_new2 (Lisp_Object_ptr_dynarr, Lisp_Object *); |
5063 Dynarr_resize (staticpros, 1410); /* merely a small optimization */ | 5074 Dynarr_resize (staticpros, 1410); /* merely a small optimization */ |
5064 dump_add_root_block_ptr (&staticpros, &staticpros_description); | 5075 dump_add_root_block_ptr (&staticpros, &staticpros_description); |
5065 #ifdef DEBUG_XEMACS | 5076 #ifdef DEBUG_XEMACS |
5066 staticpro_names = Dynarr_new2 (char_ptr_dynarr, char *); | 5077 staticpro_names = Dynarr_new2 (const_Ascbyte_ptr_dynarr, const Ascbyte *); |
5067 Dynarr_resize (staticpro_names, 1410); /* merely a small optimization */ | 5078 Dynarr_resize (staticpro_names, 1410); /* merely a small optimization */ |
5068 dump_add_root_block_ptr (&staticpro_names, &staticpro_names_description); | 5079 dump_add_root_block_ptr (&staticpro_names, |
5080 &const_Ascbyte_ptr_dynarr_description); | |
5069 #endif | 5081 #endif |
5070 | 5082 |
5071 #ifdef NEW_GC | 5083 #ifdef NEW_GC |
5072 mcpros = Dynarr_new2 (Lisp_Object_dynarr, Lisp_Object); | 5084 mcpros = Dynarr_new2 (Lisp_Object_dynarr, Lisp_Object); |
5073 Dynarr_resize (mcpros, 1410); /* merely a small optimization */ | 5085 Dynarr_resize (mcpros, 1410); /* merely a small optimization */ |
5074 dump_add_root_block_ptr (&mcpros, &mcpros_description); | 5086 dump_add_root_block_ptr (&mcpros, &mcpros_description); |
5075 #ifdef DEBUG_XEMACS | 5087 #ifdef DEBUG_XEMACS |
5076 mcpro_names = Dynarr_new2 (char_ptr_dynarr, char *); | 5088 mcpro_names = Dynarr_new2 (const_Ascbyte_ptr_dynarr, const Ascbyte *); |
5077 Dynarr_resize (mcpro_names, 1410); /* merely a small optimization */ | 5089 Dynarr_resize (mcpro_names, 1410); /* merely a small optimization */ |
5078 dump_add_root_block_ptr (&mcpro_names, &mcpro_names_description); | 5090 dump_add_root_block_ptr (&mcpro_names, |
5091 &const_Ascbyte_ptr_dynarr_description); | |
5079 #endif | 5092 #endif |
5080 #else /* not NEW_GC */ | 5093 #else /* not NEW_GC */ |
5081 init_lcrecord_lists (); | 5094 init_lcrecord_lists (); |
5082 #endif /* not NEW_GC */ | 5095 #endif /* not NEW_GC */ |
5083 } | 5096 } |