[movitz-cvs] CVS update: movitz/losp/muerte/scavenge.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Fri Jul 23 15:27:43 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv4004
Modified Files:
scavenge.lisp
Log Message:
Added *map-heap-words-verbose* variable.
Date: Fri Jul 23 08:27:43 2004
Author: ffjeld
Index: movitz/losp/muerte/scavenge.lisp
diff -u movitz/losp/muerte/scavenge.lisp:1.24 movitz/losp/muerte/scavenge.lisp:1.25
--- movitz/losp/muerte/scavenge.lisp:1.24 Tue Jul 20 07:13:36 2004
+++ movitz/losp/muerte/scavenge.lisp Fri Jul 23 08:27:43 2004
@@ -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.24 2004/07/20 14:13:36 ffjeld Exp $
+;;;; $Id: scavenge.lisp,v 1.25 2004/07/23 15:27:43 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -28,6 +28,7 @@
;; etc. involved.
(defvar *scan*)
+(defvar *map-heap-words-verbose* nil)
(defun map-heap-words (function start-location end-location)
"Map function over each potential pointer word between
@@ -51,13 +52,16 @@
(:shrl 16 :eax)
(:testb ,movitz:+movitz-fixnum-zmask+ :al)
(:jnz '(:sub-program () (:int 63))))))
- (do ((*scan-last* nil) ; Last scanned object, for debugging.
+ (do ((verbose *map-heap-words-verbose*)
+ (*scan-last* nil) ; Last scanned object, for debugging.
(scan start-location (1+ scan)))
((>= scan end-location))
(declare (special *scan-last*))
(let ((*scan* scan)
(x (memref scan 0 0 :lisp)))
(declare (special *scan*))
+ (when verbose
+ (format *terminal-io* "~&MHW scanning at ~S: ~Z" scan x))
(cond
((typep x '(or null fixnum character)))
((scavenge-typep x :illegal)
@@ -132,6 +136,8 @@
(incf scan delta)))
((typep x 'pointer)
(let ((new (funcall function x scan)))
+ (when verbose
+ (format *terminal-io* " [~Z => ~Z]" x new))
(unless (eq new x)
(setf (memref scan 0 0 :lisp) new))))))))
(values))
@@ -203,6 +209,8 @@
"Is stack-frame in a primitive-function?
If so, return the primitive-function's code-vector."
(declare (ignore eip-location))
+ ;; XXXX Really we should make comparisons against :call-local-pf
+ ;; such that we find the active set of local-pf's from the stack-location!
(let ((return-address (memref stack-location 0 0 :unsigned-byte32))
(code-vector (funobj-code-vector funobj)))
(multiple-value-bind (return-location return-delta)
More information about the Movitz-cvs
mailing list