0.8.21.30:
[sbcl.git] / OPTIMIZATIONS
index 5474bd2..f17f2ee 100644 (file)
@@ -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,32 @@ 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).
+--------------------------------------------------------------------------------
+#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:
+
+(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.)