[movitz-cvs] CVS update: movitz/losp/muerte/primitive-functions.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Apr 13 13:28:31 UTC 2004


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

Modified Files:
	primitive-functions.lisp 
Log Message:
Added the same change for undwind-protect as the other dynamic
control-transfer mechanisms: Use a jumper-table index rather than EIP
directly in the on-stack structure.

Date: Tue Apr 13 09:28:31 2004
Author: ffjeld

Index: movitz/losp/muerte/primitive-functions.lisp
diff -u movitz/losp/muerte/primitive-functions.lisp:1.8 movitz/losp/muerte/primitive-functions.lisp:1.9
--- movitz/losp/muerte/primitive-functions.lisp:1.8	Tue Apr 13 09:02:33 2004
+++ movitz/losp/muerte/primitive-functions.lisp	Tue Apr 13 09:28:31 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Oct  2 21:02:18 2001
 ;;;;                
-;;;; $Id: primitive-functions.lisp,v 1.8 2004/04/13 13:02:33 ffjeld Exp $
+;;;; $Id: primitive-functions.lisp,v 1.9 2004/04/13 13:28:31 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -103,7 +103,7 @@
 
 ;;; Unwind-protect entry:
 ;;;   12: parent
-;;;    8: eip
+;;;    8: jumper index (=> eip)
 ;;;    4: tag = #:unwind-protect-tag
 ;;;    0: ebp/stack-frame
 
@@ -176,7 +176,8 @@
     (:locally (:movl :ebx (:edi (:edi-offset dynamic-env))))
     (:movl (:eax 0) :ebp)		; install clean-up's stack-frame (but keep our ESP)
     (:movl (:ebp -4) :esi)		; ..and install clean-up's funobj in ESI
-    (:call (:eax 8))
+    (:movl (:eax 8) :edx)
+    (:call (:esi :edx #.(bt:slot-offset 'movitz:movitz-funobj 'movitz::constant0)))
     (:popl :edx)			; restoure our EDX
     (:popl :ebp)			; restore our EBP
     (:subl 4 :edx)			; ..slide EDX to next position inside stack-frame.





More information about the Movitz-cvs mailing list