[movitz-cvs] CVS update: movitz/losp/muerte/scavenge.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Thu Jan 27 09:01:28 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv23073
Modified Files:
scavenge.lisp
Log Message:
Fixed the situation when an interrupt occures inside dynamic-jump-next.
Date: Thu Jan 27 01:01:27 2005
Author: ffjeld
Index: movitz/losp/muerte/scavenge.lisp
diff -u movitz/losp/muerte/scavenge.lisp:1.42 movitz/losp/muerte/scavenge.lisp:1.43
--- movitz/losp/muerte/scavenge.lisp:1.42 Wed Jan 26 23:46:49 2005
+++ movitz/losp/muerte/scavenge.lisp Thu Jan 27 01:01:27 2005
@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;;;; Created at: Mon Mar 29 14:54:08 2004
;;;;
-;;;; $Id: scavenge.lisp,v 1.42 2005/01/27 07:46:49 ffjeld Exp $
+;;;; $Id: scavenge.lisp,v 1.43 2005/01/27 09:01:27 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -199,9 +199,16 @@
((match-funobj esi location))
((not (typep casf-funobj 'function))
(break "Unknown funobj/frame-type: ~S" casf-funobj))
+ ((location-in-object-p (%run-time-context-slot 'dynamic-jump-next) location)
+ (%run-time-context-slot 'dynamic-jump-next))
((when searchp
(%find-code-vector location)))
- (t (error "Unable to decode EIP #x~X funobj ~S." location casf-funobj)))))
+ (t (with-simple-restart (continue "Try to perform a code-vector-search.")
+ (error "Unable to decode EIP #x~X funobj ~S, ESI ~S."
+ (* 4 location) casf-funobj esi))
+ (or (%find-code-vector location)
+ (error "Code-vector-search for EIP #x~X also failed."
+ (* 4 location)))))))
(defun map-stack-value (function value frame)
(if (not (typep value 'pointer))
@@ -305,7 +312,6 @@
(eq x1-tag 3) ; 3 or 7?
(and (oddp x1-location) (eq x1-tag 2))) ; 6?
(location-in-object-p casf-code-vector x1-location))
- (warn "X1: ~S ~S" x1-location x1-tag)
(let* ((old-x1-code-vector
(scavenge-find-code-vector (stack-frame-ref nil next-eip-index 0 :location)
casf-funobj interrupted-esi t)))
More information about the Movitz-cvs
mailing list