Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv25249
Modified Files: primitive-functions.lisp Log Message: Make dynamic-unwind-next preserve EDX.
Date: Thu Oct 7 14:44:18 2004 Author: ffjeld
Index: movitz/losp/muerte/primitive-functions.lisp diff -u movitz/losp/muerte/primitive-functions.lisp:1.45 movitz/losp/muerte/primitive-functions.lisp:1.46 --- movitz/losp/muerte/primitive-functions.lisp:1.45 Sat Sep 25 17:51:22 2004 +++ movitz/losp/muerte/primitive-functions.lisp Thu Oct 7 14:44:17 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.45 2004/09/25 15:51:22 ffjeld Exp $ +;;;; $Id: primitive-functions.lisp,v 1.46 2004/10/07 12:44:17 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -113,11 +113,10 @@ (define-primitive-function dynamic-unwind-next (dynamic-env) "Locate the next unwind-protect entry between here and dynamic-env. If no such entry is found, return (same) dynamic-env in EAX and CF=0. -Otherwise return the unwind-protect entry in EAX and CF=1." +Otherwise return the unwind-protect entry in EAX and CF=1. Preserve EDX." (with-inline-assembly (:returns :nothing) (:locally (:bound (:edi (:edi-offset stack-bottom)) :eax)) - - (:globally (:movl (:edi (:edi-offset unwind-protect-tag)) :edx)) + (:globally (:movl (:edi (:edi-offset unwind-protect-tag)) :ebx)) (:locally (:movl (:edi (:edi-offset dynamic-env)) :ecx))
search-loop @@ -127,7 +126,7 @@ (:cmpl :ecx :eax) (:je 'found-dynamic-env)
- (:cmpl :edx (:ecx 4)) ; unwind-protect entry? + (:cmpl :ebx (:ecx 4)) ; unwind-protect entry? (:je 'found-unwind-protect)
(:movl (:ecx 12) :ecx) ; proceed search