0.pre7.53:
[sbcl.git] / src / compiler / target-disassem.lisp
index 7a854dc..ca5ca26 100644 (file)
 ;;; SAP-MAKER and LENGTH bytes long in the disassem-state object DSTATE.
 ;;;
 ;;; &KEY arguments include :VIRTUAL-LOCATION (by default the same as
-;;; the address), :DEBUG-FUNCTION, :SOURCE-FORM-CACHE (a
+;;; the address), :DEBUG-FUN, :SOURCE-FORM-CACHE (a
 ;;; SOURCE-FORM-CACHE object), and :HOOKS (a list of OFFS-HOOK
 ;;; objects).
 (defun make-segment (sap-maker length
                     &key
                     code virtual-location
-                    debug-function source-form-cache
+                    debug-fun source-form-cache
                     hooks)
   (declare (type (function () sb!sys:system-area-pointer) sap-maker)
           (type length length)
           (type (or null address) virtual-location)
-          (type (or null sb!di:debug-function) debug-function)
+          (type (or null sb!di:debug-fun) debug-fun)
           (type (or null source-form-cache) source-form-cache))
   (let* ((segment
          (%make-segment
                                 (sb!sys:sap-int (funcall sap-maker)))
           :hooks hooks
           :code code)))
-    (add-debugging-hooks segment debug-function source-form-cache)
+    (add-debugging-hooks segment debug-fun source-form-cache)
     (add-fun-header-hooks segment)
     segment))
 
 \f
 ;;;; stuff to use debugging-info to augment the disassembly
 
-(defun code-function-map (code)
+(defun code-fun-map (code)
   (declare (type sb!kernel:code-component code))
-  (sb!di::get-debug-info-function-map (sb!kernel:%code-debug-info code)))
+  (sb!di::get-debug-info-fun-map (sb!kernel:%code-debug-info code)))
 
 (defstruct (location-group (:copier nil))
   (locations #() :type (vector (or list fixnum))))
     new))
 
 ;;; Return a STORAGE-INFO struction describing the object-to-source
-;;; variable mappings from DEBUG-FUNCTION.
-(defun storage-info-for-debug-function (debug-function)
-  (declare (type sb!di:debug-function debug-function))
+;;; variable mappings from DEBUG-FUN.
+(defun storage-info-for-debug-fun (debug-fun)
+  (declare (type sb!di:debug-fun debug-fun))
   (let ((sc-vec sb!c::*backend-sc-numbers*)
        (groups nil)
-       (debug-vars (sb!di::debug-function-debug-vars
-                    debug-function)))
+       (debug-vars (sb!di::debug-fun-debug-vars
+                    debug-fun)))
     (and debug-vars
         (dotimes (debug-var-offset
                   (length debug-vars)
                       )))))))
         )))
 
-(defun source-available-p (debug-function)
+(defun source-available-p (debug-fun)
   (handler-case
-      (sb!di:do-debug-function-blocks (block debug-function)
+      (sb!di:do-debug-fun-blocks (block debug-fun)
        (declare (ignore block))
        (return t))
     (sb!di:no-debug-blocks () nil)))
 ;;; 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-function &optional sfcache)
+(defun add-source-tracking-hooks (segment debug-fun &optional sfcache)
   (declare (type segment segment)
-          (type (or null sb!di:debug-function) debug-function)
+          (type (or null sb!di:debug-fun) debug-fun)
           (type (or null source-form-cache) sfcache))
   (let ((last-block-pc -1))
     (flet ((add-hook (pc fun &optional before-address)
                    :before-address before-address)
                   (seg-hooks segment))))
       (handler-case
-         (sb!di:do-debug-function-blocks (block debug-function)
+         (sb!di:do-debug-fun-blocks (block debug-fun)
            (let ((first-location-in-block-p t))
              (sb!di:do-debug-block-locations (loc block)
                (let ((pc (sb!di::compiled-code-location-pc loc)))
                  ))))
        (sb!di:no-debug-blocks () nil)))))
 
