X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir1tran-lambda.lisp;h=ce0672774af8d5d1cc1c67f6aba5faab96614738;hb=a189a69454ef7635149319ae213b337f17c50d20;hp=10e2b08fe156368b3ff29954e56773493a541574;hpb=c017b878e30a0bc9a175d3f5a1a4d3537804160c;p=sbcl.git diff --git a/src/compiler/ir1tran-lambda.lisp b/src/compiler/ir1tran-lambda.lisp index 10e2b08..ce06727 100644 --- a/src/compiler/ir1tran-lambda.lisp +++ b/src/compiler/ir1tran-lambda.lisp @@ -911,10 +911,13 @@ ,*current-path*)))) (min (or (position-if #'lambda-var-arg-info vars) (length vars)))) (aver-live-component *current-component*) - (push res (component-new-functionals *current-component*)) (ir1-convert-hairy-args res () () () () vars nil body aux-vars aux-vals source-name debug-name nil post-binding-lexenv system-lambda) + ;; ir1-convert-hairy-args can throw 'locall-already-let-converted + ;; push optional-dispatch into the current component only after it + ;; normally returned + (push res (component-new-functionals *current-component*)) (setf (optional-dispatch-min-args res) min) (setf (optional-dispatch-max-args res) (+ (1- (length (optional-dispatch-entry-points res))) min))