[movitz-cvs] CVS update: movitz/losp/muerte/arrays.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Sat Jun 11 00:01:57 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv16781
Modified Files:
arrays.lisp
Log Message:
Rename copy-vector to shallow-copy-vector, and have it understand
indirect-vectors. Should fix a GC issue.
Date: Sat Jun 11 02:01:56 2005
Author: ffjeld
Index: movitz/losp/muerte/arrays.lisp
diff -u movitz/losp/muerte/arrays.lisp:1.52 movitz/losp/muerte/arrays.lisp:1.53
--- movitz/losp/muerte/arrays.lisp:1.52 Sat Jun 11 01:08:16 2005
+++ movitz/losp/muerte/arrays.lisp Sat Jun 11 02:01:56 2005
@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;;;; Created at: Sun Feb 11 23:14:04 2001
;;;;
-;;;; $Id: arrays.lisp,v 1.52 2005/06/10 23:08:16 ffjeld Exp $
+;;;; $Id: arrays.lisp,v 1.53 2005/06/11 00:01:56 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -176,23 +176,25 @@
"Vector has no fill-pointer.")
(%basic-vector-fill-pointer vector))))
-(defun copy-vector (vector)
- (check-type vector vector)
+(defun shallow-copy-vector (vector)
+ (check-type vector (simple-array * 1))
(let ((length (the fixnum
(memref vector (movitz-type-slot-offset 'movitz-basic-vector 'num-elements)))))
- (ecase (vector-element-type-code vector)
- (#.(bt:enum-value 'movitz::movitz-vector-element-type :any-t)
- (%shallow-copy-object vector (+ 2 length)))
- (#.(bt:enum-value 'movitz::movitz-vector-element-type :u32)
- (%shallow-copy-non-pointer-object vector (+ 2 length)))
+ (ecase (memref vector (movitz-type-slot-offset 'movitz-basic-vector 'element-type)
+ :type :unsigned-byte8)
+ ((#.(bt:enum-value 'movitz::movitz-vector-element-type :any-t)
+ #.(bt:enum-value 'movitz::movitz-vector-element-type :indirects))
+ (%shallow-copy-object vector (+ 2 length)))
+ ((#.(bt:enum-value 'movitz::movitz-vector-element-type :u32))
+ (%shallow-copy-non-pointer-object vector (+ 2 length)))
((#.(bt:enum-value 'movitz::movitz-vector-element-type :character)
#.(bt:enum-value 'movitz::movitz-vector-element-type :u8)
#.(bt:enum-value 'movitz::movitz-vector-element-type :code))
(%shallow-copy-non-pointer-object vector (+ 2 (truncate (+ 3 length) 4))))
- (#.(bt:enum-value 'movitz::movitz-vector-element-type :u16)
- (%shallow-copy-non-pointer-object vector (+ 2 (truncate (+ 1 length) 2))))
- (#.(bt:enum-value 'movitz::movitz-vector-element-type :bit)
- (%shallow-copy-non-pointer-object vector (+ 2 (truncate (+ 31 length) 32)))))))
+ ((#.(bt:enum-value 'movitz::movitz-vector-element-type :u16))
+ (%shallow-copy-non-pointer-object vector (+ 2 (truncate (+ 1 length) 2))))
+ ((#.(bt:enum-value 'movitz::movitz-vector-element-type :bit))
+ (%shallow-copy-non-pointer-object vector (+ 2 (truncate (+ 31 length) 32)))))))
(defun (setf fill-pointer) (new-fill-pointer vector)
(etypecase vector
More information about the Movitz-cvs
mailing list