From: Nathan F. <fr...@cs...> - 2004-12-09 16:28:43
|
On Thu, Dec 09, 2004 at 04:09:01PM +0000, Christophe Rhodes wrote: > Christophe Rhodes <cs...@ca...> writes: > > > Hmm. It didn't for me -- it failed to do the random-state stuff in > > print.impure.lisp. I don't know why it's broken yet, I'm afraid. > > I think I do now. > > The problem lies in the subtlety that while adding two UNSIGNEDs gets > you a register pattern that can be interpreted as another UNSIGNED, > the same is not true of positive FIXNUMs. Doh. *hides head in shame* OK, maybe modular fixnum arithmetic is not going to fly. Maybe I went about this the wrong way. Perhaps CUT-TO-WIDTH could be changed to not cut if it can determine that the result type is fixnum. And the the constant * transform could be tweaked to not use (unsigned-byte 32) arithmetic if it doesn't need to (e.g. something like what you posted earlier, although eliminating the masking when appropriate may be difficult...). Anyway, I'll pull the changes out of CVS so everybody can build again and ansi-tests can be happy. :) -- Nathan | From Man's effeminate slackness it begins. --Paradise Lost |