1.0.11.33: Oops, restore REPLACE deftransforms that got dropped in refactoring
[sbcl.git] / src / compiler / ir1tran-lambda.lisp
index f424f51..d882195 100644 (file)
       (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