From: stassats <sta...@us...> - 2014-05-30 17:13:43
|
The branch "master" has been updated in SBCL: via 3c8fe44f1a08e12640f0c3ad34a229d5ff45d920 (commit) from fbd14d16cd17c1b8a5baa604e64660fc011df245 (commit) - Log ----------------------------------------------------------------- commit 3c8fe44f1a08e12640f0c3ad34a229d5ff45d920 Author: Stas Boukarev <sta...@gm...> Date: Fri May 30 20:04:01 2014 +0400 Optimize LOOP REPEAT. Declare the iteration variable when the repeat number is known. --- src/code/loop.lisp | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/code/loop.lisp b/src/code/loop.lisp index 7fb9b04..f853716 100644 --- a/src/code/loop.lisp +++ b/src/code/loop.lisp @@ -1119,8 +1119,10 @@ code to be loaded. (defun loop-do-repeat () (loop-disallow-conditional :repeat) - (let ((form (loop-get-form)) - (type 'integer)) + (let* ((form (loop-get-form)) + (type (if (realp form) + `(mod ,(1+ (ceiling form))) + 'integer))) (let ((var (loop-make-var (gensym "LOOP-REPEAT-") `(ceiling ,form) type))) (push `(if (<= ,var 0) (go end-loop) (decf ,var)) *loop-before-loop*) (push `(if (<= ,var 0) (go end-loop) (decf ,var)) *loop-after-body*) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |