4 Jan 2004 00:01
Various brokennesses
Christophe Rhodes <csr21 <at> cam.ac.uk>
2004-01-03 23:01:07 GMT
2004-01-03 23:01:07 GMT
So, firstly, as pointed out by Paul Dietz, my implementation of
modular multiplication on the x86 appears to be broken, in that (as of
sbcl-0.8.7.5):
* (funcall
(compile
nil
'(lambda (a)
(declare (type (integer 177547470 226026978) a))
(declare (optimize (speed 3) (space 0) (safety 0) (debug 0)
(compilation-speed 1)))
(logand a (* a 438810))))
215067723)
; in: LAMBDA (A)
; (LOGAND A (* A 438810))
;
; note: deleting unreachable code
; compilation unit finished
; printed 1 note
debugger invoked on a TYPE-ERROR in thread 2649:
The value 215067723 is not of type (INTEGER 177547470 226026978).
[ this does not happen if the form is (logand #xffffffff (* a 438810));
it _does_ happen if the form is (logand #xffff0000 (* a 438810)).
Any ideas? It looks like another "lying to the compiler" thing
prompted by OPTIMIZE-MULTIPLY, but what? ]
So, given that I'm not in a great position for first-stone casting,
I'm not convinced that the latest GC refactoring is entirely
(Continue reading)
This will land you back with the same ghastly fragmentation behaviour
that 0.8.7 had, but I think it's the case that we had said behaviour
throughout the 0.8 series, and I'm the only person to have objected so
RSS Feed