-(defun add-debugging-hooks (segment debug-function &optional sfcache)
-  (when debug-function
+(defun add-debugging-hooks (segment debug-fun &optional sfcache)
+  (when debug-fun
     (setf (seg-storage-info segment)
-         (storage-info-for-debug-function debug-function))
-    (add-source-tracking-hooks segment debug-function sfcache)
-    (let ((kind (sb!di:debug-function-kind debug-function)))
+         (storage-info-for-debug-fun debug-fun))
+    (add-source-tracking-hooks segment debug-fun sfcache)
+    (let ((kind (sb!di:debug-fun-kind debug-fun)))
       (flet ((anh (n)
               (push (make-offs-hook
                      :offset 0
 (defun get-function-segments (function)
   (declare (type compiled-function function))
   (let* ((code (fun-code function))
-        (function-map (code-function-map code))
+        (fun-map (code-fun-map code))
         (fname (sb!kernel:%function-name function))
         (sfcache (make-source-form-cache)))
     (let ((first-block-seen-p nil)
          (nil-block-seen-p nil)
          (last-offset 0)
-         (last-debug-function nil)
+         (last-debug-fun nil)
          (segments nil))
       (flet ((add-seg (offs len df)
               (when (> len 0)
                 (push (make-code-segment code offs len
-                                         :debug-function df
+                                         :debug-fun df
                                          :source-form-cache sfcache)
                       segments))))
-       (dotimes (fmap-index (length function-map))
-         (let ((fmap-entry (aref function-map fmap-index)))
+       (dotimes (fmap-index (length fun-map))
+         (let ((fmap-entry (aref fun-map fmap-index)))
            (etypecase fmap-entry
              (integer
               (when first-block-seen-p
                 (add-seg last-offset
                          (- fmap-entry last-offset)
-                         last-debug-function)
-                (setf last-debug-function nil))
+                         last-debug-fun)
+                (setf last-debug-fun nil))
               (setf last-offset fmap-entry))
-             (sb!c::compiled-debug-function
-              (let ((name (sb!c::compiled-debug-function-name fmap-entry))
-                    (kind (sb!c::compiled-debug-function-kind fmap-entry)))
+             (sb!c::compiled-debug-fun
+              (let ((name (sb!c::compiled-debug-fun-name fmap-entry))
+                    (kind (sb!c::compiled-debug-fun-kind fmap-entry)))
                 #+nil
                 (format t ";;; SAW ~S ~S ~S,~S ~D,~D~%"
                         name kind first-block-seen-p nil-block-seen-p
                         last-offset
-                        (sb!c::compiled-debug-function-start-pc fmap-entry))
+                        (sb!c::compiled-debug-fun-start-pc fmap-entry))
                 (cond (#+nil (eq last-offset fun-offset)
                              (and (equal name fname) (not first-block-seen-p))
                              (setf first-block-seen-p t))
                          (return))
                        (when first-block-seen-p
                          (setf nil-block-seen-p t))))
-                (setf last-debug-function
-                      (sb!di::make-compiled-debug-function fmap-entry code))
+                (setf last-debug-fun
+                      (sb!di::make-compiled-debug-fun fmap-entry code))
                 )))))
        (let ((max-offset (code-inst-area-length code)))
-         (when (and first-block-seen-p last-debug-function)
+         (when (and first-block-seen-p last-debug-fun)
            (add-seg last-offset
                     (- max-offset last-offset)
-                    last-debug-function))
+                    last-debug-fun))
          (if (null segments)
              (let ((offs (fun-insts-offset function)))
                (make-code-segment code offs (- max-offset offs)))
           (type length length))
   (let ((segments nil))
     (when code
-      (let ((function-map (code-function-map code))
+      (let ((fun-map (code-fun-map code))
            (sfcache (make-source-form-cache)))
        (let ((last-offset 0)
-             (last-debug-function nil))
+             (last-debug-fun nil))
          (flet ((add-seg (offs len df)
                   (let* ((restricted-offs
                           (min (max start-offset offs)
                     (when (> restricted-len 0)
                       (push (make-code-segment code
                                                restricted-offs restricted-len
-                                               :debug-function df
+                                               :debug-fun df
                                                :source-form-cache sfcache)
                             segments)))))
-           (dotimes (fmap-index (length function-map))
-             (let ((fmap-entry (aref function-map fmap-index)))
-               (etypecase fmap-entry
+           (dotimes (fun-map-index (length fun-map))
+             (let ((fun-map-entry (aref fun-map fun-map-index)))
+               (etypecase fun-map-entry
                  (integer
-                  (add-seg last-offset (- fmap-entry last-offset)
-                           last-debug-function)
-                  (setf last-debug-function nil)
-                  (setf last-offset fmap-entry))
-                 (sb!c::compiled-debug-function
-                  (setf last-debug-function
-                        (sb!di::make-compiled-debug-function fmap-entry
-                                                             code))))))
-           (when last-debug-function
+                  (add-seg last-offset (- fun-map-entry last-offset)
+                           last-debug-fun)
+                  (setf last-debug-fun nil)
+                  (setf last-offset fun-map-entry))
+                 (sb!c::compiled-debug-fun
+                  (setf last-debug-fun
+                        (sb!di::make-compiled-debug-fun fun-map-entry
+                                                        code))))))
+           (when last-debug-fun
              (add-seg last-offset
                       (- (code-inst-area-length code) last-offset)
-                      last-debug-function))))))
+                      last-debug-fun))))))
     (if (null segments)
        (make-code-segment code start-offset length)
        (nreverse segments))))
                           (stream *standard-output*)
                           (use-labels t))
   #!+sb-doc
-  "Disassemble the machine code associated with OBJECT, which can be a
+  "Disassemble the compiled code associated with OBJECT, which can be a
   function, a lambda expression, or a symbol with a function definition. If
   it is not already compiled, the compiler is called to produce something to
   disassemble."
           (type (or (member t) stream) stream)
           (type (member t nil) use-labels))
   (pprint-logical-block (*standard-output* nil :per-line-prefix "; ")
-    (let ((fun (compiled-function-or-lose object)))
-      (if (typep fun 'sb!kernel:byte-function)
-         (sb!c:disassem-byte-fun fun)
-         ;; We can't detect closures, so be careful.
-         (disassemble-function (fun-self fun)
-                               :stream stream
-                               :use-labels use-labels)))
+    (disassemble-function (compiled-function-or-lose object)
+                         :stream stream
+                         :use-labels use-labels)
     nil))
 
 ;;; Disassembles the given area of memory starting at ADDRESS and