[movitz-cvs] CVS update: movitz/assembly-syntax.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Mon Sep 6 10:07:04 UTC 2004
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv31132
Modified Files:
assembly-syntax.lisp
Log Message:
Slightly cleaned up assembly-macroexpand, and added a work-around for
an apparent bug in CMUCL's loop.
Date: Mon Sep 6 12:07:03 2004
Author: ffjeld
Index: movitz/assembly-syntax.lisp
diff -u movitz/assembly-syntax.lisp:1.3 movitz/assembly-syntax.lisp:1.4
--- movitz/assembly-syntax.lisp:1.3 Wed Apr 21 17:05:39 2004
+++ movitz/assembly-syntax.lisp Mon Sep 6 12:07:03 2004
@@ -9,7 +9,7 @@
;;;; Created at: Thu Nov 9 17:34:37 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: assembly-syntax.lisp,v 1.3 2004/04/21 15:05:39 ffjeld Exp $
+;;;; $Id: assembly-syntax.lisp,v 1.4 2004/09/06 10:07:03 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -26,20 +26,18 @@
expander))
(defun assembly-macroexpand (prg amenv)
- (let* ((fix-tail nil)
- (new-prg
- (loop for (p . tail) on prg
- as expander = (and (consp p)
- (symbolp (car p))
- (assembly-macro-expander (car p) amenv))
- if expander
- append (funcall expander p)
- else if (consp p)
- append (list (assembly-macroexpand p amenv))
- else append (list p)
- unless (listp tail)
- do (setf fix-tail tail))))
- (when fix-tail
- (setf (cdr (last new-prg)) fix-tail))
- new-prg))
+ #+cmu (declare (optimize (safety 0))) ; Circumvent CMUCL bug in loop for-as-on-list.
+ (loop for (p . tail) on prg
+ as expander = (and (consp p)
+ (symbolp (car p))
+ (assembly-macro-expander (car p) amenv))
+ if expander
+ append (funcall expander p) into result
+ else if (consp p)
+ append (list (assembly-macroexpand p amenv)) into result
+ else append (list p) into result
+ when (not (listp tail))
+ do (setf (cdr (last result)) tail)
+ (return result)
+ finally (return result)))
More information about the Movitz-cvs
mailing list