-;;;; Inspector for sb-aclrepl
+/nick;;;; Inspector for sb-aclrepl
;;;;
;;;; The documentation, which may or may not apply in its entirety at
;;;; any given time, for this functionality is on the ACL website:
(defvar *inspect-unbound-object-marker* (gensym "INSPECT-UNBOUND-OBJECT-")))
-(defun inspector (object input-stream output-stream)
+(defun inspector-fun (object input-stream output-stream)
(declare (ignore input-stream))
(let ((*current-inspect* nil)
(*inspect-raw* nil)
(redisplay output-stream)
(let ((*input* input-stream)
(*output* output-stream))
- (catch 'inspect-quit
- (sb-impl::repl :inspect t)))
- (values)))
+ (repl :inspect t)))
+ (values))
-(setq sb-impl::*inspect-fun* #'inspector)
+(setq sb-impl::*inspect-fun* #'inspector-fun)
(defun istep (args stream)
(unless *current-inspect*
(no-object-msg stream))))
(defun istep-cmd-inspect-* (stream)
- (reset-stack * "(inspect *")
+ (reset-stack * "(inspect *)")
(redisplay stream))
(defun istep-cmd-inspect-new-form (form stream)
- (inspector (eval form) nil stream))
+ (inspector-fun (eval form) nil stream))
(defun istep-cmd-select-parent-component (option stream)
(if (stack)
(defun istep-cmd-reset ()
(reset-stack)
- (throw 'inspect-quit nil))
+ (throw 'repl-catcher (values :inspect nil)))
(defun istep-cmd-help (stream)
(format stream *inspect-help*))
"Returns elements of an object that have been trimmed and labeled based on
length and skip. Returns (VALUES ELEMENTS LABELS ELEMENT-COUNT)
where ELEMENTS and LABELS are vectors containing ELEMENT-COUNT items.
-LABELS may be a string, number, cons pair, :tail, or :ellipses.
+LABELS elements may be a string, number, cons pair, :tail, or :ellipses.
This function may return an ELEMENT-COUNT of up to (+ 3 length) which would
include an :ellipses at the beginning, :ellipses at the end,
and the last element."
(defmethod inspected-description ((object fixnum))
(description-maybe-internals "fixnum ~W" (list object)
"[#x~8,'0X]"
- (sb-kernel:get-lisp-obj-address object)))
+ (ash object (1- sb-vm:n-lowtag-bits))))
(defmethod inspected-description ((object complex))
(format nil "complex number ~W" object))
(format nil "ratio ~W" object))
(defmethod inspected-description ((object character))
- (description-maybe-internals "character ~W char-code #x~4,'0X"
+ ;; FIXME: This will need to change as and when we get more characters
+ ;; than just the 256 we have today.
+ (description-maybe-internals "character ~W char-code #x~2,'0X"
(list object (char-code object))
"[#x~8,'0X]"
- (sb-kernel:get-lisp-obj-address object)))
+ (logior sb-vm:base-char-widetag
+ (ash (char-code object)
+ sb-vm:n-widetag-bits))))
(defmethod inspected-description ((object t))
(format nil "a generic object ~W" object))
(info (sb-kernel:layout-info (sb-kernel:layout-of object))))
(when (sb-kernel::defstruct-description-p info)
(dolist (dd-slot (sb-kernel:dd-slots info) (nreverse components-list))
- (push (cons (sb-kernel:dsd-%name dd-slot)
+ (push (cons (string (sb-kernel:dsd-name dd-slot))
(funcall (sb-kernel:dsd-accessor-name dd-slot) object))
components-list)))))