From f171f5d447f88f542730a06a2c72e84301f07f30 Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Wed, 12 Dec 2007 12:19:42 +0000 Subject: [PATCH] 1.0.12.30: trivial compiler touchups * 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 | 16 ++++++++-------- src/compiler/meta-vmdef.lisp | 2 +- version.lisp-expr | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/compiler/macros.lisp b/src/compiler/macros.lisp index 9d331bf..8f1a836 100644 --- a/src/compiler/macros.lisp +++ b/src/compiler/macros.lisp @@ -559,17 +559,17 @@ ;;; 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 diff --git a/src/compiler/meta-vmdef.lisp b/src/compiler/meta-vmdef.lisp index deaeecc..fbecd26 100644 --- a/src/compiler/meta-vmdef.lisp +++ b/src/compiler/meta-vmdef.lisp @@ -1682,7 +1682,7 @@ ;;; :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. diff --git a/version.lisp-expr b/version.lisp-expr index 66e285d..a4267be 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4