X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fpolicy.lisp;h=0e7a4ebe08e2e58c75d64427a5e5aa1d4e40c4e5;hb=631ecfcd29ecabd40c3bc5579496e635b30a142e;hp=fae8e1972c635fb35250f3c1ce2807c73bfc52ba;hpb=d604a358d8e5eb5587989e0a4f1d31dbe6ac5ffe;p=sbcl.git diff --git a/src/compiler/policy.lisp b/src/compiler/policy.lisp index fae8e19..0e7a4eb 100644 --- a/src/compiler/policy.lisp +++ b/src/compiler/policy.lisp @@ -102,16 +102,15 @@ *policy-qualities*)) (dependent-binds (loop for (name . info) in *policy-dependent-qualities* - collect `(,name (policy-quality ,n-policy ',name)) - collect `(,name (if (= ,name 1) - ,(policy-dependent-quality-expression info) - ,name))))) - `(let* ((,n-policy (%coerce-to-policy ,thing)) - ,@binds - ,@dependent-binds) - (declare (ignorable ,@*policy-qualities* - ,@(mapcar #'car *policy-dependent-qualities*))) - ,expr))) + collect `(,name (let ((,name (policy-quality ,n-policy ',name))) + (if (= ,name 1) + ,(policy-dependent-quality-expression info) + ,name)))))) + `(let* ((,n-policy (%coerce-to-policy ,thing))) + (declare (ignorable ,n-policy)) + (symbol-macrolet (,@binds + ,@dependent-binds) + ,expr)))) ;;; Dependent qualities (defmacro define-optimization-quality