X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fmacros.lisp;h=943df6304581979fae2fad1847edfb9702927c05;hb=1d46d379bb7a6424524b978f213ef69be5f1ad69;hp=4a0efed8ce726d2bbe50a7e7fb3c799784605183;hpb=670010e3f3dcd62efaf23f61abdc73950edb88c6;p=sbcl.git diff --git a/src/compiler/mips/macros.lisp b/src/compiler/mips/macros.lisp index 4a0efed..943df63 100644 --- a/src/compiler/mips/macros.lisp +++ b/src/compiler/mips/macros.lisp @@ -373,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))) @@ -417,9 +417,18 @@ ,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)))))) + +(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))