I have code very like the following in CMUCL:

(deftype hash-type () '(unsigned-byte 32))


(defparameter hash-code 0)
(declaim (type hash-type hash-code))

(defun foo( x )
  (declare (type hash-type x))
  (setf hash-code (logxor hash-code x)))

this always gives me a warning :

note: doing unsigned work to integer conversion (cost
20) for: 
the second argument of SET

it doesn't seem to matter if i make hash-type fixnum
or not.  This whole operation is quite expensive and
happens deep in an inner loop in my code.  The warning
seems to indicate to me that the xor takes place just
fine, then the result is being unboxed for some
reason?!?  

dave

__________________________________________________
Do you Yahoo!?
Y! Web Hosting - Let the expert host your web site
http://webhosting.yahoo.com/

Reply via email to