X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fassem.lisp;h=ba5c68e67214312458061645e731ea020dcc342c;hb=6a9bbe6f36179cee92001a1f9ed5ff38be512644;hp=5634b9b1ab474bfb4b7289122be1d020fbd2297a;hpb=0f726536ee7ec85f3a9483a26d08bd7d1cd96750;p=sbcl.git diff --git a/src/compiler/assem.lisp b/src/compiler/assem.lisp index 5634b9b..ba5c68e 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 @@ -185,7 +183,7 @@ ;; This attribute indicates that this ``instruction'' can be ;; variable length, and therefore had better never be used in a ;; branch delay slot. - var-length) + variable-length) (defstruct (instruction (:include sset-element) @@ -360,7 +358,7 @@ (when countdown (decf countdown) (aver (not (instruction-attributep (inst-attributes inst) - var-length)))) + variable-length)))) (cond ((instruction-attributep (inst-attributes inst) branch) (unless countdown (setf countdown (inst-delay inst))) @@ -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 @@ -573,7 +571,7 @@ p ;; the branch has two dependents and one of them dpends on (let ((inst (car remaining))) (unless (and delay-slot-p (instruction-attributep (inst-attributes inst) - var-length)) + variable-length)) ;; We've got us a live one here. Go for it. #!+sb-show-assem (format *trace-output* "emitting ~S~%" inst) ;; Delete it from the list of insts. @@ -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 @@ -1272,8 +1270,7 @@ p ;; the branch has two dependents and one of them dpends on (setf (segment-postits segment) (segment-postits other-segment)) (dolist (postit postits) (emit-back-patch segment 0 postit))) - #!-x86 (emit-alignment segment nil max-alignment) - #!+x86 (emit-alignment segment nil max-alignment #x90) + (emit-alignment segment nil max-alignment #!+(or x86-64 x86) #x90) (let ((segment-current-index-0 (segment-current-index segment)) (segment-current-posn-0 (segment-current-posn segment))) (incf (segment-current-index segment) @@ -1332,6 +1329,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 +1651,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