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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Wed Feb 2 07:50:26 UTC 2005


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

Modified Files:
	interrupt.lisp 
Log Message:
Fixed DIT's restarting of atomically-continuations.

Date: Wed Feb  2 08:50:25 2005
Author: ffjeld

Index: movitz/losp/muerte/interrupt.lisp
diff -u movitz/losp/muerte/interrupt.lisp:1.37 movitz/losp/muerte/interrupt.lisp:1.38
--- movitz/losp/muerte/interrupt.lisp:1.37	Fri Jan 28 09:49:07 2005
+++ movitz/losp/muerte/interrupt.lisp	Wed Feb  2 08:50:25 2005
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Wed Apr  7 01:50:03 2004
 ;;;;                
-;;;; $Id: interrupt.lisp,v 1.37 2005/01/28 08:49:07 ffjeld Exp $
+;;;; $Id: interrupt.lisp,v 1.38 2005/02/02 07:50:25 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -141,12 +141,12 @@
 	    (:locally (:movl 0 (:edi (:edi-offset atomically-continuation))))
 	    
 	    ;; Do RET atomicification
-	    (:movl (:ebp ,(dit-frame-offset :eip)) :ecx)
-	    ((:cs-override) :cmpb ,(realpart (ia-x86:asm :ret)) (:ecx))
-	    (:jne 'not-at-ret-instruction)
-	    (:globally (:movl (:edi (:edi-offset ret-trampoline)) :ecx))
-	    (:movl :ecx (:ebp ,(dit-frame-offset :eip)))
-	   not-at-ret-instruction
+;;;	    (:movl (:ebp ,(dit-frame-offset :eip)) :ecx)
+;;;	    ((:cs-override) :cmpb ,(realpart (ia-x86:asm :ret)) (:ecx))
+;;;	    (:jne 'not-at-ret-instruction)
+;;;	    (:globally (:movl (:edi (:edi-offset ret-trampoline)) :ecx))
+;;;	    (:movl :ecx (:ebp ,(dit-frame-offset :eip)))
+;;;	   not-at-ret-instruction
 	    
 	    (:xorl :eax :eax)		; Ensure safe value
 	    (:xorl :edx :edx)		; Ensure safe value
@@ -251,14 +251,16 @@
 	    (:jnz 'restart-simple-pf)
 
 	    ;; ECX is a throw target aka. next continuation step.
-	    (:locally (:movl :esi (:edi (:edi-offset scratch1))))
+	    
+	    (:movl :edi :esi)		; before bumping ESP, remove reference to funobj..
+					; ..in case it's stack-allocated.
 	    (:movl (:ecx 12) :edx)
 	    (:locally (:movl :edx (:edi (:edi-offset dynamic-env)))) ; exit to target dynamic-env
-	    (:movl :ecx :esp)		; enter non-local jump stack mode.
 	    
+	    (:movl :edi :ebp)		; enter non-local jump stack mode.
+	    (:movl :ecx :esp)		; 
 	    (:movl (:esp) :ecx)		; target stack-frame EBP
 	    (:movl (:ecx -4) :esi)	; get target funobj into ESI
-	    
 	    (:movl (:esp 8) :ecx)	; target jumper number
 	    (:jmp (:esi :ecx (:offset movitz-funobj constant0)))
 	    




More information about the Movitz-cvs mailing list