[movitz-cvs] CVS update: movitz/losp/muerte/scavenge.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Mon Jul 19 14:44:25 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv6862
Modified Files:
scavenge.lisp
Log Message:
Minor bignum tweaks.
Date: Mon Jul 19 07:44:25 2004
Author: ffjeld
Index: movitz/losp/muerte/scavenge.lisp
diff -u movitz/losp/muerte/scavenge.lisp:1.19 movitz/losp/muerte/scavenge.lisp:1.20
--- movitz/losp/muerte/scavenge.lisp:1.19 Wed Jul 14 17:27:34 2004
+++ movitz/losp/muerte/scavenge.lisp Mon Jul 19 07:44:25 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.19 2004/07/15 00:27:34 ffjeld Exp $
+;;;; $Id: scavenge.lisp,v 1.20 2004/07/19 14:44:25 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -48,8 +48,9 @@
"If x is a bignum header word, return the number of bigits."
`(with-inline-assembly (:returns :eax)
(:compile-form (:result-mode :eax) ,x)
- (:andl #xfffc0000 :eax)
- (:shrl 16 :eax))))
+ (:shrl 16 :eax)
+ (:testb ,movitz:+movitz-fixnum-zmask+ :al)
+ (:jnz '(:sub-program () (:int 107))))))
(do ((*scan-last* nil) ; Last scanned object, for debugging.
(scan start-location (1+ scan)))
((>= scan end-location))
@@ -66,7 +67,7 @@
"Scanned ~Z at odd address #x~X." x scan)
;; Just skip the bigits
(let* ((bigits (word-bigits x))
- (delta (1+ (logand bigits -2))))
+ (delta (logior bigits 1)))
(setf *scan-last* (%word-offset scan #.(movitz:tag :other)))
(incf scan delta)))
((scavenge-typep x :funobj)
More information about the Movitz-cvs
mailing list