1.0.12.30: trivial compiler touchups
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 12 Dec 2007 12:19:42 +0000 (12:19 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 12 Dec 2007 12:19:42 +0000 (12:19 +0000)
  * Use &BODY for DEFINE-VOP bodies instead of &REST.

  * Expand body of DO-USES only once, as per XXX note. Only 56 to
    go... Also make it return the RESULT form if there was just a
    single use -- not that we seem to be using the RESULT form at all
    currently.

src/compiler/macros.lisp
src/compiler/meta-vmdef.lisp
version.lisp-expr

index 9d331bf..8f1a836 100644 (file)
 
 ;;; Iterate over the uses of LVAR, binding NODE to each one
 ;;; successively.
-;;;
-;;; XXX Could change it not to replicate the code someday perhaps...
 (defmacro do-uses ((node-var lvar &optional result) &body body)
   (with-unique-names (uses)
     `(let ((,uses (lvar-uses ,lvar)))
-       (if (listp ,uses)
-           (dolist (,node-var ,uses ,result)
-             ,@body)
-           (block nil
-             (let ((,node-var ,uses))
-               ,@body))))))
+       (block nil
+         (flet ((do-1-use (,node-var)
+                  ,@body))
+           (if (listp ,uses)
+               (dolist (node ,uses)
+                 (do-1-use node))
+               (do-1-use ,uses)))
+         ,result))))
 
 ;;; Iterate over the nodes in BLOCK, binding NODE-VAR to the each node
 ;;; and LVAR-VAR to the node's LVAR. The only keyword option is
index deaeecc..fbecd26 100644 (file)
 ;;; :MOVE-ARGS {NIL | :FULL-CALL | :LOCAL-CALL | :KNOWN-RETURN}
 ;;;     Indicates if and how the more args should be moved into a
 ;;;     different frame.
-(def!macro define-vop ((name &optional inherits) &rest specs)
+(def!macro define-vop ((name &optional inherits) &body specs)
   (declare (type symbol name))
   ;; Parse the syntax into a VOP-PARSE structure, and then expand into
   ;; code that creates the appropriate VOP-INFO structure at load time.
index 66e285d..a4267be 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.12.29"
+"1.0.12.30"