(in-package "SB-IMPL") ;(SB-IMPL, not SB!IMPL, since we're built in warm load.)
-(declaim #.*optimize-byte-compilation*)
-
(defparameter *inspect-length* 10)
;;; When *INSPECT-UNBOUND-OBJECT-MARKER* occurs in a parts list, it
(defvar *inspect-unbound-object-marker* (gensym "INSPECT-UNBOUND-OBJECT-"))
(defun inspect (object)
- (declare #.*optimize-external-despite-byte-compilation*)
(catch 'quit-inspect
(%inspect object *standard-output*))
(values))
")
(defun %inspect (*inspected* s)
- (named-let redisplay () ; "lambda, the ultimate GOTO":-|
+ (named-let redisplay () ; "LAMBDA, the ultimate GOTO":-|
(multiple-value-bind (description named-p elements)
(inspected-parts *inspected*)
(tty-display-inspected-parts description named-p elements s)
;; thing to do (as opposed to e.g. handling it as U), we
;; could document it. Meanwhile, it seems more Unix-y to
;; do this than to signal an error.
+ (/show0 "THROWing QUIT-INSPECT for EOF")
(throw 'quit-inspect nil))
(integer
(let ((elements-length (length elements)))
(format s "~%The object contains nothing to inspect.~%")
(return-from %inspect (reread)))
(t
- (format s "~%Enter a valid index (~:[0-~D~;0~]).~%"
+ (format s "~%Enter a valid index (~:[0-~W~;0~]).~%"
(= elements-length 1) (1- elements-length))
(return-from %inspect (reread))))))
(symbol
(case (find-symbol (symbol-name command) *keyword-package*)
((:q :e)
+ (/show0 "THROWing QUIT-INSPECT for :Q or :E")
(throw 'quit-inspect nil))
(:u
(return-from %inspect))
(inspected-structure-elements object)))
(defmethod inspected-parts ((object function))
- (let* ((type (sb-kernel:get-type object))
- (object (if (= type sb-vm:closure-header-type)
- (sb-kernel:%closure-function object)
+ (let* ((type (sb-kernel:widetag-of object))
+ (object (if (= type sb-vm:closure-header-widetag)
+ (sb-kernel:%closure-fun object)
object)))
(values (format nil "FUNCTION ~S.~@[~%Argument List: ~A~]." object
- (sb-kernel:%function-arglist object)
+ (sb-kernel:%simple-fun-arglist object)
;; Defined-from stuff used to be here. Someone took
;; it out. FIXME: We should make it easy to get
;; to DESCRIBE from the inspector.
(defmethod inspected-parts ((object vector))
(values (format nil
- "The object is a ~:[~;displaced ~]VECTOR of length ~D.~%"
+ "The object is a ~:[~;displaced ~]VECTOR of length ~W.~%"
(and (array-header-p object)
(%array-displaced-p object))
(length object))
(multiple-value-bind (q r) (floor index dim)
(setq index q)
(push r list)))
- (format nil "[~D~{,~D~}]" (car list) (cdr list)))))
+ (format nil "[~W~{,~W~}]" (car list) (cdr list)))))
(defmethod inspected-parts ((object array))
(let* ((length (min (array-total-size object) *inspect-length*))