0.8.20.1: fun-name fun, debugger debugged
[sbcl.git] / src / compiler / ir1-translators.lisp
index 274ce42..95d5748 100644 (file)
   (reference-constant start next result thing))
 \f
 ;;;; FUNCTION and NAMED-LAMBDA
+(defun name-lambdalike (thing)
+  (ecase (car thing)
+    ((named-lambda)
+     (second thing))
+    ((lambda instance-lambda)
+     `(lambda ,(second thing)))
+    ((lambda-with-lexenv)'
+     `(lambda ,(fifth thing)))))
+
 (defun fun-name-leaf (thing)
   (if (consp thing)
       (cond
                 '(lambda named-lambda instance-lambda lambda-with-lexenv))
         (values (ir1-convert-lambdalike
                   thing
-                  :debug-name (debug-namify "#'" thing))
+                  :debug-name (name-lambdalike thing))
                  t))
        ((legal-fun-name-p thing)
         (values (find-lexically-apparent-fun
                            (let ((fun (ir1-convert-lambda-body
                                        forms
                                        vars
-                                       :debug-name (debug-namify "LET S"
-                                                                 bindings))))
+                                       :debug-name (debug-name 'let bindings))))
                              (reference-leaf start ctran fun-lvar fun))
                            (values next result))))
                (ir1-convert-combination-args fun-lvar ctran next result values)))))
       (let ((fvars (mapcar (lambda (n d)
                              (ir1-convert-lambda d
                                                  :source-name n
-                                                 :debug-name (debug-namify
-                                                              "FLET " n)))
+                                                 :debug-name (debug-name 'flet n)))
                            names defs)))
         (processing-decls (decls nil fvars next result)
           (let ((*lexenv* (make-lexenv :funs (pairlis names fvars))))
              (placeholder-funs (mapcar (lambda (name)
                                          (make-functional
                                           :%source-name name
-                                          :%debug-name (debug-namify
-                                                        "LABELS placeholder "
+                                          :%debug-name (debug-name 
+                                                        'labels-placeholder 
                                                         name)))
                                        names))
              ;; (like PAIRLIS but guaranteed to preserve ordering:)
                 (mapcar (lambda (name def)
                           (ir1-convert-lambda def
                                               :source-name name
-                                              :debug-name (debug-namify
-                                                           "LABELS " name)))
+                                              :debug-name (debug-name 'labels name)))
                         names defs))))
 
         ;; Modify all the references to the dummy function leaves so
                (ir1-convert-lambda
                 `(lambda ()
                    (return-from ,tag (%unknown-values)))
-                :debug-name (debug-namify "escape function for " tag))))
+                :debug-name (debug-name 'escape-fun tag))))
         (ctran (make-ctran)))
     (setf (functional-kind fun) :escape)
     (ir1-convert start ctran nil `(%%allocate-closures ,fun))