X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdefs.lisp;h=607f6c5960311b4bdc87a3430e34645baedfc5fe;hb=fb76e3acd8b8a53cdadaa65bce1d090d99e004a0;hp=b866b625f13d253efd5c6256374c40dcb628c5b3;hpb=99df968112602d07a4b91492ab45367df27ee8ac;p=sbcl.git diff --git a/src/pcl/defs.lisp b/src/pcl/defs.lisp index b866b62..607f6c5 100644 --- a/src/pcl/defs.lisp +++ b/src/pcl/defs.lisp @@ -200,8 +200,6 @@ (defun variable-class (var env) (caddr (var-declaration 'class var env))) -(defvar *name->class->slotd-table* (make-hash-table)) - (defvar *standard-method-combination*) (defun plist-value (object name) @@ -306,7 +304,7 @@ (defclass standard-object (slot-object) ()) -(defclass funcallable-standard-object (standard-object function) +(defclass funcallable-standard-object (function standard-object) () (:metaclass funcallable-standard-class)) @@ -367,11 +365,10 @@ (defclass method (metaobject) ()) -(defclass standard-method (definition-source-mixin plist-mixin method) +(defclass standard-method (plist-mixin definition-source-mixin method) ((%generic-function :initform nil :accessor method-generic-function) - #+nil ; implemented by PLIST (qualifiers :initform () :initarg :qualifiers @@ -384,17 +381,15 @@ :initform () :initarg :lambda-list :reader method-lambda-list) - (%function :initform nil :initarg :function) - (fast-function - :initform nil - :initarg :fast-function ;no writer - :reader method-fast-function) + (%function :initform nil :initarg :function :reader method-function) (%documentation :initform nil :initarg :documentation))) -(defclass standard-accessor-method (standard-method) +(defclass accessor-method (standard-method) ((slot-name :initform nil :initarg :slot-name - :reader accessor-method-slot-name) - (%slot-definition :initform nil :initarg :slot-definition + :reader accessor-method-slot-name))) + +(defclass standard-accessor-method (accessor-method) + ((%slot-definition :initform nil :initarg :slot-definition :reader accessor-method-slot-definition))) (defclass standard-reader-method (standard-accessor-method) ()) @@ -402,6 +397,13 @@ ;;; an extension, apparently. (defclass standard-boundp-method (standard-accessor-method) ()) +;;; for (SLOT-VALUE X 'FOO) / ACCESSOR-SLOT-VALUE optimization, which +;;; can't be STANDARD-READER-METHOD because there is no associated +;;; slot definition. +(defclass global-reader-method (accessor-method) ()) +(defclass global-writer-method (accessor-method) ()) +(defclass global-boundp-method (accessor-method) ()) + (defclass method-combination (metaobject) ((%documentation :initform nil :initarg :documentation))) @@ -456,6 +458,9 @@ :initarg :initargs :accessor slot-definition-initargs) (%type :initform t :initarg :type :accessor slot-definition-type) + (%type-check-function :initform nil + :initarg type-check-function + :accessor slot-definition-type-check-function) (%documentation :initform nil :initarg :documentation ;; KLUDGE: we need a reader for bootstrapping purposes, in @@ -597,6 +602,12 @@ (%documentation :initform nil :initarg :documentation) + ;; True if the class definition was compiled with a (SAFETY 3) + ;; optimization policy. + (safe-p + :initform nil + :initarg safe-p + :accessor safe-p) (finalized-p :initform nil :reader class-finalized-p))) @@ -677,7 +688,7 @@ :initarg :definition-source))) (defclass plist-mixin (standard-object) - ((plist :initform () :accessor object-plist))) + ((plist :initform () :accessor object-plist :initarg plist))) (defclass dependent-update-mixin (plist-mixin) ()) @@ -696,10 +707,14 @@ (forward-referenced-class forward-referenced-class-p) (method method-p) (standard-method standard-method-p) + (accessor-method accessor-method-p) (standard-accessor-method standard-accessor-method-p) (standard-reader-method standard-reader-method-p) (standard-writer-method standard-writer-method-p) (standard-boundp-method standard-boundp-method-p) + (global-reader-method global-reader-method-p) + (global-writer-method global-writer-method-p) + (global-boundp-method global-boundp-method-p) (generic-function generic-function-p) (standard-generic-function standard-generic-function-p) (method-combination method-combination-p)