[movitz-cvs] CVS update: movitz/losp/muerte/scavenge.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Thu May 5 20:51:56 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv19956
Modified Files:
scavenge.lisp
Log Message:
Changed order of arguments for %run-time-context-slot, new signature
is (context slot-name), where nil may be used as a designator for
(current-run-time-context).
Date: Thu May 5 22:51:55 2005
Author: ffjeld
Index: movitz/losp/muerte/scavenge.lisp
diff -u movitz/losp/muerte/scavenge.lisp:1.49 movitz/losp/muerte/scavenge.lisp:1.50
--- movitz/losp/muerte/scavenge.lisp:1.49 Wed Mar 9 08:24:16 2005
+++ movitz/losp/muerte/scavenge.lisp Thu May 5 22:51:55 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.49 2005/03/09 07:24:16 ffjeld Exp $
+;;;; $Id: scavenge.lisp,v 1.50 2005/05/05 20:51:55 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -84,6 +84,19 @@
(assert (evenp scan) ()
"Scanned struct-header ~S at odd location #x~X." x scan)
(setf *scan-last* (%word-offset scan #.(movitz:tag :other))))
+ ((scavenge-typep x :run-time-context)
+ (assert (evenp scan) ()
+ "Scanned run-time-context-header ~S at odd location #x~X."
+ (memref scan 0 :type :unsigned-byte32) scan)
+ (incf scan)
+ (let ((non-lispvals #.(cl:truncate (cl:+ -4 (bt:slot-offset 'movitz::movitz-run-time-context
+ 'movitz::pointer-start)
+ (movitz::image-nil-word movitz:*image*))
+ 4))
+ (end (+ scan #.(movitz::movitz-type-word-size 'movitz::movitz-run-time-context))))
+ (incf scan non-lispvals)
+ (map-lisp-vals function scan (1+ end))
+ (setf scan end)))
((scavenge-typep x :funobj)
(assert (evenp scan) ()
"Scanned funobj-header ~S at odd location #x~X."
@@ -213,7 +226,9 @@
(defun scavenge-find-pf (function location)
(loop for (slot-name type) in (slot-value (class-of (current-run-time-context)) 'slot-map)
do (when (eq type 'code-vector-word)
- (let ((it (scavenge-match-code-vector function (%run-time-context-slot slot-name) location)))
+ (let ((it (scavenge-match-code-vector function
+ (%run-time-context-slot nil slot-name)
+ location)))
(when it (return it))))))
(defun scavenge-find-code-vector (function location casf-funobj esi &optional primitive-function-p edx)
@@ -234,7 +249,9 @@
(scavenge-match-code-vector function x location)))))))
(cond
((scavenge-match-code-vector function (symbol-value 'ret-trampoline) location))
- ((scavenge-match-code-vector function (%run-time-context-slot 'dynamic-jump-next) location))
+ ((scavenge-match-code-vector function
+ (%run-time-context-slot nil 'dynamic-jump-next)
+ location))
((eq 0 casf-funobj)
(let ((dit-code-vector (symbol-value 'default-interrupt-trampoline)))
(cond
More information about the Movitz-cvs
mailing list