X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcross-misc.lisp;h=868d3f69fabe71094ff893216c3de6012056974d;hb=35b5e97163c45e89659dbd75c91d653b49c758d3;hp=eb57e41b34ae4341aaa651116d15cf611afa9a66;hpb=ad1aa2961d81ed8db9dac59068c6861199c29a3a;p=sbcl.git diff --git a/src/code/cross-misc.lisp b/src/code/cross-misc.lisp index eb57e41..868d3f6 100644 --- a/src/code/cross-misc.lisp +++ b/src/code/cross-misc.lisp @@ -119,3 +119,35 @@ (defun symbol-hash (symbol) (declare (type symbol symbol)) (sxhash symbol)) + +;;; These functions are needed for constant-folding. +(defun sb!kernel:simple-array-nil-p (object) + (when (typep object 'array) + (assert (not (eq (array-element-type object) nil)))) + nil) + +(defun sb!kernel:%negate (number) + (- number)) + +(defun sb!kernel:%single-float (number) + (coerce number 'single-float)) + +(defun sb!kernel:%double-float (number) + (coerce number 'double-float)) + +(defun sb!kernel:%ldb (size posn integer) + (ldb (byte size posn) integer)) + +(defun sb!kernel:%dpb (newbyte size posn integer) + (dpb newbyte (byte size posn) integer)) + +(defun sb!kernel:%with-array-data (array start end) + (assert (typep array '(simple-array * (*)))) + (values array start end 0)) + +#!-alpha +(defun sb!vm::ash-left-mod32 (integer amount) + (ldb (byte 32 0) (ash integer amount))) +#!+alpha +(defun sb!vm::ash-left-mod64 (integer amount) + (ldb (byte 64 0) (ash integer amount)))