From 0dfd9a69186e12e53b8aa759c47b9747de92db43 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 25 Jan 2017 19:07:57 -0800 Subject: [PATCH] Simplify make-list implementation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * src/alloc.c (Fmake_list): Don’t unroll loop, as the complexity is not worth it these days. --- src/alloc.c | 36 +++--------------------------------- 1 file changed, 3 insertions(+), 33 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 1a6d4e2d565..f7da7e44f29 100644 --- a/src/alloc.c +++ b/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; } -- 2.39.5