+ other-pointer-lowtag)))
+
+;;; Return the (byte) offset from NIL to the raw-addr slot of the
+;;; fdefn object for the static function NAME.
+(defun static-fun-offset (name)
+ (+ (static-fdefn-offset name)
+ (- other-pointer-lowtag)
+ (* fdefn-raw-addr-slot n-word-bytes)))
+\f
+;;; Various error-code generating helpers
+(defvar *adjustable-vectors* nil)
+
+(defmacro with-adjustable-vector ((var) &rest body)
+ `(let ((,var (or (pop *adjustable-vectors*)
+ (make-array 16
+ :element-type '(unsigned-byte 8)
+ :fill-pointer 0
+ :adjustable t))))
+ (declare (type (vector (unsigned-byte 8) 16) ,var))
+ (setf (fill-pointer ,var) 0)
+ (unwind-protect
+ (progn
+ ,@body)
+ (push ,var *adjustable-vectors*))))