projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Optimize EQUALP on structures with raw slots.
[sbcl.git]
/
src
/
code
/
target-defstruct.lisp
diff --git
a/src/code/target-defstruct.lisp
b/src/code/target-defstruct.lisp
index
23de7d4
..
2295453
100644
(file)
--- a/
src/code/target-defstruct.lisp
+++ b/
src/code/target-defstruct.lisp
@@
-401,16
+401,13
@@
(find raw-type
*raw-slot-data-list*
:key 'raw-slot-data-raw-type))
(find raw-type
*raw-slot-data-list*
:key 'raw-slot-data-raw-type))
- for accessor = (when rsd
- (raw-slot-data-accessor-name rsd))
- always (or (not accessor)
+ always (or (not rsd)
(progn
#!-(or x86 x86-64 ppc)
(setf i (logandc2 (+ i (1- (raw-slot-data-alignment rsd)))
(1- (raw-slot-data-alignment rsd))))
(prog1
(progn
#!-(or x86 x86-64 ppc)
(setf i (logandc2 (+ i (1- (raw-slot-data-alignment rsd)))
(1- (raw-slot-data-alignment rsd))))
(prog1
- (equalp (funcall accessor x i)
- (funcall accessor y i))
+ (funcall (raw-slot-data-comparer rsd) i x y)
(incf i (raw-slot-data-n-words rsd)))))))
\f
;;; default PRINT-OBJECT method
(incf i (raw-slot-data-n-words rsd)))))))
\f
;;; default PRINT-OBJECT method