aboutsummaryrefslogtreecommitdiffstats
path: root/src/font.c
diff options
context:
space:
mode:
authorPaul Eggert2019-01-09 09:52:38 -0800
committerPaul Eggert2019-01-09 09:59:10 -0800
commita84650334e30b2451bf4a8957bf2d57ade296d4e (patch)
treeb5642bb98eb89733def116fb6d864f74855023e2 /src/font.c
parentf9d0fd6c1953138f7473a22917a1508740b2ce40 (diff)
downloademacs-a84650334e30b2451bf4a8957bf2d57ade296d4e.tar.gz
emacs-a84650334e30b2451bf4a8957bf2d57ade296d4e.zip
Use shortcuts for Flength
When calculating the length of a Lisp object whose type is known, use a specialized length operation on it to save a bit of runtime overhead. * src/callint.c (Fcall_interactively): * src/minibuf.c (read_minibuf_unwind): Use ASIZE rather than Flength on values that must be vectors. * src/charset.c (Fsort_charsets): * src/coding.c (detect_coding_sjis): (Fdefine_coding_system_internal): * src/data.c (wrong_choice): * src/eval.c (Flet, eval_sub, Fapply, apply_lambda): * src/fns.c (sort_list): * src/font.c (font_vconcat_entity_vectors) (font_find_for_lface): * src/frame.c (Fmodify_frame_parameters): * src/fringe.c (get_logical_fringe_bitmap): * src/ftfont.c (ftfont_get_open_type_spec): * src/gtkutil.c (xg_print_frames_dialog): * src/lread.c (read1, read_vector): * src/keymap.c (Fkey_description): * src/kqueue.c (Fkqueue_add_watch): * src/macfont.m (macfont_get_open_type_spec): * src/menu.c (parse_single_submenu, x_popup_menu_1): * src/minibuf.c (Finternal_complete_buffer): * src/nsfont.m (ns_findfonts, nsfont_list_family): * src/process.c (Fmake_process): * src/search.c (Fset_match_data): * src/xfaces.c (Fx_family_fonts): Use list_length rather than Flength on values that must be lists. * src/fns.c (list_length): New function. (Flength): Use it. * src/nsfont.m (ns_findfonts): Use !NILP (x) rather than XFIXNUM (Flength (x)) != 0. * src/xdisp.c (store_mode_line_string): Use SCHARS rather than Flength on values that must be strings.
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/font.c b/src/font.c
index cf68160e59c..3fc77a1d76a 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2174,13 +2174,12 @@ font_score (Lisp_Object entity, Lisp_Object *spec_prop)
2174static Lisp_Object 2174static Lisp_Object
2175font_vconcat_entity_vectors (Lisp_Object list) 2175font_vconcat_entity_vectors (Lisp_Object list)
2176{ 2176{
2177 EMACS_INT nargs = XFIXNAT (Flength (list)); 2177 ptrdiff_t nargs = list_length (list);
2178 Lisp_Object *args; 2178 Lisp_Object *args;
2179 USE_SAFE_ALLOCA; 2179 USE_SAFE_ALLOCA;
2180 SAFE_ALLOCA_LISP (args, nargs); 2180 SAFE_ALLOCA_LISP (args, nargs);
2181 ptrdiff_t i;
2182 2181
2183 for (i = 0; i < nargs; i++, list = XCDR (list)) 2182 for (ptrdiff_t i = 0; i < nargs; i++, list = XCDR (list))
2184 args[i] = XCAR (list); 2183 args[i] = XCAR (list);
2185 Lisp_Object result = Fvconcat (nargs, args); 2184 Lisp_Object result = Fvconcat (nargs, args);
2186 SAFE_FREE (); 2185 SAFE_FREE ();
@@ -3241,7 +3240,7 @@ font_find_for_lface (struct frame *f, Lisp_Object *attrs, Lisp_Object spec, int
3241 3240
3242 if (! NILP (alters)) 3241 if (! NILP (alters))
3243 { 3242 {
3244 EMACS_INT alterslen = XFIXNAT (Flength (alters)); 3243 EMACS_INT alterslen = list_length (alters);
3245 SAFE_ALLOCA_LISP (family, alterslen + 2); 3244 SAFE_ALLOCA_LISP (family, alterslen + 2);
3246 for (i = 0; CONSP (alters); i++, alters = XCDR (alters)) 3245 for (i = 0; CONSP (alters); i++, alters = XCDR (alters))
3247 family[i] = XCAR (alters); 3246 family[i] = XCAR (alters);