X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcross-misc.lisp;h=0e1e82e62ea29997b086c55db0d723e0ee60e762;hb=d442c23da9851beac541b8bddfc2c0837cb87309;hp=67e730b71e993f980d43b9ab9263f926493504e9;hpb=25d4ea4f108159b9782f21212374a1631cfe9a56;p=sbcl.git diff --git a/src/code/cross-misc.lisp b/src/code/cross-misc.lisp index 67e730b..0e1e82e 100644 --- a/src/code/cross-misc.lisp +++ b/src/code/cross-misc.lisp @@ -29,7 +29,15 @@ ;;; use address-dependent (and thus GC-dependent) hashes, and we only ;;; have a single thread of control. (defmacro without-interrupts (&rest forms) - `(progn ,@forms)) + `(macrolet ((allow-with-interrupts (&body body) + `(progn ,@body)) + (with-local-interrupts (&body body) + `(progn ,@body))) + ,@forms)) + +(defmacro with-locked-hash-table ((table) &body body) + (declare (ignore table)) + `(progn ,@body)) ;;; The GENESIS function works with fasl code which would, in the ;;; target SBCL, work on ANSI-STREAMs (streams which aren't extended @@ -117,6 +125,15 @@ (declare (type symbol symbol)) (sxhash symbol)) +(defvar sb!xc:*gensym-counter* 0) + +(defun sb!xc:gensym (&optional (thing "G")) + (declare (type string thing)) + (let ((n sb!xc:*gensym-counter*)) + (prog1 + (make-symbol (concatenate 'string thing (write-to-string n :base 10 :radix nil :pretty nil))) + (incf sb!xc:*gensym-counter*)))) + ;;; These functions are needed for constant-folding. (defun sb!kernel:simple-array-nil-p (object) (when (typep object 'array) @@ -142,6 +159,10 @@ (assert (typep array '(simple-array * (*)))) (values array start end 0)) +(defun sb!kernel:%with-array-data/fp (array start end) + (assert (typep array '(simple-array * (*)))) + (values array start end 0)) + (defun sb!kernel:signed-byte-32-p (number) (typep number '(signed-byte 32)))