X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=OPTIMIZATIONS;h=3b6ebe1af9ee460cc7237c6d6e2bab75cd73799f;hb=c177b7710a9a8668f3bf8567726370b7dbb41726;hp=28068847ba715b735ebc6659da740fd0c7140322;hpb=043a8820506178134574627c2d7f07dc79070bd8;p=sbcl.git diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index 2806884..3b6ebe1 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -90,25 +90,14 @@ VOP DATA-VECTOR-SET/SIMPLE-STRING V2!14[EDI] t32[EAX] t30[S2]>t33[CL] (incf x))))))) (format t "~A~%" x))) -------------------------------------------------------------------------------- -#7 -(defun foo (x) - (declare (optimize speed (debug 0))) - (if (< x 0) x (foo (1- x)))) - -SBCL generates a full call of FOO (but CMUCL does not). - -Partial explanation: CMUCL does generate a full (tail) call to FOO if -*BLOCK-COMPILE* is NIL. Maybe this is because in that case CMUCL doesn't -generate a temporary(?) function in its IR1-TRANSLATOR for %DEFUN? --------------------------------------------------------------------------------- #8 (defun foo (d) (declare (optimize (speed 3) (safety 0) (debug 0))) (declare (type (double-float 0d0 1d0) d)) (loop for i fixnum from 1 to 5 - for x1 double-float = (sin d) ;;; !!! - do (loop for j fixnum from 1 to 4 - sum x1 double-float))) + for x1 double-float = (sin d) ;;; !!! + do (loop for j fixnum from 1 to 4 + sum x1 double-float))) Without the marked declaration Python will use boxed representation for X1.