[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