[movitz-cvs] CVS update: movitz/special-operators.lisp

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


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

Modified Files:
	special-operators.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:54:11 2005
Author: ffjeld

Index: movitz/special-operators.lisp
diff -u movitz/special-operators.lisp:1.47 movitz/special-operators.lisp:1.48
--- movitz/special-operators.lisp:1.47	Tue Jan  4 12:35:48 2005
+++ movitz/special-operators.lisp	Tue Jan  4 17:54:10 2005
@@ -8,7 +8,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Fri Nov 24 16:22:59 2000
 ;;;;                
-;;;; $Id: special-operators.lisp,v 1.47 2005/01/04 11:35:48 ffjeld Exp $
+;;;; $Id: special-operators.lisp,v 1.48 2005/01/04 16:54:10 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -1210,15 +1210,17 @@
 		      `((:load-lexical ,dynamic-slot-binding :edx)
 			(:locally (:movl :edx (:edi (:edi-offset raw-scratch0)))) ; final continuation
 			(:load-lexical ,next-continuation-step-binding :edx) ; next continuation-step
-			(:locally (:movl :esi (:edi (:edi-offset scratch1))))
-			(:locally (:movl :edx (:edi (:edi-offset dynamic-env)))) ; exit dynamic-env
-			(:movl :edx :esp) ; enter non-local jump stack mode.
-			  
-			(:movl (:esp) :edx) ; target stack-frame EBP
-			(:movl (:edx -4) :esi) ; get target funobj into ESI
-			  
-			(:movl (:esp 8) :edx) ; target jumper number
-			(:jmp (:esi :edx ,(slot-offset 'movitz-funobj 'constant0)))))))))
+			(:locally (:call (:edi (:edi-offset dynamic-jump-next))))))))))
+
+;;;			(:locally (:movl :esi (:edi (:edi-offset scratch1))))
+			
+
+;;;			(:locally (:movl :edx (:edi (:edi-offset dynamic-env)))) ; exit dynamic-env
+;;;			(:movl :edx :esp) ; enter non-local jump stack mode.
+;;;			(:movl (:esp) :edx) ; target stack-frame EBP
+;;;			(:movl (:edx -4) :esi) ; get target funobj into ESI
+;;;			(:movl (:esp 8) :edx) ; target jumper number
+;;;			(:jmp (:esi :edx ,(slot-offset 'movitz-funobj 'constant0)))))))))
 
 
 (define-special-operator muerte::with-basic-restart (&all defaults &form form &env env)
@@ -1297,10 +1299,10 @@
 			  :form body)
 			`((:leal (:esp ,(+ -12 -4 (* 4 entry-size))) :esp)
 			  ,exit-point
+			  (:movl (:esp) :ebp)
 			  (:movl (:esp 12) :edx)
 			  (:locally (:movl :edx (:edi (:edi-offset dynamic-env))))
-			  (:popl :ebp)
-			  (:leal (:esp 12) :esp)
+			  (:leal (:esp 16) :esp)
 			  )))))))
 
 




More information about the Movitz-cvs mailing list