Re: Compiled COMPILE forms at load time Bug

Helmut Eller <[email protected]>
Newsgroups gmane.lisp.cmucl.devel
Message-ID <[email protected]>
* Raymond Toy [2010-03-11 15:18+0100] writes:

> On 3/10/10 1:27 PM, Helmut Eller wrote:
>>
>> We could add this
>>
>>   (when (typep definition '(and function (not eval:interpreted-function)))
>>     (when name (setf (fdefinition name) definition))
>>     (return-from compile (values definition nil nil)))
>>   
>
> If I understand this correctly, this will just return the original
> definition.  

Right.  And this should also work if the function has no debug-info at
all e.g. because it was compiled with (debug 0).

> If so, then I wasn't quite clear about the (compile 'foo)
> example.  The second compile would actually recompile foo from the
> original sources, not return the already previously compiled function. 
> This is handy if you've changed something like a macro or inline
> function and want to compile foo again to see the effect.

Hmm.. good point.

>> right before the with-compilation-unit form.  We can't return-from
>> inside the with-compilation-unit without producing some error message so
>> we have to put it before it.  We'd lose some restarts, but that should
>> only be noticeable if (setf (fdefinition ..)) hits a definition lock and
>> it's not required by the spec anyway.
>>
>> Then form would be bound as it used to be
>> (form `#',(get-lambda-to-compile definition).
>>
>>   
>>> I think we still need the additional fix in function-lambda-expression
>>> in case the compiled-debug-info-source is NIL.
>>>     
>> I think we always have the lambda expression for interpreted functions.
>>
>>   
> Yes, this is true.  But for some reason, in Madhu's example, the
> compiled-debug-info-source is NIL, hence the traceback that he shows.

The problem with Madhu's example is that the debug-info is back-patched
sometime later after the top-level code is executed.  This is not easy
to fix without changing the way things are dumped to the fasl file.

Helmut
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.