From d79bb75683ceb4eee2f753eb38fa8db99aff4568 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 9 Dec 2018 00:18:36 -0800 Subject: Add make_vector and make_nil_vector This makes the callers a bit easier to read, and doubtless improves efficiency very slightly. It also simplifies possible future changes to allow bignum indexes to buffers. * src/alloc.c (allocate_vectorlike): Prefer ptrdiff_t to size_t when either will do. (make_vector): New function. (Fmake_vector): Use it. * src/buffer.c (syms_of_buffer): * src/bytecode.c (syms_of_bytecode): * src/category.c (Fmake_category_table, init_category_once): * src/ccl.c (syms_of_ccl): * src/character.c (syms_of_character): * src/charset.c (Fdefine_charset_internal) (Ffind_charset_region, Ffind_charset_string): * src/chartab.c (copy_char_table): * src/coding.c (Fdefine_coding_system_internal, syms_of_coding): * src/composite.c (get_composition_id, Fcomposition_get_gstring): * src/composite.h (LGLYPH_NEW): * src/fns.c (concat, Flocale_info, make_hash_table): * src/font.c (font_otf_ValueRecord, font_otf_anchor) (build_style_table, syms_of_font): * src/fontset.c (RFONT_DEF_NEW, fontset_find_font) (dump_fontset, syms_of_fontset): * src/image.c (xpm_make_color_table_v): * src/keyboard.c (modify_event_symbol, menu_bar_items) (parse_menu_item, parse_tool_bar_item, init_tool_bar_items) (syms_of_keyboard): * src/keymap.c (Fdefine_key, describe_map, describe_vector): * src/lread.c (read_vector): * src/macfont.m (macfont_shape): * src/menu.c (init_menu_items): * src/nsfns.m (ns_make_monitor_attribute_list): * src/process.c (conv_sockaddr_to_lisp, network_interface_info): * src/profiler.c (make_log): * src/window.c (Fcurrent_window_configuration): * src/xdisp.c (with_echo_area_buffer_unwind_data) (format_mode_line_unwind_data): * src/xfaces.c (Finternal_make_lisp_face) (Fface_attributes_as_vector): * src/xfns.c (x_make_monitor_attribute_list) (Fx_display_monitor_attributes_list): * src/xfont.c (syms_of_xfont): * src/xselect.c (x_handle_dnd_message): * src/xwidget.c (save_script_callback): Prefer make_nil_vector (N) to Fmake_vector (make_fixnum (N), Qnil). * src/callint.c (Fcall_interactively): * src/charset.c (load_charset_map): * src/chartab.c (Fmake_char_table, uniprop_encode_value_numeric): * src/composite.c (get_composition_id) * src/dispnew.c (Fframe_or_buffer_changed_p) (syms_of_display): * src/fns.c (make_hash_table, maybe_resize_hash_table): * src/font.c (font_style_to_value): * src/fontset.c (FONTSET_ADD, fontset_add): * src/json.c (json_to_lisp): * src/keymap.c (syms_of_keymap): * src/lread.c (init_obarray): * src/profiler.c (make_log, Fprofiler_cpu_log): * src/term.c (term_get_fkeys_1): Prefer make_vector (N, V) to Fmake_vector (make_fixnum (N), V). * src/font.c (build_style_table): * src/macfont.m (macfont_shape): * src/process.c (conv_sockaddr_to_lisp, network_interface_info): Prefer make_uninit_vector if the vector will be initialized soon. * src/lisp.h (make_nil_vector): New function. --- src/process.c | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) (limited to 'src/process.c') diff --git a/src/process.c b/src/process.c index 7e78e172d36..8e0b2349f9d 100644 --- a/src/process.c +++ b/src/process.c @@ -2492,7 +2492,6 @@ Lisp_Object conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len) { Lisp_Object address; - ptrdiff_t i; unsigned char *cp; struct Lisp_Vector *p; @@ -2508,7 +2507,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len) { DECLARE_POINTER_ALIAS (sin, struct sockaddr_in, sa); len = sizeof (sin->sin_addr) + 1; - address = Fmake_vector (make_fixnum (len), Qnil); + address = make_uninit_vector (len); p = XVECTOR (address); p->contents[--len] = make_fixnum (ntohs (sin->sin_port)); cp = (unsigned char *) &sin->sin_addr; @@ -2520,10 +2519,10 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len) DECLARE_POINTER_ALIAS (sin6, struct sockaddr_in6, sa); DECLARE_POINTER_ALIAS (ip6, uint16_t, &sin6->sin6_addr); len = sizeof (sin6->sin6_addr) / 2 + 1; - address = Fmake_vector (make_fixnum (len), Qnil); + address = make_uninit_vector (len); p = XVECTOR (address); p->contents[--len] = make_fixnum (ntohs (sin6->sin6_port)); - for (i = 0; i < len; i++) + for (ptrdiff_t i = 0; i < len; i++) p->contents[i] = make_fixnum (ntohs (ip6[i])); return address; } @@ -2552,16 +2551,14 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len) #endif default: len -= offsetof (struct sockaddr, sa_family) + sizeof (sa->sa_family); - address = Fcons (make_fixnum (sa->sa_family), - Fmake_vector (make_fixnum (len), Qnil)); + address = Fcons (make_fixnum (sa->sa_family), make_nil_vector (len)); p = XVECTOR (XCDR (address)); cp = (unsigned char *) &sa->sa_family + sizeof (sa->sa_family); break; } - i = 0; - while (i < len) - p->contents[i++] = make_fixnum (*cp++); + for (ptrdiff_t i = 0; i < len; i++) + p->contents[i] = make_fixnum (*cp++); return address; } @@ -4363,7 +4360,7 @@ network_interface_info (Lisp_Object ifname) Lisp_Object res = Qnil; Lisp_Object elt; int s; - bool any = 0; + bool any = false; ptrdiff_t count; #if (! (defined SIOCGIFHWADDR && defined HAVE_STRUCT_IFREQ_IFR_HWADDR) \ && defined HAVE_GETIFADDRS && defined LLADDR) @@ -4396,7 +4393,7 @@ network_interface_info (Lisp_Object ifname) if (flags < 0 && sizeof (rq.ifr_flags) < sizeof (flags)) flags = (unsigned short) rq.ifr_flags; - any = 1; + any = true; for (fp = ifflag_table; flags != 0 && fp->flag_sym; fp++) { if (flags & fp->flag_bit) @@ -4420,12 +4417,11 @@ network_interface_info (Lisp_Object ifname) #if defined (SIOCGIFHWADDR) && defined (HAVE_STRUCT_IFREQ_IFR_HWADDR) if (ioctl (s, SIOCGIFHWADDR, &rq) == 0) { - Lisp_Object hwaddr = Fmake_vector (make_fixnum (6), Qnil); - register struct Lisp_Vector *p = XVECTOR (hwaddr); - int n; + Lisp_Object hwaddr = make_uninit_vector (6); + struct Lisp_Vector *p = XVECTOR (hwaddr); - any = 1; - for (n = 0; n < 6; n++) + any = true; + for (int n = 0; n < 6; n++) p->contents[n] = make_fixnum (((unsigned char *) &rq.ifr_hwaddr.sa_data[0]) [n]); @@ -4434,11 +4430,10 @@ network_interface_info (Lisp_Object ifname) #elif defined (HAVE_GETIFADDRS) && defined (LLADDR) if (getifaddrs (&ifap) != -1) { - Lisp_Object hwaddr = Fmake_vector (make_fixnum (6), Qnil); - register struct Lisp_Vector *p = XVECTOR (hwaddr); - struct ifaddrs *it; + Lisp_Object hwaddr = make_nil_vector (6); + struct Lisp_Vector *p = XVECTOR (hwaddr); - for (it = ifap; it != NULL; it = it->ifa_next) + for (struct ifaddrs *it = ifap; it != NULL; it = it->ifa_next) { DECLARE_POINTER_ALIAS (sdl, struct sockaddr_dl, it->ifa_addr); unsigned char linkaddr[6]; @@ -4466,10 +4461,12 @@ network_interface_info (Lisp_Object ifname) res = Fcons (elt, res); elt = Qnil; -#if defined (SIOCGIFNETMASK) && (defined (HAVE_STRUCT_IFREQ_IFR_NETMASK) || defined (HAVE_STRUCT_IFREQ_IFR_ADDR)) +#if (defined SIOCGIFNETMASK \ + && (defined HAVE_STRUCT_IFREQ_IFR_NETMASK \ + || defined HAVE_STRUCT_IFREQ_IFR_ADDR)) if (ioctl (s, SIOCGIFNETMASK, &rq) == 0) { - any = 1; + any = true; #ifdef HAVE_STRUCT_IFREQ_IFR_NETMASK elt = conv_sockaddr_to_lisp (&rq.ifr_netmask, sizeof (rq.ifr_netmask)); #else @@ -4483,8 +4480,8 @@ network_interface_info (Lisp_Object ifname) #if defined (SIOCGIFBRDADDR) && defined (HAVE_STRUCT_IFREQ_IFR_BROADADDR) if (ioctl (s, SIOCGIFBRDADDR, &rq) == 0) { - any = 1; - elt = conv_sockaddr_to_lisp (&rq.ifr_broadaddr, sizeof (rq.ifr_broadaddr)); + any = true; + elt = conv_sockaddr_to_lisp (&rq.ifr_broadaddr, sizeof rq.ifr_broadaddr); } #endif res = Fcons (elt, res); @@ -4493,7 +4490,7 @@ network_interface_info (Lisp_Object ifname) #if defined (SIOCGIFADDR) && defined (HAVE_STRUCT_IFREQ_IFR_ADDR) if (ioctl (s, SIOCGIFADDR, &rq) == 0) { - any = 1; + any = true; elt = conv_sockaddr_to_lisp (&rq.ifr_addr, sizeof (rq.ifr_addr)); } #endif -- cgit v1.2.1