X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fhppa%2Fmacros.lisp;h=d0bebfc8ba7c54108b8a3c39da11448f640b44cf;hb=b7eed59f1877263e1af5ad80299e641e8276f77d;hp=09954119b549b4929305d212c124c42ac7cefaad;hpb=581e3d62de8cb37e13ad9db63e5537c0f962be28;p=sbcl.git diff --git a/src/compiler/hppa/macros.lisp b/src/compiler/hppa/macros.lisp index 0995411..d0bebfc 100644 --- a/src/compiler/hppa/macros.lisp +++ b/src/compiler/hppa/macros.lisp @@ -184,8 +184,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*) @@ -193,21 +192,18 @@ (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 ((&key (extra 0)) &rest forms) (let ((n-extra (gensym))) `(let ((,n-extra ,extra)) (inst addi 4 alloc-tn alloc-tn) ,@forms (inst addit (- ,n-extra 4) alloc-tn alloc-tn :od)))) - - -;;;; Indexed references: +;;;; indexed references (deftype load/store-index (scale lowtag min-offset &optional (max-offset min-offset)) @@ -368,3 +364,12 @@ object) (move value result)))))) + +(defmacro sb!sys::with-pinned-objects ((&rest objects) &body body) + "Arrange with the garbage collector that the pages occupied by +OBJECTS will not be moved in memory for the duration of BODY. +Useful for e.g. foreign calls where another thread may trigger +garbage collection. This is currently implemented by disabling GC" + (declare (ignore objects)) ;should we eval these for side-effect? + `(without-gcing + ,@body))