X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fassem.lisp;h=716496c98fad0aeac996e330304e648d4588e909;hb=f8893c7c658bf9d9e0757c63e47af2fdea810f04;hp=22f1c2e5dc15b1ef5602a99f79686fcecd1a78bf;hpb=073501ed49414d9638cb41c05fb80627529f796d;p=sbcl.git diff --git a/src/compiler/assem.lisp b/src/compiler/assem.lisp index 22f1c2e..716496c 100644 --- a/src/compiler/assem.lisp +++ b/src/compiler/assem.lisp @@ -156,9 +156,7 @@ ;;; BACK-PATCH-FUN so we can avoid this nastiness altogether. (defmacro with-modified-segment-index-and-posn ((segment index posn) &body body) - (let ((n-segment (gensym "SEGMENT")) - (old-index (gensym "OLD-INDEX-")) - (old-posn (gensym "OLD-POSN-"))) + (with-unique-names (n-segment old-index old-posn) `(let* ((,n-segment ,segment) (,old-index (segment-current-index ,n-segment)) (,old-posn (segment-current-posn ,n-segment))) @@ -172,7 +170,7 @@ ;;;; structures/types used by the scheduler -(sb!c:def-boolean-attribute instruction +(!def-boolean-attribute instruction ;; This attribute is set if the scheduler can freely flush this ;; instruction if it thinks it is not needed. Examples are NOP and ;; instructions that have no side effect not described by the @@ -475,7 +473,7 @@ ;; nothing to do, then emit a nop. ### Note: despite the ;; fact that this is a loop, it really won't work for ;; repetitions other then zero and one. For example, if -p ;; the branch has two dependents and one of them dpends on + ;; the branch has two dependents and one of them dpends on ;; the other, then the stuff that grabs a dependent could ;; easily grab the wrong one. But I don't feel like fixing ;; this because it doesn't matter for any of the @@ -770,7 +768,7 @@ p ;; the branch has two dependents and one of them dpends on (declare (type segment segment) (type annotation note)) (when (annotation-posn note) - (error "attempt to emit ~S a second time")) + (error "attempt to emit ~S a second time" note)) (setf (annotation-posn note) (segment-current-posn segment)) (setf (annotation-index note) (segment-current-index segment)) (let ((last (segment-last-annotation segment)) @@ -1125,7 +1123,7 @@ p ;; the branch has two dependents and one of them dpends on ;;; FIXME: The way this macro uses MACROEXPAND internally breaks my ;;; old assumptions about macros which are needed both in the host and ;;; the target. (This is more or less the same way that PUSH-IN, -;;; DELETEF-IN, and DEF-BOOLEAN-ATTRIBUTE break my old assumptions, +;;; DELETEF-IN, and !DEF-BOOLEAN-ATTRIBUTE break my old assumptions, ;;; except that they used GET-SETF-EXPANSION instead of MACROEXPAND to ;;; do the dirty deed.) The quick and dirty "solution" here is the ;;; same as there: use cut and paste to duplicate the defmacro in a @@ -1332,6 +1330,7 @@ p ;; the branch has two dependents and one of them dpends on ;;; calling FUNCTION once on the entire compacted segment buffer. -- ;;; WHN 19990322 (defun on-segment-contents-vectorly (segment function) + (declare (type function function)) (let ((buffer (segment-buffer segment)) (i0 0)) (flet ((frob (i0 i1) @@ -1653,8 +1652,7 @@ p ;; the branch has two dependents and one of them dpends on (append ,@(extract-nths 0 'list pdefs))))))))) (defmacro define-instruction-macro (name lambda-list &body body) - (let ((whole (gensym "WHOLE-")) - (env (gensym "ENV-"))) + (with-unique-names (whole env) (multiple-value-bind (body local-defs) (sb!kernel:parse-defmacro lambda-list whole