Update of /project/movitz/cvsroot/movitz In directory clnet:/tmp/cvs-serv29847
Modified Files: compiler.lisp Log Message: If a compiler-macro signals error, print a warning and pretend the compiler-macro declined.
--- /project/movitz/cvsroot/movitz/compiler.lisp 2006/04/10 11:49:41 1.167 +++ /project/movitz/cvsroot/movitz/compiler.lisp 2006/04/28 23:20:45 1.168 @@ -8,7 +8,7 @@ ;;;; Created at: Wed Oct 25 12:30:49 2000 ;;;; Distribution: See the accompanying file COPYING. ;;;; -;;;; $Id: compiler.lisp,v 1.167 2006/04/10 11:49:41 ffjeld Exp $ +;;;; $Id: compiler.lisp,v 1.168 2006/04/28 23:20:45 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -5550,9 +5550,13 @@ (compiler-call (movitz-special-operator-compiler operator) :forward all) (let* ((compiler-macro-function (movitz-compiler-macro-function operator env)) (compiler-macro-expansion (and compiler-macro-function - (funcall *movitz-macroexpand-hook* - compiler-macro-function - form env)))) + (handler-case + (funcall *movitz-macroexpand-hook* + compiler-macro-function + form env) + (error (c) + (warn "Compiler-macro for ~S failed: ~A" operator c) + form))))) (cond ((and compiler-macro-function (not (movitz-env-get operator 'notinline nil env)) @@ -6671,7 +6675,6 @@ (define-extended-code-expander :cons-get (instruction funobj frame-map) (destructuring-bind (op cell dst) (cdr instruction) - (check-type cell lexical-binding) (check-type dst (member :eax :ebx :ecx :edx)) (multiple-value-bind (op-offset fast-op fast-op-ebx) (ecase op @@ -6684,8 +6687,7 @@ (let* ((binding (binding-target (ensure-local-binding (binding-target cell) funobj))) (location (new-binding-location (binding-target binding) frame-map)) (binding-is-list-p (binding-store-subtypep binding 'list))) - #+ignore (warn "car of loc ~A bind ~A" - location binding) + #+ignore (warn "~A of loc ~A bind ~A" op location binding) (cond ((and binding-is-list-p (member location '(:eax :ebx :ecx :edx)))