]> code.delx.au - gnu-emacs/commitdiff
Omit XLI (init) == 0 optimization in make-vector
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 5 Feb 2016 22:37:09 +0000 (14:37 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 5 Feb 2016 22:37:38 +0000 (14:37 -0800)
* src/alloc.c (Fmake_vector): Simplify by omitting the (XLI (init)
== 0) case, as this optimization is probably not worth the hassle.
Just for the record, the test for that case could have been
(XLI (init) % ((EMACS_UINT) -1 / UCHAR_MAX) == 0) (!),
assuming the typical platform with no padding bits and where
conversion to int omits the most significant bits.

src/alloc.c

index 031c78c07ca1a3e9700f2b278de9b30694a8f237..92945bc8afc45a966aee1494d8cfdf09a85cbf30 100644 (file)
@@ -3321,14 +3321,9 @@ See also the function `vector'.  */)
   (Lisp_Object length, Lisp_Object init)
 {
   CHECK_NATNUM (length);
-
   struct Lisp_Vector *p = allocate_vector (XFASTINT (length));
-  if (XLI (init) == 0)
-    memset (p->contents, 0, XFASTINT (length) * sizeof p->contents[0]);
-  else
-    for (ptrdiff_t i = 0; i < XFASTINT (length); i++)
-      p->contents[i] = init;
-
+  for (ptrdiff_t i = 0; i < XFASTINT (length); i++)
+    p->contents[i] = init;
   return make_lisp_ptr (p, Lisp_Vectorlike);
 }