Skip to content

Commit

Permalink
additional list seeking transformations
Browse files Browse the repository at this point in the history
 * Implement TRANSFORM-LIST-PRED-SEEK, very much akin to
   TRANSFORM-LIST-ITEM-SEEK, and use it to optimize MEMBER-IF[-NOT],
   ASSOC-IF[-NOT], and RASSOC-IF[-NOT].

 * Implement full versions of list seeking functions in terms of the
   specialized versions: in some cases this is a win, in some cases a
   loss -- but the number of places where functionality is duplicated
   is reduced, which should be easier on the maintenance and less
   bug-prone.

 * Add a TRANSFORM-LIST-ITEM-SEEK transform for RASSOC.

 * LVAR-FOR-NAMED-FUNCTION was a restricted form of LVAR-FUN-IS.  Do
   away with the former, and move the latter to ir1util.lisp.
  • Loading branch information
nikodemus committed Jul 31, 2008
1 parent 9264b51 commit 1db4f16
Show file tree
Hide file tree
Showing 7 changed files with 327 additions and 139 deletions.
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ changes in sbcl-1.0.20 relative to 1.0.19:
SB-C::STACK-ALLOCATE-DYNAMIC-EXTENT, SB-C::STACK-ALLOCATE-VECTOR,
and SB-C::STACK-ALLOCATE-VALUE-CELLS no longer exist. See documentation
and SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT* for details.
* optimization: ASSOC-IF, ASSOC-IF-NOT, MEMBER-IF, MEMBER-IF-NOT,
RASSOC, RASSOC-IF, and RASSOC-IF-NOT are now equally efficient
as ASSOC and MEMEBER.
* optimization: runtime lookup of function definitions can be
elided in more cases, eg: (let ((x 'foo)) (funcall foo)).
* bug fix: fixed #427: unused local aliens no longer cause compiler
Expand Down
20 changes: 20 additions & 0 deletions package-data-list.lisp-expr
Original file line number Diff line number Diff line change
Expand Up @@ -1185,6 +1185,10 @@ is a good idea, but see SB-SYS re. blurring of boundaries."
"%ARRAY-FILL-POINTER-P" "%ARRAY-RANK"
"%ASSOC"
"%ASSOC-EQ"
"%ASSOC-IF"
"%ASSOC-IF-KEY"
"%ASSOC-IF-NOT"
"%ASSOC-IF-NOT-KEY"
"%ASSOC-KEY"
"%ASSOC-KEY-EQ"
"%ASSOC-KEY-TEST"
Expand Down Expand Up @@ -1230,13 +1234,29 @@ is a good idea, but see SB-SYS re. blurring of boundaries."
"%MASK-FIELD"
"%MEMBER"
"%MEMBER-EQ"
"%MEMBER-IF"
"%MEMBER-IF-KEY"
"%MEMBER-IF-NOT"
"%MEMBER-IF-NOT-KEY"
"%MEMBER-KEY"
"%MEMBER-KEY-EQ"
"%MEMBER-KEY-TEST"
"%MEMBER-KEY-TEST-NOT"
"%MEMBER-TEST"
"%MEMBER-TEST-NOT"
"%NEGATE" "%POW" "%PUTHASH"
"%RASSOC"
"%RASSOC-EQ"
"%RASSOC-IF"
"%RASSOC-IF-KEY"
"%RASSOC-IF-NOT"
"%RASSOC-IF-NOT-KEY"
"%RASSOC-KEY"
"%RASSOC-KEY-EQ"
"%RASSOC-KEY-TEST"
"%RASSOC-KEY-TEST-NOT"
"%RASSOC-TEST"
"%RASSOC-TEST-NOT"
"%RAW-BITS" "%RAW-BITS-WITH-OFFSET" "%VECTOR-RAW-BITS"
"%RAW-REF-COMPLEX-DOUBLE" "%RAW-REF-COMPLEX-LONG"
"%RAW-REF-COMPLEX-SINGLE" "%RAW-REF-DOUBLE"
Expand Down
Loading

0 comments on commit 1db4f16

Please sign in to comment.