[movitz-cvs] CVS update: movitz/losp/muerte/interrupt.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Thu Feb 3 09:19:00 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv3410
Modified Files:
interrupt.lisp
Log Message:
Changed the protocol (wrt. stack discipline) for dynamic control
transfer slightly, so that restart-atomically-continuation
(i.e. continue after an interrupt occurred inside an atomical
sequence) fits into it all.
Date: Thu Feb 3 10:18:55 2005
Author: ffjeld
Index: movitz/losp/muerte/interrupt.lisp
diff -u movitz/losp/muerte/interrupt.lisp:1.39 movitz/losp/muerte/interrupt.lisp:1.40
--- movitz/losp/muerte/interrupt.lisp:1.39 Wed Feb 2 11:48:49 2005
+++ movitz/losp/muerte/interrupt.lisp Thu Feb 3 10:18:55 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.39 2005/02/02 10:48:49 ffjeld Exp $
+;;;; $Id: interrupt.lisp,v 1.40 2005/02/03 09:18:55 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -84,7 +84,7 @@
(= 0 (ldb (byte 2 0) (dit-frame-ref stack dit-frame :atomically-continuation :unsigned-byte8))))
(stack-frame-ref stack atomically-location 0))
((null ebp) ; special dynamic control-transfer mode
- (stack-frame-ref stack (dit-frame-ref stack dit-frame :dynamic-env) 0))
+ (stack-frame-ref stack (dit-frame-ref stack dit-frame :scratch1) 0))
((< esp ebp)
ebp)
((eq esp ebp)
@@ -255,15 +255,12 @@
(: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 :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)))
+ (:locally (:movl :edx (:edi (:edi-offset dynamic-env)))) ; interruptee's dynamic-env
+ (:movl :ecx :edx)
+ (:locally (:call (:edi (:edi-offset dynamic-jump-next))))
+ (:int 63)
restart-simple-pf
;; ECX holds the run-time-context offset for us to load.
More information about the Movitz-cvs
mailing list