Comment 5 for bug 310132

Revision history for this message
Alastair Bridgewater (alastair-bridgewater) wrote :

It appears that the only place that ir2-component-entries for a component is populated is compiler/entry:entry-analyze. This function calls compiler/entry:compute-entry-info in order to populate the entry-info structure. The following patch appears to fix the problem. However, src/compiler/entry:entry-analyze checks for an existing entry-info structure on each candidate lambda and I am unsure if this is dead code or if there are any consequences to processing a form multiple times with compiler/ir1tran:maybe-make-load-forms.

I should like to commit this at some point in the next week unless someone can tell me why it would be a bad idea to do so.

diff --git a/src/compiler/entry.lisp b/src/compiler/entry.lisp
index ae95297..83d5a00 100644
--- a/src/compiler/entry.lisp
+++ b/src/compiler/entry.lisp
@@ -51,7 +51,12 @@
     (when (policy bind (>= debug 1))
       (let ((args (functional-arg-documentation internal-fun)))
         (aver (not (eq args :unspecified)))
- (setf (entry-info-arguments info) args))
+ (setf (entry-info-arguments info) args)
+ ;; When the component is dumped, the arglists of the entry
+ ;; points will be dumped. If they contain values that need
+ ;; make-load-form processing then we need to do it now (bug
+ ;; 310132).
+ (maybe-emit-make-load-forms args))
       (setf (entry-info-type info) (type-specifier (leaf-type internal-fun)))))
   (values))