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))
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 entry.lisp entry.lisp arg-documentati on internal-fun))) info-arguments info) args)) info-arguments info) args) emit-make- load-forms args))
index ae95297..83d5a00 100644
--- a/src/compiler/
+++ b/src/compiler/
@@ -51,7 +51,12 @@
(when (policy bind (>= debug 1))
(let ((args (functional-
(aver (not (eq args :unspecified)))
- (setf (entry-
+ (setf (entry-
+ ;; 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-
(setf (entry-info-type info) (type-specifier (leaf-type internal-fun)))))
(values))