From: Paul F. Dietz Date: Wed, 9 Feb 2005 23:48:45 +0000 (+0000) Subject: Added optimization opportunity #25: improved type-based optimization X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=9afd3958cf7b5ad829c61a4a85956cf783e500f5;p=sbcl.git Added optimization opportunity #25: improved type-based optimization of EQL forms. --- diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index 5474bd2..50d3417 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -203,3 +203,17 @@ 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.