Utility predicates for packing: UNBOUNDED-SC-P and UNBOUNDED-TN-P
[sbcl.git] / src / code / target-extensions.lisp
index 259f3d7..088694d 100644 (file)
@@ -35,6 +35,13 @@ order when a saved core image starts up, after the system itself has
 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 (SB-EXT:EXIT :ABORT T), or calling
+exit(3) directly will circumvent these hooks.")
+
 \f
 ;;; Binary search for simple vectors
 (defun binary-search (value seq &key (key #'identity))
@@ -112,3 +119,8 @@ applications.")
                   (%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))))