(binding* (((*lexenv* result-type post-binding-lexenv)
(process-decls decls (append aux-vars vars) nil
:binding-form-p t))
- (forms (if (and maybe-add-debug-catch
- *allow-instrumenting*
- (policy *lexenv* (>= insert-debug-catch 2)))
+ (debug-catch-p (and maybe-add-debug-catch
+ *allow-instrumenting*
+ (policy *lexenv*
+ (>= insert-debug-catch 2))))
+ (forms (if debug-catch-p
(wrap-forms-in-debug-catch forms)
forms))
(forms (if (eq result-type *wild-type*)
res))))
(defun wrap-forms-in-debug-catch (forms)
+ #!+unwind-to-frame-and-call-vop
+ `((multiple-value-prog1
+ (progn
+ ,@forms)
+ ;; Just ensure that there won't be any tail-calls, IR2 magic will
+ ;; handle the rest.
+ (values)))
+ #!-unwind-to-frame-and-call-vop
`( ;; Normally, we'll return from this block with the below RETURN-FROM.
(block
return-value-tag