been initialized. Unused by SBCL itself: reserved for user and
applications.")
+(defvar *exit-hooks* nil
+ #!+sb-doc
+ "This is a list of functions which are called in an unspecified
+order when SBCL process exits. Unused by SBCL itself: reserved for
+user and applications. Using (QUIT :RECKLESSLY-P T), or calling
+exit(3) directly will circumvent these hooks.")
+
\f
;;; Binary search for simple vectors
(defun binary-search (value seq &key (key #'identity))
(type (integer 0 ,(1- sb!xc:array-dimension-limit)) ,pointer)
(type (simple-array ,element-type (*)) ,string))
(flet ((push-char (char)
+ (declare (optimize (sb!c::insert-array-bounds-checks 0)))
(when (= ,pointer ,size)
(let ((old ,string))
(setf ,size (* 2 (+ ,size 2))
(%shrink-vector string size)
string)))
,@body))))
+
+;;; The smallest power of two that is equal to or greater than X.
+(defun power-of-two-ceiling (x)
+ (declare (index x))
+ (ash 1 (integer-length (1- x))))