X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fearly-low.lisp;h=5db39e878d41cf3e9fa4c426fad587fa839985fc;hb=2912f5f6c2acb2da3b9fcc0f5afd1ca89782a9f8;hp=39d21d1e2174d7fe827cd58d66303c9ee51776d5;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/pcl/early-low.lisp b/src/pcl/early-low.lisp index 39d21d1..5db39e8 100644 --- a/src/pcl/early-low.lisp +++ b/src/pcl/early-low.lisp @@ -24,10 +24,9 @@ ;;;; warranty about the software, its performance or its conformity to any ;;;; specification. -(sb-int:file-comment - "$Header$") - (in-package "SB-PCL") + +(/show "starting early-low.lisp") ;;; FIXME: The PCL package is internal and is used by code in potential ;;; bottlenecks. Access to it might be faster through #.(find-package "SB-PCL") @@ -40,11 +39,10 @@ ;;; could be made less viciously brittle when SB-FLUID.) ;;; (Or perhaps just define a macro ;;; (DEFMACRO PKG (NAME) -;;; #!-SB-FLUID (FIND-PACKAGE NAME) -;;; #!+SB-FLUID `(FIND-PACKAGE ,NAME)) +;;; #-SB-FLUID (FIND-PACKAGE NAME) +;;; #+SB-FLUID `(FIND-PACKAGE ,NAME)) ;;; and use that to replace all three variables.) (defvar *pcl-package* (find-package "SB-PCL")) -(defvar *slot-accessor-name-package* (find-package "SB-SLOT-ACCESSOR-NAME")) ;;; This excludes structure types created with the :TYPE option to ;;; DEFSTRUCT. It also doesn't try to deal with types created by @@ -55,7 +53,60 @@ ;;; it needs a more mnemonic name. -- WHN 19991204 (defun structure-type-p (type) (and (symbolp type) - (let ((class (cl:find-class type nil))) - (and class - (typep (sb-kernel:layout-info (sb-kernel:class-layout class)) - 'sb-kernel:defstruct-description))))) + (not (condition-type-p type)) + (let ((classoid (find-classoid type nil))) + (and classoid + (typep (layout-info + (classoid-layout classoid)) + 'defstruct-description))))) + +(defun condition-type-p (type) + (and (symbolp type) + (condition-classoid-p (find-classoid type nil)))) + +(declaim (special *the-class-t* + *the-class-vector* *the-class-symbol* + *the-class-string* *the-class-sequence* + *the-class-rational* *the-class-ratio* + *the-class-number* *the-class-null* *the-class-list* + *the-class-integer* *the-class-float* *the-class-cons* + *the-class-complex* *the-class-character* + *the-class-bit-vector* *the-class-array* + *the-class-stream* + + *the-class-slot-object* + *the-class-structure-object* + *the-class-std-object* + *the-class-standard-object* + *the-class-funcallable-standard-object* + *the-class-class* + *the-class-generic-function* + *the-class-built-in-class* + *the-class-slot-class* + *the-class-condition-class* + *the-class-structure-class* + *the-class-std-class* + *the-class-standard-class* + *the-class-funcallable-standard-class* + *the-class-method* + *the-class-standard-method* + *the-class-standard-reader-method* + *the-class-standard-writer-method* + *the-class-standard-boundp-method* + *the-class-standard-generic-function* + *the-class-standard-effective-slot-definition* + + *the-eslotd-standard-class-slots* + *the-eslotd-funcallable-standard-class-slots*)) + +(declaim (special *the-wrapper-of-t* + *the-wrapper-of-vector* *the-wrapper-of-symbol* + *the-wrapper-of-string* *the-wrapper-of-sequence* + *the-wrapper-of-rational* *the-wrapper-of-ratio* + *the-wrapper-of-number* *the-wrapper-of-null* + *the-wrapper-of-list* *the-wrapper-of-integer* + *the-wrapper-of-float* *the-wrapper-of-cons* + *the-wrapper-of-complex* *the-wrapper-of-character* + *the-wrapper-of-bit-vector* *the-wrapper-of-array*)) + +(/show "finished with early-low.lisp")