X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fmacros.lisp;h=63bd0c33dee91fffc3f87f9dc03c63a4f35e70f0;hb=b7192afcef9bbfd3fe1a4e2bfe3c73f853d164d1;hp=a9bf98b2d84c9a97c9c524c035eb3b3678df3c04;hpb=581e3d62de8cb37e13ad9db63e5537c0f962be28;p=sbcl.git diff --git a/src/compiler/mips/macros.lisp b/src/compiler/mips/macros.lisp index a9bf98b..63bd0c3 100644 --- a/src/compiler/mips/macros.lisp +++ b/src/compiler/mips/macros.lisp @@ -228,8 +228,7 @@ Emit code for a continuable error with the specified Error-Code and context Values. If the error is continued, execution resumes after the GENERATE-CERROR-CODE form." - (let ((continue (gensym "CONTINUE-LABEL-")) - (error (gensym "ERROR-LABEL-"))) + (with-unique-names (continue error) `(let ((,continue (gen-label))) (emit-label ,continue) (assemble (*elsewhere*) @@ -237,9 +236,10 @@ (emit-label ,error) (cerror-call ,vop ,continue ,error-code ,@values) ,error))))) - -;;; PSEUDO-ATOMIC -- Handy macro for making sequences look atomic. +;;;; PSEUDO-ATOMIC + +;;; handy macro for making sequences look atomic (defmacro pseudo-atomic ((flag-tn &key (extra 0)) &rest forms) `(progn (aver (= (tn-offset ,flag-tn) nl4-offset)) @@ -257,10 +257,8 @@ (inst addu alloc-tn (1- ,extra)) (inst break 16) (emit-label label))))) - - -;;;; Memory accessor vop generators +;;;; memory accessor vop generators (deftype load/store-index (scale lowtag min-offset &optional (max-offset min-offset)) @@ -375,7 +373,7 @@ ,(eval offset)))) (:results (value :scs ,scs)) (:result-types ,el-type) - (:generator 5 + (:generator 4 (inst ,(ecase size (:byte (if signed 'lb 'lbu)) (:short (if signed 'lh 'lhu))) @@ -419,9 +417,9 @@ ,el-type) (:results (result :scs ,scs)) (:result-types ,el-type) - (:generator 5 + (:generator 4 (inst ,(ecase size (:byte 'sb) (:short 'sh)) value object - (- (* ,offset n-word-bytes) (* index ,scale) ,lowtag)) + (- (+ (* ,offset n-word-bytes) (* index ,scale)) ,lowtag)) (move result value))))))