From: Nathan F. <fr...@cs...> - 2004-08-03 20:16:30
|
I've been thinking about trying to bring up 64-bit SBCL on Tru64/Alpha lately. Right now, I'm just trying to make small changes to clean out some of the 32-bit assumptions in SBCL (and the current Alpha port)--mostly forward-porting bits and pieces of Christophe and Dan's work which obviously won't break things as they currently stand. While doing so (and writing new bit-vector sequence transforms), a question occured to me: Should functions like SB-KERNEL:%RAW-BITS return a different type depending on the platform (e.g. on x86, the return type is (UNSIGNED-BYTE 32); on 64-bit Alpha, it seems reasonable that it would return (UNSIGNED-BYTE 64))? As a corollary, is it worth renaming the 32BIT-LOGICAL-FOO family of functions to something like WORD-LOGICAL-FOO? Backward compatibility is not in the cards for the last change, but we have modular arithmetic now, which should allow for the same effect in portable Lisp code. And anybody who was using 32BIT-LOGICAL-FOOs was probably aware they were using an internal interface. Thoughts? Oh, I'd also like to add a new type, something like SB-VM:N-WORD-LG2-{ BITS,MASK} to express types for functions like SB-KERNEL:SHIFT-TOWARD-START and so forth. Any objections to those names? -- Nathan | From Man's effeminate slackness it begins. --Paradise Lost |
From: Christophe R. <cs...@ca...> - 2004-08-03 22:16:29
|
Nathan Froyd <fr...@cs...> writes: > Should functions like SB-KERNEL:%RAW-BITS return a different type > depending on the platform (e.g. on x86, the return type is > (UNSIGNED-BYTE 32); on 64-bit Alpha, it seems reasonable that it > would return (UNSIGNED-BYTE 64))? Almost certainly, yes. > As a corollary, is it worth renaming the 32BIT-LOGICAL-FOO family of > functions to something like WORD-LOGICAL-FOO? Backward > compatibility is not in the cards for the last change, but we have > modular arithmetic now, which should allow for the same effect in > portable Lisp code. And anybody who was using 32BIT-LOGICAL-FOOs > was probably aware they were using an internal interface. Thoughts? I think in my branch I had 64bit-logical-foo: I'm not sure what Dan has in his. WORD-LOGICAL-FOO is fine as long as it makes the overall source simpler: if it is possible to express nasty things like bit-bash and the bignum interface purely in terms of the 'portable' operators, fine; if not, then it's probably not a useful abstraction. I think it _ought_ to be possible to remove 32-bit assumptions from everywhere, but I am very conscious that the alpha64 branch has made no effort to do so, at least in the bignum area: I believe the bit-bash area was cleaned up, as it was necessary to make printing most-positive-fixnum work :-) Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |