X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fslots-boot.lisp;h=4ee0df1179a5a280c4f38168cbfe02b2abb7e05b;hb=9a2e730f74641e7de6ad4099111db92c5ad863bf;hp=a73b7b790cb0ac50301e21beef0d2f1d3279c2cf;hpb=872175cd9cb5b4966a36d4bd92421cc407a0355b;p=sbcl.git diff --git a/src/pcl/slots-boot.lisp b/src/pcl/slots-boot.lisp index a73b7b7..4ee0df1 100644 --- a/src/pcl/slots-boot.lisp +++ b/src/pcl/slots-boot.lisp @@ -23,32 +23,6 @@ (in-package "SB-PCL") -(defmacro slot-symbol (slot-name type) - `(if (and (symbolp ,slot-name) (symbol-package ,slot-name)) - (or (get ,slot-name ',(ecase type - (reader 'reader-symbol) - (writer 'writer-symbol) - (boundp 'boundp-symbol))) - (intern (format nil "~A ~A slot ~A" - (package-name (symbol-package ,slot-name)) - (symbol-name ,slot-name) - ,(symbol-name type)) - *slot-accessor-name-package*)) - (progn - (error "Non-symbol and non-interned symbol slot name accessors~ - are not yet implemented.") - ;;(make-symbol (format nil "~A ~A" ,slot-name ,type)) - ))) - -(defun slot-reader-symbol (slot-name) - (slot-symbol slot-name reader)) - -(defun slot-writer-symbol (slot-name) - (slot-symbol slot-name writer)) - -(defun slot-boundp-symbol (slot-name) - (slot-symbol slot-name boundp)) - (defmacro asv-funcall (sym slot-name type &rest args) (declare (ignore type)) `(if (fboundp ',sym) @@ -88,7 +62,7 @@ (unless (constantp slot-name) (error "~S requires its slot-name argument to be a constant" 'accessor-slot-boundp)) - (let* ((slot-name (eval slot-name))) + (let ((slot-name (eval slot-name))) `(slot-boundp-normal ,object ',slot-name))) (defun structure-slot-boundp (object) @@ -97,8 +71,8 @@ (defun make-structure-slot-boundp-function (slotd) (let* ((reader (slot-definition-internal-reader-function slotd)) - (fun #'(lambda (object) - (not (eq (funcall reader object) +slot-unbound+))))) + (fun (lambda (object) + (not (eq (funcall reader object) +slot-unbound+))))) (declare (type function reader)) fun)) @@ -129,7 +103,7 @@ (defun make-optimized-std-reader-method-function (fsc-p slot-name index) (declare #.*optimize-speed*) - (set-function-name + (set-fun-name (etypecase index (fixnum (if fsc-p (lambda (instance) @@ -153,7 +127,7 @@ (defun make-optimized-std-writer-method-function (fsc-p slot-name index) (declare #.*optimize-speed*) - (set-function-name + (set-fun-name (etypecase index (fixnum (if fsc-p (lambda (nv instance) @@ -169,20 +143,20 @@ (defun make-optimized-std-boundp-method-function (fsc-p slot-name index) (declare #.*optimize-speed*) - (set-function-name + (set-fun-name (etypecase index (fixnum (if fsc-p - #'(lambda (instance) - (not (eq (clos-slots-ref (fsc-instance-slots instance) - index) - +slot-unbound+))) - #'(lambda (instance) - (not (eq (clos-slots-ref (std-instance-slots instance) - index) - +slot-unbound+))))) - (cons #'(lambda (instance) - (declare (ignore instance)) - (not (eq (cdr index) +slot-unbound+))))) + (lambda (instance) + (not (eq (clos-slots-ref (fsc-instance-slots instance) + index) + +slot-unbound+))) + (lambda (instance) + (not (eq (clos-slots-ref (std-instance-slots instance) + index) + +slot-unbound+))))) + (cons (lambda (instance) + (declare (ignore instance)) + (not (eq (cdr index) +slot-unbound+))))) `(boundp ,slot-name))) (defun make-optimized-structure-slot-value-using-class-method-function (function) @@ -195,15 +169,15 @@ (defun make-optimized-structure-setf-slot-value-using-class-method-function (function) (declare (type function function)) - #'(lambda (nv class object slotd) - (declare (ignore class slotd)) - (funcall function nv object))) + (lambda (nv class object slotd) + (declare (ignore class slotd)) + (funcall function nv object))) (defun make-optimized-structure-slot-boundp-using-class-method-function (function) (declare (type function function)) - #'(lambda (class object slotd) - (declare (ignore class slotd)) - (not (eq (funcall function object) +slot-unbound+)))) + (lambda (class object slotd) + (declare (ignore class slotd)) + (not (eq (funcall function object) +slot-unbound+)))) (defun get-optimized-std-slot-value-using-class-method-function (class slotd @@ -299,7 +273,7 @@ (defun get-accessor-from-svuc-method-function (class slotd sdfun name) (macrolet ((emf-funcall (emf &rest args) `(invoke-effective-method-function ,emf nil ,@args))) - (set-function-name + (set-fun-name (case name (reader (lambda (instance) (emf-funcall sdfun class instance slotd))) @@ -310,7 +284,7 @@ `(,name ,(class-name class) ,(slot-definition-name slotd))))) (defun make-internal-reader-method-function (class-name slot-name) - (list* ':method-spec `(internal-reader-method ,class-name ,slot-name) + (list* :method-spec `(internal-reader-method ,class-name ,slot-name) (make-method-function (lambda (instance) (let ((wrapper (get-instance-wrapper-or-nil instance))) @@ -352,10 +326,10 @@ (instance-read-internal .pv. instance-slots 1 (slot-value instance slot-name)))))))) - (setf (getf (getf initargs ':plist) ':slot-name-lists) + (setf (getf (getf initargs :plist) :slot-name-lists) (list (list nil slot-name))) - (setf (getf (getf initargs ':plist) ':pv-table-symbol) pv-table-symbol) - (list* ':method-spec `(reader-method ,class-name ,slot-name) + (setf (getf (getf initargs :plist) :pv-table-symbol) pv-table-symbol) + (list* :method-spec `(reader-method ,class-name ,slot-name) initargs))) (defun make-std-writer-method-function (class-name slot-name) @@ -369,10 +343,10 @@ (instance-write-internal .pv. instance-slots 1 nv (setf (slot-value instance slot-name) nv)))))))) - (setf (getf (getf initargs ':plist) ':slot-name-lists) + (setf (getf (getf initargs :plist) :slot-name-lists) (list nil (list nil slot-name))) - (setf (getf (getf initargs ':plist) ':pv-table-symbol) pv-table-symbol) - (list* ':method-spec `(writer-method ,class-name ,slot-name) + (setf (getf (getf initargs :plist) :pv-table-symbol) pv-table-symbol) + (list* :method-spec `(writer-method ,class-name ,slot-name) initargs))) (defun make-std-boundp-method-function (class-name slot-name) @@ -386,10 +360,10 @@ (instance-boundp-internal .pv. instance-slots 1 (slot-boundp instance slot-name)))))))) - (setf (getf (getf initargs ':plist) ':slot-name-lists) + (setf (getf (getf initargs :plist) :slot-name-lists) (list (list nil slot-name))) - (setf (getf (getf initargs ':plist) ':pv-table-symbol) pv-table-symbol) - (list* ':method-spec `(boundp-method ,class-name ,slot-name) + (setf (getf (getf initargs :plist) :pv-table-symbol) pv-table-symbol) + (list* :method-spec `(boundp-method ,class-name ,slot-name) initargs))) (defun initialize-internal-slot-gfs (slot-name &optional type)