Re: COMPILE regression in Apr 2010 snapshot (?)

Raymond Toy <[email protected]>
Newsgroups gmane.lisp.cmucl.devel
Message-ID <[email protected]>
On 4/26/10 6:16 AM, Madhu wrote:
> * Raymond Toy <[email protected]> :
> Wrote on Sun, 25 Apr 2010 23:29:54 -0400:
>
> | 
> |
> | We now have:
> |
> | (PROGN
> |   (DECLAIM (SPECIAL ABC))
> |   (UNLESS (BOUNDP 'ABC)
> |     (SETQ ABC NIL))
> |   (SETF (DOCUMENTATION 'ABC 'VARIABLE) '"abc")
> |   (EVAL-WHEN (:LOAD-TOPLEVEL :EXECUTE)
> |     (SETF (INFO VARIABLE INTL:TEXTDOMAIN 'ABC) NIL))
> |   (LISP::SET-DEFVAR-SOURCE-LOCATION 'ABC (C::SOURCE-LOCATION))
> |   'ABC)
> |
> | I do not understand it, but that (setf info) causes the problem.  When
> | that is removed, cmucl behaves as it used to.  I don't understand why
> | that would cause the macro to be compiled again.
>
>
> My report may have been misleading: I do not think that macro is being
> compiled again, it just looks that way from the notes that CMUCL prints.
>
> I have not looked at the CMUCL code yet, but I my guess (without looking
> at any commits) is that this is more likely related to some source
> recording changes that may have been introduced.
>   
AFAIK, there have been no changes to source recording.

I think what is happening is that the eval-when for the (setf info) form
is causing the compiler to compile the top-level form.  It creates a
component name by looking up the source file and finds
frob-kevals-string form and uses that as the component name.  That's
what gets printed which makes it look like it's compiling
frob-keyvals-string again.  But it's really just compiling the defvar.

When the (setf (info ...)) is replaced by a (lisp::%%defvar ...) where
the new function %%defvar just calls (setf (info ...) ..), the printed
messages are much nicer.

So, I think it's not really a problem. Rather it's just a poor choice of
component name by the compiler.   So using %%defvar is a possible solution.

Ray
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.