[movitz-cvs] CVS movitz

ffjeld ffjeld at common-lisp.net
Fri Apr 28 23:20:45 UTC 2006


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)))




More information about the Movitz-cvs mailing list