0.8.3.23
[sbcl.git] / src / compiler / mips / macros.lisp
index 4a0efed..943df63 100644 (file)
                                                  ,(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)))
                     ,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))