X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Feval.lisp;h=977cd3d74989fd93e92d419d6aa5a44d53291c75;hb=cee8ef591040db9a79cdd19297867672a9529051;hp=cafbb1cb88451c09805c665f7ee8461513d495cb;hpb=3352db3a8b45bc544473915ef25a4708f386be36;p=sbcl.git diff --git a/src/code/eval.lisp b/src/code/eval.lisp index cafbb1c..977cd3d 100644 --- a/src/code/eval.lisp +++ b/src/code/eval.lisp @@ -127,25 +127,13 @@ (declare (optimize (safety 1))) ;; (aver (lexenv-simple-p lexenv)) (incf *eval-calls*) - (handler-bind - ((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))))) + (sb!c:with-compiler-error-resignalling (let ((exp (macroexpand original-exp lexenv))) (handler-bind ((eval-error - (lambda (condition) - (error 'interpreted-program-error - :condition (encapsulated-condition condition) - :form exp)))) + (lambda (condition) + (error 'interpreted-program-error + :condition (encapsulated-condition condition) + :form exp)))) (typecase exp (symbol (ecase (info :variable :kind exp) @@ -241,13 +229,13 @@ (destructuring-bind (definitions &rest body) (rest exp) (let ((lexenv - (let ((sb!c:*lexenv* lexenv)) - (sb!c::funcall-in-macrolet-lexenv - definitions - (lambda (&key funs) - (declare (ignore funs)) - sb!c:*lexenv*) - :eval)))) + (let ((sb!c:*lexenv* lexenv)) + (sb!c::funcall-in-macrolet-lexenv + definitions + (lambda (&key funs) + (declare (ignore funs)) + sb!c:*lexenv*) + :eval)))) (simple-eval-locally `(locally ,@body) lexenv)))) ((symbol-macrolet) (destructuring-bind (definitions &rest body) (rest exp)