--- Christophe Rhodes <[EMAIL PROTECTED]> wrote:
> That's right. The result will have to be boxed to be
> stored in
> hash-code, since it can be accessed from anywhere,
> and must look like a
> lisp object.
Hm. Ok, but presumably, the type declaration is
visible from anywhere that the variable is also
visible from?
>
> If you require no boxing, you could store your
> hash-code in a
> specialized vector of length one [created by
> (MAKE-ARRAY 1 :ELEMENT-TYPE
> '(UNSIGNED-BYTE 32))];
I thought of that, or using a struct, but that seems
clunky to say the least. Now, i found that, unless
i've messed up again, that even
(let ((foo 0))
(declare (type hash-type foo))
(defun bar(x)
(declare (type hash-type x))
(setf foo (logxor foo x))))
Still seems to cause boxing, except now it's
value-set-cell.
I can't disassemble bar now, either.
Part of the whole point of my little project is to
prove lisp can be as fast a C, so this isn't helping..
;)
dave
__________________________________________________
Do you Yahoo!?
Y! Web Hosting - Let the expert host your web site
http://webhosting.yahoo.com/