X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fentry.lisp;h=33ea6cc6ec98ef992cf084ae9452a20927f24fac;hb=683874b497a99cd2c11b6c5d9b47e2785b1ede5f;hp=1b1e56df2cb11b3b30972ed0fd0c9d26c29df3fb;hpb=7fd2eb4b1bc68e8aaec233c4a39bdfc40225bda2;p=sbcl.git diff --git a/src/compiler/entry.lisp b/src/compiler/entry.lisp index 1b1e56d..33ea6cc 100644 --- a/src/compiler/entry.lisp +++ b/src/compiler/entry.lisp @@ -54,57 +54,57 @@ (defun compute-entry-info (fun info) (declare (type clambda fun) (type entry-info info)) (let ((bind (lambda-bind fun)) - (internal-fun (functional-entry-function fun))) + (internal-fun (functional-entry-fun fun))) (setf (entry-info-closure-p info) (not (null (physenv-closure (lambda-physenv fun))))) (setf (entry-info-offset info) (gen-label)) (setf (entry-info-name info) - (let ((name (leaf-name internal-fun))) - (or name - (component-name (block-component (node-block bind)))))) + (leaf-debug-name internal-fun)) (when (policy bind (>= debug 1)) (setf (entry-info-arguments info) (make-arg-names internal-fun)) (setf (entry-info-type info) (type-specifier (leaf-type internal-fun))))) (values)) ;;; Replace all references to COMPONENT's non-closure XEPs that appear -;;; in top-level or externally-referenced components, changing to -;;; :TOP-LEVEL-XEP FUNCTIONALs. If the cross-component ref is not in a -;;; :TOP-LEVEL/externally-referenced component, or is to a closure, +;;; in top level or externally-referenced components, changing to +;;; :TOPLEVEL-XEP FUNCTIONALs. If the cross-component ref is not in a +;;; :TOPLEVEL/externally-referenced component, or is to a closure, ;;; then substitution is suppressed. ;;; ;;; When a cross-component ref is not substituted, we return T to ;;; indicate that early deletion of this component's IR1 should not be ;;; done. We also return T if this component contains -;;; :TOP-LEVEL/externally-referenced lambdas (though it is not a -;;; :TOP-LEVEL component.) +;;; :TOPLEVEL/externally-referenced lambdas (though it is not a +;;; :TOPLEVEL component.) ;;; ;;; We deliberately don't use the normal reference deletion, since we ;;; don't want to trigger deletion of the XEP (although it shouldn't ;;; hurt, since this is called after COMPONENT is compiled.) Instead, ;;; we just clobber the REF-LEAF. -(defun replace-top-level-xeps (component) +(defun replace-toplevel-xeps (component) (let ((res nil)) (dolist (lambda (component-lambdas component)) (case (functional-kind lambda) (:external (unless (lambda-has-external-references-p lambda) - (let* ((ef (functional-entry-function lambda)) - (new (make-functional :kind :top-level-xep - :info (leaf-info lambda) - :name (leaf-name ef) - :lexenv (make-null-lexenv))) + (let* ((ef (functional-entry-fun lambda)) + (new (make-functional + :kind :toplevel-xep + :info (leaf-info lambda) + :%source-name (functional-%source-name ef) + :%debug-name (functional-%debug-name ef) + :lexenv (make-null-lexenv))) (closure (physenv-closure (lambda-physenv (main-entry ef))))) (dolist (ref (leaf-refs lambda)) (let ((ref-component (block-component (node-block ref)))) (cond ((eq ref-component component)) - ((or (not (component-top-levelish-p ref-component)) + ((or (not (component-toplevelish-p ref-component)) closure) (setq res t)) (t (setf (ref-leaf ref) new) (push ref (leaf-refs new))))))))) - (:top-level + (:toplevel (setq res t)))) res))