From: Christophe R. <cs...@ca...> - 2003-01-24 10:21:50
|
Gerd Moellmann <ger...@t-...> writes: > Christophe Rhodes <cs...@ca...> writes: >=20 > > The first, as reported by Stig Sand=F8 on #lisp IRC, is an annoyance > > rather than a critical bug. But it's quite an annoyance, as can be > > seen from the following transcript: > >=20 > > * (defclass foo () ()) > >=20=20=20 > > #<STANDARD-CLASS FOO> >=20 > [...] >=20 > > These code deletion notes only occur when a variable has the same name >=20 > I'm afraid I don't see that here. I've tried at the REPL and > with compiling a file. I'm using my PCL. Damn. OK. On more reflection (and some tracing), it doesn't look like the %CLASS declaration can be the culprit, given that CAN-OPTIMIZE-ACCESS1 (which seems to be the only place that cares about said %CLASS declaration) doesn't get called in the fragments that trigger the note. The fact remains that SPLIT-DECLARATIONS is splitting the declarations wrongly, which might cause some non-optimal slot access later on. (I don't know how often that code path is taken) As for these notes, ugh. Even after sleeping on it, I don't have much idea. Walking two DEFMETHOD forms, one with a variable name the same as a class name, one without, yields identical expansions apart from the position of the %CLASS declaration for that argument. Thanks, Christophe --=20 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 #36rJesusCollegeCambri= dge) |