On Sun, Oct 13, 2002 at 02:34:52PM +0400, Alexey Dejneka wrote:
> Compilation of
> (declaim (optimize (speed 3) (safety 0)))
> (defun f (x)
> (setf (car x) 'a)
> dies with the message "Constant TNs can only be directly used in MOV,
> PUSH, and CMP." in SB-VM::EMIT-EA <- SB-VM::EMIT-RANDOM-ARITH-INST <-
> <- SB-VM::CMP-INST-EMITTER.
> The function SB-VM::EMIT-RANDOM-ARITH-INST is different in SBCL and
> CMUCL: in the latter it calls EMIT-EA with ALLOW-CONSTANTS, and in the
> former -- without. With CMUCL version the function above is compiled
> According to CVS E-R-A-I was never touched in any of repositories. So
> I don't understand how this change appeared and what were the reasons
> for it?
SBCL's source code has not always been under SourceForge CVS, or even
always under CVS. In the SBCL early versions I was renaming files so
often that I didn't feel like dealing with CVS and just kept versioned
tarballs, and later I kept SBCL under my own CVS repository for a
while before moving to SourceForge. So unfortunately "no record of
change in CVS" doesn't imply "no change in SBCL since the fork".
However, I don't remember changing ALLOW-CONSTANTS in that time, or
doing much change at all to things like EMIT-RANDOM-ARITH-INST, so
this might not be the explanation here.
I started SBCL from debian cmucl-2.4.7 or so, and if I understand
correctly there were some Debian-only patches which never made it into
CMU CL CVS. Possibly that could be what's going on here, since I can't
think of another likely explanation offhand.
William Harold Newman <william.newman@...>
overlooking factors of two in offsets and factors of three in
performance since 1982
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C