projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.12.32: Fix the performance degradation in DEFCLASS caused
[sbcl.git]
/
src
/
code
/
inspect.lisp
diff --git
a/src/code/inspect.lisp
b/src/code/inspect.lisp
index
ed2b175
..
43faa94
100644
(file)
--- a/
src/code/inspect.lisp
+++ b/
src/code/inspect.lisp
@@
-55,10
+55,11
@@
evaluated expressions.
(named-let reread ()
(format s "~&> ")
(force-output)
(named-let reread ()
(format s "~&> ")
(force-output)
- (let (;; KMP idiom, using stream itself as EOF value
- (command (read *standard-input* nil *standard-input*)))
- (typecase command
- (stream ; i.e. EOF
+ (let* (;; newly-consed object for hermetic protection against
+ ;; mischievous input like #.*EOF-OBJECT*:
+ (eof (cons *eof-object* nil))
+ (command (read *standard-input* nil eof)))
+ (when (eq command eof)
;; currently-undocumented feature: EOF is handled as Q.
;; If there's ever consensus that this is *the* right
;; thing to do (as opposed to e.g. handling it as U), we
;; currently-undocumented feature: EOF is handled as Q.
;; If there's ever consensus that this is *the* right
;; thing to do (as opposed to e.g. handling it as U), we
@@
-66,6
+67,7
@@
evaluated expressions.
;; do this than to signal an error.
(/show0 "THROWing QUIT-INSPECT for EOF")
(throw 'quit-inspect nil))
;; do this than to signal an error.
(/show0 "THROWing QUIT-INSPECT for EOF")
(throw 'quit-inspect nil))
+ (typecase command
(integer
(let ((elements-length (length elements)))
(cond ((< -1 command elements-length)
(integer
(let ((elements-length (length elements)))
(cond ((< -1 command elements-length)
@@
-153,7
+155,7
@@
evaluated expressions.
(defgeneric inspected-parts (object))
(defmethod inspected-parts ((object symbol))
(defgeneric inspected-parts (object))
(defmethod inspected-parts ((object symbol))
- (values (format nil "The object is a SYMBOL.~%" object)
+ (values (format nil "The object is a SYMBOL.~%")
t
(list (cons "Name" (symbol-name object))
(cons "Package" (symbol-package object))
t
(list (cons "Name" (symbol-name object))
(cons "Package" (symbol-package object))
@@
-170,7
+172,7
@@
evaluated expressions.
(info (layout-info (sb-kernel:layout-of object))))
(when (sb-kernel::defstruct-description-p info)
(dolist (dd-slot (dd-slots info) (nreverse parts-list))
(info (layout-info (sb-kernel:layout-of object))))
(when (sb-kernel::defstruct-description-p info)
(dolist (dd-slot (dd-slots info) (nreverse parts-list))
- (push (cons (dsd-%name dd-slot)
+ (push (cons (dsd-name dd-slot)
(funcall (dsd-accessor-name dd-slot) object))
parts-list)))))
(funcall (dsd-accessor-name dd-slot) object))
parts-list)))))
@@
-200,7
+202,13
@@
evaluated expressions.
(values (format nil "The object is a FUNCALLABLE-INSTANCE of type ~S.~%"
(type-of object))
t
(values (format nil "The object is a FUNCALLABLE-INSTANCE of type ~S.~%"
(type-of object))
t
- (inspected-structure-elements object)))
+ (inspected-standard-object-elements object)))
+
+(defmethod inspected-parts ((object condition))
+ (values (format nil "The object is a CONDITION of type ~S.~%"
+ (type-of object))
+ t
+ (inspected-standard-object-elements object)))
(defmethod inspected-parts ((object function))
(let* ((type (sb-kernel:widetag-of object))
(defmethod inspected-parts ((object function))
(let* ((type (sb-kernel:widetag-of object))