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@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.