X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fir1opt.lisp;h=78ae5a8d21fd0a9fd516151a4e7b3db21b5f207f;hb=2bf8ee5fcb49048c4d01c5c7ec274888d0fcb92f;hp=6da6828f7fb89fc50b9beec3a227bb1c0f385385;hpb=3d6751d99d2bf224ccbc18e133f23aff72fb708f;p=sbcl.git diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 6da6828..78ae5a8 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -1125,9 +1125,24 @@ (aver (and (legal-fun-name-p source-name) (not (eql source-name '.anonymous.)))) (node-ends-block call) + ;; The internal variables of a transform are not going to be + ;; interesting to the debugger, so there's no sense in + ;; suppressing the substitution of variables with only one use + ;; (the extra variables can slow down constraint propagation). + ;; + ;; This needs to be done before the WITH-IR1-ENVIRONMENT-FROM-NODE, + ;; so that it will bind *LEXENV* to the right environment. + (setf (combination-lexenv call) + (make-lexenv :default (combination-lexenv call) + :policy (process-optimize-decl + '(optimize + (preserve-single-use-debug-variables 0)) + (lexenv-policy + (combination-lexenv call))))) (with-ir1-environment-from-node call (with-component-last-block (*current-component* (block-next (node-block call))) + (let ((new-fun (ir1-convert-inline-lambda res :debug-name (debug-name 'lambda-inlined source-name) @@ -1135,17 +1150,6 @@ (ref (lvar-use (combination-fun call)))) (change-ref-leaf ref new-fun) (setf (combination-kind call) :full) - ;; The internal variables of a transform are not going to be - ;; interesting to the debugger, so there's no sense in - ;; suppressing the substitution of variables with only one use - ;; (the extra variables can slow down constraint propagation). - (setf (combination-lexenv call) - (make-lexenv :default (combination-lexenv call) - :policy (process-optimize-decl - '(optimize - (preserve-single-use-debug-variables 0)) - (lexenv-policy - (combination-lexenv call))))) (locall-analyze-component *current-component*)))) (values))