mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-04 06:31:13 -08:00
Simplify make-list implementation
* src/alloc.c (Fmake_list): Don’t unroll loop, as the complexity is not worth it these days.
This commit is contained in:
parent
44765de200
commit
0dfd9a6918
1 changed files with 3 additions and 33 deletions
36
src/alloc.c
36
src/alloc.c
|
|
@ -2872,44 +2872,14 @@ usage: (list &rest OBJECTS) */)
|
|||
|
||||
DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0,
|
||||
doc: /* Return a newly created list of length LENGTH, with each element being INIT. */)
|
||||
(register Lisp_Object length, Lisp_Object init)
|
||||
(Lisp_Object length, Lisp_Object init)
|
||||
{
|
||||
register Lisp_Object val;
|
||||
register EMACS_INT size;
|
||||
|
||||
Lisp_Object val = Qnil;
|
||||
CHECK_NATNUM (length);
|
||||
size = XFASTINT (length);
|
||||
|
||||
val = Qnil;
|
||||
while (size > 0)
|
||||
for (EMACS_INT size = XFASTINT (length); 0 < size; size--)
|
||||
{
|
||||
val = Fcons (init, val);
|
||||
--size;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
val = Fcons (init, val);
|
||||
--size;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
val = Fcons (init, val);
|
||||
--size;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
val = Fcons (init, val);
|
||||
--size;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
val = Fcons (init, val);
|
||||
--size;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QUIT;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue