X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=OPTIMIZATIONS;h=d8d018f3f164a5a9d57343e495ce1b445627ca77;hb=d04b59670ab69405c4115ea3caac99fd62a4b7ab;hp=5474bd217767e00933db55303452d21d560a5bd7;hpb=bffa99d35c7d50ac46b9eb7dbe25d1ab1a0e6145;p=sbcl.git diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index 5474bd2..d8d018f 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -187,9 +187,9 @@ stack-allocation of structures is impossible. -------------------------------------------------------------------------------- #21 (defun-with-dx foo () - (let ((dx (list (list 1 2) (list 3 4) + (let ((dx (list (list 1 2) (list 3 4)))) (declare (dynamic-extent dx)) - ...))))) + ...)) External list in DX is allocated on stack, but internal are not. -------------------------------------------------------------------------------- @@ -203,3 +203,18 @@ Python does not know that &REST lists are LISTs (and cannot derive it). a. Iterations on &REST lists, returning them as VALUES could be rewritten with &MORE vectors. b. Implement local unknown-values mv-call (useful for fast type checking). +-------------------------------------------------------------------------------- +#26 +SBCL cannot derive upper bound for I and uses generic arithmetic here: + +(defun foo (l) + (declare (vector l)) + (dotimes (i (length l)) + (if (block nil + (map-foo (lambda (x) (if x (return t))) + l)) + t + nil))) + +(So the constraint propagator or a possible future SSA-convertor +should know the connection between an NLE and its CLEANUP.)