(when source
(setf (definition-source-description source)
(append (method-qualifiers object)
- (sb-pcl::unparse-specializers
- (sb-mop:method-specializers object)))))
+ (if (sb-mop:method-generic-function object)
+ (sb-pcl::unparse-specializers
+ (sb-mop:method-generic-function object)
+ (sb-mop:method-specializers object))
+ (sb-mop:method-specializers object)))))
source))
#+sb-eval
(sb-eval:interpreted-function
(struct-predicate-structure-class object)))
(t
(find-function-definition-source object))))
+ ((or condition standard-object structure-object)
+ (find-definition-source (class-of object)))
(t
- (error "Don't know how to retrive source location for a ~S~%"
+ (error "Don't know how to retrieve source location for a ~S~%"
(type-of object)))))
(defun find-function-definition-source (function)
(tlf (if debug-fun (sb-c::compiled-debug-fun-tlf-number debug-fun))))
(make-definition-source
:pathname
- (if (eql (sb-c::debug-source-from debug-source) :file)
- (parse-namestring (sb-c::debug-source-name debug-source)))
+ ;; KLUDGE: at the moment, we don't record the correct toplevel
+ ;; form number for forms processed by EVAL (including EVAL-WHEN
+ ;; :COMPILE-TOPLEVEL). Until that's fixed, don't return a
+ ;; DEFINITION-SOURCE with a pathname. (When that's fixed, take
+ ;; out the (not (debug-source-form ...)) test.
+ (if (and (sb-c::debug-source-namestring debug-source)
+ (not (sb-c::debug-source-form debug-source)))
+ (parse-namestring (sb-c::debug-source-namestring debug-source)))
:character-offset
(if tlf
(elt (sb-c::debug-source-start-positions debug-source) tlf))
(lambda (obj header size)
(when (= sb-vm:code-header-widetag header)
(funcall fn obj size)))
- space)))
+ space
+ t)))
(declaim (inline map-caller-code-components))
(defun map-caller-code-components (function spaces fn)