X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Ffull-eval.lisp;h=ca43691e37327a7da5c45134a0f260c9fbf01acb;hb=cee8ef591040db9a79cdd19297867672a9529051;hp=08af2682b5400462c95b3803a37a2d7cffbbfd0c;hpb=3352db3a8b45bc544473915ef25a4708f386be36;p=sbcl.git diff --git a/src/code/full-eval.lisp b/src/code/full-eval.lisp index 08af268..ca43691 100644 --- a/src/code/full-eval.lisp +++ b/src/code/full-eval.lisp @@ -1184,27 +1184,16 @@ (defun eval-in-native-environment (form lexenv) (handler-bind ((sb!impl::eval-error - (lambda (condition) - (error 'interpreted-program-error - :condition (sb!int:encapsulated-condition condition) - :form form))) - (sb!c:compiler-error - (lambda (c) - (if (boundp 'sb!c::*compiler-error-bailout*) - ;; if we're in the compiler, delegate either to a higher - ;; authority or, if that's us, back down to the - ;; outermost compiler handler... - (progn - (signal c) - nil) - ;; ... if we're not in the compiler, better signal the - ;; error straight away. - (invoke-restart 'sb!c::signal-error))))) - (handler-case - (let ((env (make-env-from-native-environment lexenv))) - (%eval form env)) - (compiler-environment-too-complex-error (condition) - (declare (ignore condition)) - (sb!int:style-warn 'sb!kernel:lexical-environment-too-complex - :form form :lexenv lexenv) - (sb!int:simple-eval-in-lexenv form lexenv))))) + (lambda (condition) + (error 'interpreted-program-error + :condition (sb!int:encapsulated-condition condition) + :form form)))) + (sb!c:with-compiler-error-resignalling + (handler-case + (let ((env (make-env-from-native-environment lexenv))) + (%eval form env)) + (compiler-environment-too-complex-error (condition) + (declare (ignore condition)) + (sb!int:style-warn 'sb!kernel:lexical-environment-too-complex + :form form :lexenv lexenv) + (sb!int:simple-eval-in-lexenv form lexenv))))))