From a3f7ae08d9e3d445d25ec57f3730b903969eeb81 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Mon, 6 May 2024 14:32:09 +0300 Subject: [PATCH] transform-list-item-seek: don't inline undumpable constants. Reported by bohonghuang. --- src/compiler/ir1opt.lisp | 3 +-- src/compiler/seqtran.lisp | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 503c9b529..8151930cb 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -1846,8 +1846,7 @@ (list #'compiler-style-warn "Lisp error during constant folding:~%~A" values)) t)) ((and (proper-list-of-length-p values 1)) - (replace-combination-with-constant (first values) call) - t) + (replace-combination-with-constant (first values) call)) (t (let ((dummies (make-gensym-list (length args)))) (transform-call diff --git a/src/compiler/seqtran.lisp b/src/compiler/seqtran.lisp index 8e87710d2..06ec82d6a 100644 --- a/src/compiler/seqtran.lisp +++ b/src/compiler/seqtran.lisp @@ -542,7 +542,11 @@ (abort-ir1-transform "Argument to ~a is not a proper list." name)) ((and cp c-list (member name '(assoc rassoc member)) (policy node (>= speed space)) - (not (nthcdr *list-open-code-limit* c-list))) + (not (nthcdr *list-open-code-limit* c-list)) + (not (and (producing-fasl-file) + (handler-case (maybe-emit-make-load-forms c-list) + ((or compiler-error error) () + t))))) `(let ,(mapcar (lambda (fun) `(,(second fun) ,(ensure-fun fun))) funs) ,(open-code c-list))) ((and cp (not c-list)) -- 2.11.4.GIT