projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.10.14: remove locking and gc inhibition from hash-tables, power of 2 sizes
[sbcl.git]
/
src
/
pcl
/
slots.lisp
diff --git
a/src/pcl/slots.lisp
b/src/pcl/slots.lisp
index
2784334
..
f406c6f
100644
(file)
--- a/
src/pcl/slots.lisp
+++ b/
src/pcl/slots.lisp
@@
-97,7
+97,7
@@
(declaim (ftype (sfunction (t symbol) t) slot-value))
(defun slot-value (object slot-name)
(declaim (ftype (sfunction (t symbol) t) slot-value))
(defun slot-value (object slot-name)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(value
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(value
@@
-107,13
+107,13
@@
(funcallable-standard-instance-access object location)))
((consp location)
(cdr location))
(funcallable-standard-instance-access object location)))
((consp location)
(cdr location))
- ((eq t location)
- (return-from slot-value
- (slot-value-using-class (wrapper-class* wrapper) object (cddr cell))))
((not cell)
(return-from slot-value
(values (slot-missing (wrapper-class* wrapper) object slot-name
'slot-value))))
((not cell)
(return-from slot-value
(values (slot-missing (wrapper-class* wrapper) object slot-name
'slot-value))))
+ ((not location)
+ (return-from slot-value
+ (slot-value-using-class (wrapper-class* wrapper) object (cddr cell))))
(t
(bug "Bogus slot cell in SLOT-VALUE: ~S" cell)))))
(if (eq +slot-unbound+ value)
(t
(bug "Bogus slot cell in SLOT-VALUE: ~S" cell)))))
(if (eq +slot-unbound+ value)
@@
-128,7
+128,7
@@
form))
(defun set-slot-value (object slot-name new-value)
form))
(defun set-slot-value (object slot-name new-value)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(type-check-function (cadr cell)))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(type-check-function (cadr cell)))
@@
-141,11
+141,11
@@
new-value)))
((consp location)
(setf (cdr location) new-value))
new-value)))
((consp location)
(setf (cdr location) new-value))
- ((eq t location)
- (setf (slot-value-using-class (wrapper-class* wrapper) object (cddr cell))
- new-value))
((not cell)
(slot-missing (wrapper-class* wrapper) object slot-name 'setf new-value))
((not cell)
(slot-missing (wrapper-class* wrapper) object slot-name 'setf new-value))
+ ((not location)
+ (setf (slot-value-using-class (wrapper-class* wrapper) object (cddr cell))
+ new-value))
(t
(bug "Bogus slot-cell in SET-SLOT-VALUE: ~S" cell))))
new-value)
(t
(bug "Bogus slot-cell in SET-SLOT-VALUE: ~S" cell))))
new-value)
@@
-171,7
+171,7
@@
form))
(defun slot-boundp (object slot-name)
form))
(defun slot-boundp (object slot-name)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(value
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(value
@@
-181,14
+181,14
@@
(funcallable-standard-instance-access object location)))
((consp location)
(cdr location))
(funcallable-standard-instance-access object location)))
((consp location)
(cdr location))
- ((eq t location)
- (return-from slot-boundp
- (slot-boundp-using-class (wrapper-class* wrapper) object (cddr cell))))
((not cell)
(return-from slot-boundp
(and (slot-missing (wrapper-class* wrapper) object slot-name
'slot-boundp)
t)))
((not cell)
(return-from slot-boundp
(and (slot-missing (wrapper-class* wrapper) object slot-name
'slot-boundp)
t)))
+ ((not location)
+ (return-from slot-boundp
+ (slot-boundp-using-class (wrapper-class* wrapper) object (cddr cell))))
(t
(bug "Bogus slot cell in SLOT-VALUE: ~S" cell)))))
(not (eq +slot-unbound+ value))))
(t
(bug "Bogus slot cell in SLOT-VALUE: ~S" cell)))))
(not (eq +slot-unbound+ value))))
@@
-201,7
+201,7
@@
form))
(defun slot-makunbound (object slot-name)
form))
(defun slot-makunbound (object slot-name)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell)))
(cond ((fixnump location)
(cell (find-slot-cell wrapper slot-name))
(location (car cell)))
(cond ((fixnump location)
@@
-211,10
+211,10
@@
+slot-unbound+)))
((consp location)
(setf (cdr location) +slot-unbound+))
+slot-unbound+)))
((consp location)
(setf (cdr location) +slot-unbound+))
- ((eq t location)
- (slot-makunbound-using-class (wrapper-class* wrapper) object (cddr cell)))
((not cell)
(slot-missing (wrapper-class* wrapper) object slot-name 'slot-makunbound))
((not cell)
(slot-missing (wrapper-class* wrapper) object slot-name 'slot-makunbound))
+ ((not location)
+ (slot-makunbound-using-class (wrapper-class* wrapper) object (cddr cell)))
(t
(bug "Bogus slot-cell in SLOT-MAKUNBOUND: ~S" cell))))
object)
(t
(bug "Bogus slot-cell in SLOT-MAKUNBOUND: ~S" cell))))
object)