1.0.0.32: support for FreeBSD/x86-64
[sbcl.git] / src / compiler / target-disassem.lisp
index 24ad018..3339a73 100644 (file)
 
 (defun fun-self (fun)
   (declare (type compiled-function fun))
-  (sb!kernel:%simple-fun-self fun))
+  (sb!kernel:%simple-fun-self (sb!kernel:%fun-fun fun)))
 
 (defun fun-code (fun)
   (declare (type compiled-function fun))
 
 (defun fun-next (fun)
   (declare (type compiled-function fun))
-  (sb!kernel:%simple-fun-next fun))
+  (sb!kernel:%simple-fun-next (sb!kernel:%fun-fun fun)))
 
 (defun fun-address (fun)
   (declare (type compiled-function fun))
-  (ecase (sb!kernel:widetag-of fun)
-    (#.sb!vm:simple-fun-header-widetag
-     (- (sb!kernel:get-lisp-obj-address fun) sb!vm:fun-pointer-lowtag))
-    (#.sb!vm:closure-header-widetag
-     (fun-address (sb!kernel:%closure-fun fun)))
-    (#.sb!vm:funcallable-instance-header-widetag
-     (fun-address (sb!kernel:funcallable-instance-fun fun)))))
+  (- (sb!kernel:get-lisp-obj-address (sb!kernel:%fun-fun fun)) sb!vm:fun-pointer-lowtag))
 
 ;;; the offset of FUNCTION from the start of its code-component's
 ;;; instruction area
       (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)
 (defun valid-extended-function-designator-for-disassemble-p (thing)
   (cond ((legal-fun-name-p thing)
          (compiled-fun-or-lose (fdefinition thing) thing))
+        #!+sb-eval
+        ((sb!eval:interpreted-function-p thing)
+         (compile nil thing))
         ((functionp thing)
          thing)
         ((and (listp thing)
   (unless (typep address 'address)
     (return-from maybe-note-assembler-routine nil))
   (let ((name (or
+               (find-assembler-routine address)
                #!+linkage-table
-               (sb!sys:sap-foreign-symbol (sb!sys:int-sap address))
-               (find-assembler-routine address))))
+               (sb!sys:sap-foreign-symbol (sb!sys:int-sap address)))))
     (unless (null name)
       (note (lambda (stream)
               (if note-address-p