Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv14930
Modified Files: compiler.lisp Log Message: Added "fast" implementations of cddr and cdddr, in an effort to reduce cal/ret run-time and code-size overhead in list processing.
Date: Sat Apr 17 11:33:45 2004 Author: ffjeld
Index: movitz/compiler.lisp diff -u movitz/compiler.lisp:1.52 movitz/compiler.lisp:1.53 --- movitz/compiler.lisp:1.52 Sat Apr 17 10:10:51 2004 +++ movitz/compiler.lisp Sat Apr 17 11:33:45 2004 @@ -8,7 +8,7 @@ ;;;; Created at: Wed Oct 25 12:30:49 2000 ;;;; Distribution: See the accompanying file COPYING. ;;;; -;;;; $Id: compiler.lisp,v 1.52 2004/04/17 14:10:51 ffjeld Exp $ +;;;; $Id: compiler.lisp,v 1.53 2004/04/17 15:33:45 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -2054,6 +2054,17 @@ (setq p `((:call (:edi ,(global-constant-offset newf)))) next-pc (nthcdr 2 pc)) (explain nil "Changed [~S ~S] to ~S" i i2 newf))) + ((and (global-funcall-p i '(fast-cdr)) + (global-funcall-p i2 '(fast-cdr)) + (global-funcall-p i3 '(fast-cdr))) + (setq p `((:call (:edi ,(global-constant-offset 'fast-cdddr)))) + next-pc (nthcdr 3 pc)) + (explain nil "Changed (cdr (cdr (cdr :eax))) to (cdddr :eax).")) + ((and (global-funcall-p i '(fast-cdr)) + (global-funcall-p i2 '(fast-cdr))) + (setq p `((:call (:edi ,(global-constant-offset 'fast-cddr)))) + next-pc (nthcdr 2 pc)) + (explain nil "Changed (cdr (cdr :eax)) to (cddr :eax).")) ((and (load-stack-frame-p i) (eq :eax (twop-dst i)) (global-funcall-p i2 '(fast-car fast-cdr)) (preserves-stack-location-p i3 (load-stack-frame-p i))