X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=OPTIMIZATIONS;h=d8d018f3f164a5a9d57343e495ce1b445627ca77;hb=d04b59670ab69405c4115ea3caac99fd62a4b7ab;hp=53438ab4a996f18951a81d5f7b69e453200b522a;hpb=f846a7a310d630cf538811959916492a28a75fb1;p=sbcl.git diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index 53438ab..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. -------------------------------------------------------------------------------- @@ -204,20 +204,6 @@ 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). -------------------------------------------------------------------------------- -#25 -EQL is implemented generically in situations where this isn't necessary. - -(defun f (x y) - (declare (type (or symbol fixnum) x) - (optimize speed (safety 0) (debug 0))) - (eql x y)) - -SUBTYPEP is smart enough to determine that this type is a subtype -of (and (or (not number) fixnum) (not character)) - -This sitation where the type is (OR NULL FIXNUM) comes up -in cl-bench, for example in the value returned by POSITION. --------------------------------------------------------------------------------- #26 SBCL cannot derive upper bound for I and uses generic arithmetic here: