[movitz-cvs] CVS update: movitz/compiler.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Jan 4 16:53:47 UTC 2005


Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv1713

Modified Files:
	compiler.lisp 
Log Message:
Fixing dynamic control transfers, primarily to handle the
stack-allocated funobjs, but there seems to be a number of (other)
bugs here too. It's not quite working yet, though.

Date: Tue Jan  4 17:53:46 2005
Author: ffjeld

Index: movitz/compiler.lisp
diff -u movitz/compiler.lisp:1.125 movitz/compiler.lisp:1.126
--- movitz/compiler.lisp:1.125	Tue Jan  4 12:35:10 2005
+++ movitz/compiler.lisp	Tue Jan  4 17:53:46 2005
@@ -8,7 +8,7 @@
 ;;;; Created at:    Wed Oct 25 12:30:49 2000
 ;;;; Distribution:  See the accompanying file COPYING.
 ;;;;                
-;;;; $Id: compiler.lisp,v 1.125 2005/01/04 11:35:10 ffjeld Exp $
+;;;; $Id: compiler.lisp,v 1.126 2005/01/04 16:53:46 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -5912,6 +5912,8 @@
       "Lexical unwind-protect not implemented, to-env: ~S. (this is not supposed to happen)"
       to-env)
     ;; (warn "dist: ~S, slots: ~S" stack-distance num-dynamic-slots)
+    (assert (not (eq t num-dynamic-slots)) ()
+      "Don't know how to make lexical-control-transfer across unknown number of dynamic slots.")
     (cond
      ((and (eq t stack-distance)
 	   (eql 0 num-dynamic-slots))
@@ -5921,8 +5923,7 @@
 		      (unless (eq :function (exit-result-mode to-env))
 			`((:load-lexical ,(movitz-binding (save-esp-variable to-env) to-env nil) :esp)))
 		      `((:jmp ',to-label)))))
-     ((or (eq t stack-distance)
-	  (eq t num-dynamic-slots))
+     ((eq t stack-distance)
       (compiler-values ()
 	:returns :non-local-exit
 	:code (append return-code




More information about the Movitz-cvs mailing list