X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fentry.lisp;h=5f955ee78e23c49f9df5c73e50570522a3516cbd;hb=3a2c2a2217f77e0d1a44a581c83e0311ebc2594a;hp=142d6c2db794552308ea082de6ccae3320edb9d9;hpb=11214915e9b3151ec66dc3e30e1aa7638c676428;p=sbcl.git diff --git a/src/compiler/entry.lisp b/src/compiler/entry.lisp index 142d6c2..5f955ee 100644 --- a/src/compiler/entry.lisp +++ b/src/compiler/entry.lisp @@ -31,36 +31,22 @@ (select-component-format component) (values)) -;;; Takes the list representation of the debug arglist and turns it -;;; into a string. -;;; -;;; FIXME: Why don't we just save this as a list instead of converting -;;; it to a string? -(defun make-arg-names (x) - (declare (type functional x)) - (let ((args (functional-arg-documentation x))) - (aver (not (eq args :unspecified))) - (if (null args) - "()" - (let ((*print-pretty* t) - (*print-escape* t) - (*print-base* 10) - (*print-radix* nil) - (*print-case* :downcase)) - (write-to-string args))))) - ;;; Initialize INFO structure to correspond to the XEP LAMBDA FUN. (defun compute-entry-info (fun info) (declare (type clambda fun) (type entry-info info)) (let ((bind (lambda-bind fun)) (internal-fun (functional-entry-fun fun))) - (setf (entry-info-closure-p info) - (not (null (physenv-closure (lambda-physenv fun))))) + (setf (entry-info-closure-tn info) + (if (physenv-closure (lambda-physenv fun)) + (make-normal-tn *backend-t-primitive-type*) + nil)) (setf (entry-info-offset info) (gen-label)) (setf (entry-info-name info) (leaf-debug-name internal-fun)) (when (policy bind (>= debug 1)) - (setf (entry-info-arguments info) (make-arg-names internal-fun)) + (let ((args (functional-arg-documentation internal-fun))) + (aver (not (eq args :unspecified))) + (setf (entry-info-arguments info) args)) (setf (entry-info-type info) (type-specifier (leaf-type internal-fun))))) (values)) @@ -103,7 +89,9 @@ (setq res t)) (t (setf (ref-leaf ref) new) - (push ref (leaf-refs new))))))))) + (push ref (leaf-refs new)) + (setf (leaf-refs lambda) + (delq ref (leaf-refs lambda)))))))))) (:toplevel (setq res t)))) res))