0.9.9.27:
[sbcl.git] / src / compiler / target-disassem.lisp
index 9bcfd33..ca73952 100644 (file)
       (multiple-value-bind (words bytes)
           (truncate alignment sb!vm:n-word-bytes)
         (when (> words 0)
-          (print-words words stream dstate))
+          (print-inst (* words sb!vm:n-word-bytes) stream dstate))
         (when (> bytes 0)
           (print-inst bytes stream dstate)))
       (print-bytes alignment stream dstate))
       (setf (dstate-output-state dstate)
             :block-boundary))))
 
-;;; Add hooks to track to track the source code in SEGMENT during
-;;; disassembly. SFCACHE can be either NIL or it can be a
-;;; SOURCE-FORM-CACHE structure, in which case it is used to cache
-;;; forms from files.
+;;; Add hooks to track the source code in SEGMENT during disassembly.
+;;; SFCACHE can be either NIL or it can be a SOURCE-FORM-CACHE
+;;; structure, in which case it is used to cache forms from files.
 (defun add-source-tracking-hooks (segment debug-fun &optional sfcache)
   (declare (type segment segment)
            (type (or null sb!di:debug-fun) debug-fun)
       (error "can't compile a lexical closure"))
     (compile nil lambda)))
 
-(defun compiled-fun-or-lose (thing &optional (name thing))
+(defun valid-extended-function-designator-for-disassemble-p (thing)
   (cond ((legal-fun-name-p thing)
          (compiled-fun-or-lose (fdefinition thing) thing))
         ((functionp thing)
         ((and (listp thing)
               (eq (car thing) 'lambda))
          (compile nil thing))
-        (t
-         (error "can't make a compiled function from ~S" name))))
+        (t nil)))
+
+(defun compiled-fun-or-lose (thing &optional (name thing))
+  (let ((fun (valid-extended-function-designator-for-disassemble-p thing)))
+    (if fun
+        fun
+        (error 'simple-type-error
+               :datum thing
+               :expected-type '(satisfies valid-extended-function-designator-for-disassemble-p)
+               :format-control "can't make a compiled function from ~S"
+               :format-arguments (list name)))))
 
 (defun disassemble (object &key
                            (stream *standard-output*)