chiark / gitweb /
Made WITH-GC-DISABLED just a wrapper for internal CMUCL/SBCL macros
[clg] / glib / utils.lisp
index fa11693a7b22fb0235970e066914d1de7b1e5f7c..822a67390810f3e04a632edadc12e42c41b836d2 100644 (file)
 ;; License along with this library; if not, write to the Free Software
 ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 ;; License along with this library; if not, write to the Free Software
 ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-;; $Id: utils.lisp,v 1.1 2004-10-27 14:50:15 espen Exp $
+;; $Id: utils.lisp,v 1.4 2005-04-17 21:38:15 espen Exp $
 
 
 (in-package "GLIB")
 
 (defun type-expand-1 (form)
   (let ((def (cond ((symbolp form)
 
 
 (in-package "GLIB")
 
 (defun type-expand-1 (form)
   (let ((def (cond ((symbolp form)
-                   (kernel::info type expander form))
+                   #+cmu(kernel::info type expander form)
+                   #+sbcl(sb-impl::info :type :expander form))
                   ((and (consp form) (symbolp (car form)))
                   ((and (consp form) (symbolp (car form)))
-                   (kernel::info type expander (car form)))
+                   #+cmu(kernel::info type expander (car form))
+                   #+sbcl(sb-impl::info :type :expander (car form)))
                   (t nil))))
     (if def
        (values (funcall def (if (consp form) form (list form))) t)
                   (t nil))))
     (if def
        (values (funcall def (if (consp form) form (list form))) t)
@@ -43,17 +45,11 @@ (defun type-expand-to (type form)
     (expand form)))
 
 (defmacro with-gc-disabled (&body body)
     (expand form)))
 
 (defmacro with-gc-disabled (&body body)
-  (let ((gc-inhibit (make-symbol "GC-INHIBIT")))
-    `(progn
-       (let ((,gc-inhibit lisp::*gc-inhibit*))
-        (ext:gc-off)
-                (unwind-protect
-            ,@body
-          (unless ,gc-inhibit
-            (ext:gc-on)))))))
+  #+cmu`(system:without-gcing ,@body)
+  #+sbcl`(sb-impl::without-gcing ,@body))
 
 (defun mklist (obj)
 
 (defun mklist (obj)
-  (if (atom obj) (list obj) obj))
+  (if (and obj (atom obj)) (list obj) obj))
 
 (defun namep (obj)
   (and (symbolp obj) (not (member obj '(t nil)))))
 
 (defun namep (obj)
   (and (symbolp obj) (not (member obj '(t nil)))))
@@ -117,8 +113,6 @@ (defun intersection-p (list1 list2 &key (test #'eq))
 
 (defun split-string (string delimiter)
   (declare (simple-string string) (character delimiter))
 
 (defun split-string (string delimiter)
   (declare (simple-string string) (character delimiter))
-  (check-type string string)
-  (check-type delimiter character)
   (let ((pos (position delimiter string)))
    (if (not pos)
         (list string)
   (let ((pos (position delimiter string)))
    (if (not pos)
         (list string)
@@ -128,8 +122,6 @@ (defun split-string (string delimiter)
 
 (defun split-string-if (string predicate)
   (declare (simple-string string))
 
 (defun split-string-if (string predicate)
   (declare (simple-string string))
-  (check-type string string)
-  (check-type predicate (or symbol function))
   (let ((pos (position-if predicate string :start 1)))
     (if (not pos)
         (list string)
   (let ((pos (position-if predicate string :start 1)))
     (if (not pos)
         (list string)