aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPaul Eggert2015-01-25 08:33:41 -0800
committerPaul Eggert2015-01-25 09:11:25 -0800
commita3689d3c661fe36df971c875760f8d500b5ae994 (patch)
tree80521f91ec481457cb7f8fcb9f88b3a42e557c8e /src/alloc.c
parentc4e54f962714056df6c57c21f694544f237d5f4c (diff)
downloademacs-a3689d3c661fe36df971c875760f8d500b5ae994.tar.gz
emacs-a3689d3c661fe36df971c875760f8d500b5ae994.zip
Count MANY function args more reliably
* alloc.c (Fgc_status, purecopy, unbind_to, garbage_collect_1): * buffer.c (Fbuffer_list, Fkill_buffer): * callint.c (read_file_name, Fcall_interactively): * charset.c (Fset_charset_priority, syms_of_charset): * chartab.c (uniprop_encode_value_numeric): * coding.c (syms_of_coding): * composite.c (syms_of_composite): * data.c (wrong_range): * dbusbind.c (syms_of_dbusbind): * dired.c (file_attributes): * editfns.c (Fdecode_time, update_buffer_properties, format2): * eval.c (run_hook_with_args_2, apply1, call1, call2, call3) (call4, call5, call6, call7): * fileio.c (Finsert_file_contents, choose_write_coding_system) (Fcar_less_than_car, build_annotations, auto_save_error): * filelock.c (get_boot_time): * fns.c (internal_equal, nconc2, Fyes_or_no_p, Fwidget_apply): (maybe_resize_hash_table, secure_hash): * font.c (font_style_to_value, font_open_by_name, Flist_fonts): * fontset.c (fontset_add, Fset_fontset_font): * ftfont.c (ftfont_lookup_cache): * gtkutil.c (xg_get_font): * insdel.c (signal_before_change, signal_after_change): * keymap.c (append_key): * lread.c (load_warn_old_style_backquotes, Fload, init_lread): * minibuf.c (Fread_buffer): * print.c (print_preprocess): * process.c (Fformat_network_address, Fmake_network_process) (server_accept_connection): * sound.c (Fplay_sound_internal): * term.c (Fsuspend_tty, Fresume_tty): * window.c (window_list): * xdisp.c (run_redisplay_end_trigger_hook, add_to_log) (message_with_string): * xfaces.c (Fx_list_fonts): * xfont.c (syms_of_xfont): * xselect.c (x_handle_selection_request) (x_handle_selection_clear, x_clear_frame_selections) (x_clipboard_manager_error_1): Prefer CALLMANY and CALLN to counting args by hand. * doc.c (reread_doc_file): Remove unused code. * fns.c (concat2, concat3): Redo to avoid need for local-var vector. (cmpfn_user_defined, hashfn_user_defined, Fmaphash): Prefer call1 and call2 to Ffuncall. * keyboard.c (safe_run_hook_funcall, safe_run_hooks): Use struct literal rather than a local var, for simplicity. * keymap.c (where_is_internal): Use NULL rather than a pointer to unused args. * lisp.h (CALLMANY, CALLN): New macros. * sound.c (Fplay_sound_internal): Coalesce duplicate code. Fixes: bug#19634
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c108
1 files changed, 46 insertions, 62 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 571b2b03a29..9aa94b8a559 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4408,19 +4408,17 @@ DEFUN ("gc-status", Fgc_status, Sgc_status, 0, 0, "",
4408 doc: /* Show information about live and zombie objects. */) 4408 doc: /* Show information about live and zombie objects. */)
4409 (void) 4409 (void)
4410{ 4410{
4411 Lisp_Object args[8], zombie_list = Qnil; 4411 Lisp_Object zombie_list = Qnil;
4412 EMACS_INT i; 4412 for (int i = 0; i < min (MAX_ZOMBIES, nzombies); i++)
4413 for (i = 0; i < min (MAX_ZOMBIES, nzombies); i++)
4414 zombie_list = Fcons (zombies[i], zombie_list); 4413 zombie_list = Fcons (zombies[i], zombie_list);
4415 args[0] = build_string ("%d GCs, avg live/zombies = %.2f/%.2f (%f%%), max %d/%d\nzombies: %S"); 4414 return CALLN (Fmessage,
4416 args[1] = make_number (ngcs); 4415 build_string ("%d GCs, avg live/zombies = %.2f/%.2f"
4417 args[2] = make_float (avg_live); 4416 " (%f%%), max %d/%d\nzombies: %S"),
4418 args[3] = make_float (avg_zombies); 4417 make_number (ngcs), make_float (avg_live),
4419 args[4] = make_float (avg_zombies / avg_live / 100); 4418 make_float (avg_zombies),
4420 args[5] = make_number (max_live); 4419 make_float (avg_zombies / avg_live / 100),
4421 args[6] = make_number (max_zombies); 4420 make_number (max_live), make_number (max_zombies),
4422 args[7] = zombie_list; 4421 zombie_list);
4423 return Fmessage (8, args);
4424} 4422}
4425 4423
4426#endif /* GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES */ 4424#endif /* GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES */
@@ -5297,10 +5295,8 @@ purecopy (Lisp_Object obj)
5297 } 5295 }
5298 else 5296 else
5299 { 5297 {
5300 Lisp_Object args[2]; 5298 Lisp_Object fmt = build_pure_c_string ("Don't know how to purify: %S");
5301 args[0] = build_pure_c_string ("Don't know how to purify: %S"); 5299 Fsignal (Qerror, list1 (CALLN (Fformat, fmt, obj)));
5302 args[1] = obj;
5303 Fsignal (Qerror, (Fcons (Fformat (2, args), Qnil)));
5304 } 5300 }
5305 5301
5306 if (HASH_TABLE_P (Vpurify_flag)) /* Hash consing. */ 5302 if (HASH_TABLE_P (Vpurify_flag)) /* Hash consing. */
@@ -5678,56 +5674,44 @@ garbage_collect_1 (void *end)
5678 } 5674 }
5679 5675
5680 unbind_to (count, Qnil); 5676 unbind_to (count, Qnil);
5681 {
5682 Lisp_Object total[11];
5683 int total_size = 10;
5684
5685 total[0] = list4 (Qconses, make_number (sizeof (struct Lisp_Cons)),
5686 bounded_number (total_conses),
5687 bounded_number (total_free_conses));
5688
5689 total[1] = list4 (Qsymbols, make_number (sizeof (struct Lisp_Symbol)),
5690 bounded_number (total_symbols),
5691 bounded_number (total_free_symbols));
5692
5693 total[2] = list4 (Qmiscs, make_number (sizeof (union Lisp_Misc)),
5694 bounded_number (total_markers),
5695 bounded_number (total_free_markers));
5696
5697 total[3] = list4 (Qstrings, make_number (sizeof (struct Lisp_String)),
5698 bounded_number (total_strings),
5699 bounded_number (total_free_strings));
5700
5701 total[4] = list3 (Qstring_bytes, make_number (1),
5702 bounded_number (total_string_bytes));
5703 5677
5704 total[5] = list3 (Qvectors, 5678 Lisp_Object total[] = {
5705 make_number (header_size + sizeof (Lisp_Object)), 5679 list4 (Qconses, make_number (sizeof (struct Lisp_Cons)),
5706 bounded_number (total_vectors)); 5680 bounded_number (total_conses),
5707 5681 bounded_number (total_free_conses)),
5708 total[6] = list4 (Qvector_slots, make_number (word_size), 5682 list4 (Qsymbols, make_number (sizeof (struct Lisp_Symbol)),
5709 bounded_number (total_vector_slots), 5683 bounded_number (total_symbols),
5710 bounded_number (total_free_vector_slots)); 5684 bounded_number (total_free_symbols)),
5711 5685 list4 (Qmiscs, make_number (sizeof (union Lisp_Misc)),
5712 total[7] = list4 (Qfloats, make_number (sizeof (struct Lisp_Float)), 5686 bounded_number (total_markers),
5713 bounded_number (total_floats), 5687 bounded_number (total_free_markers)),
5714 bounded_number (total_free_floats)); 5688 list4 (Qstrings, make_number (sizeof (struct Lisp_String)),
5715 5689 bounded_number (total_strings),
5716 total[8] = list4 (Qintervals, make_number (sizeof (struct interval)), 5690 bounded_number (total_free_strings)),
5717 bounded_number (total_intervals), 5691 list3 (Qstring_bytes, make_number (1),
5718 bounded_number (total_free_intervals)); 5692 bounded_number (total_string_bytes)),
5719 5693 list3 (Qvectors,
5720 total[9] = list3 (Qbuffers, make_number (sizeof (struct buffer)), 5694 make_number (header_size + sizeof (Lisp_Object)),
5721 bounded_number (total_buffers)); 5695 bounded_number (total_vectors)),
5696 list4 (Qvector_slots, make_number (word_size),
5697 bounded_number (total_vector_slots),
5698 bounded_number (total_free_vector_slots)),
5699 list4 (Qfloats, make_number (sizeof (struct Lisp_Float)),
5700 bounded_number (total_floats),
5701 bounded_number (total_free_floats)),
5702 list4 (Qintervals, make_number (sizeof (struct interval)),
5703 bounded_number (total_intervals),
5704 bounded_number (total_free_intervals)),
5705 list3 (Qbuffers, make_number (sizeof (struct buffer)),
5706 bounded_number (total_buffers)),
5722 5707
5723#ifdef DOUG_LEA_MALLOC 5708#ifdef DOUG_LEA_MALLOC
5724 total_size++; 5709 list4 (Qheap, make_number (1024),
5725 total[10] = list4 (Qheap, make_number (1024), 5710 bounded_number ((mallinfo ().uordblks + 1023) >> 10),
5726 bounded_number ((mallinfo ().uordblks + 1023) >> 10), 5711 bounded_number ((mallinfo ().fordblks + 1023) >> 10)),
5727 bounded_number ((mallinfo ().fordblks + 1023) >> 10));
5728#endif 5712#endif
5729 retval = Flist (total_size, total); 5713 };
5730 } 5714 retval = CALLMANY (Flist, total);
5731 5715
5732#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES 5716#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES
5733 { 5717 {