[slime-devel] Re: ABCL patches for SLIME HEAD

Mark Evenson mark.evenson at gmx.at
Tue Sep 4 12:52:09 UTC 2007


Helmut Eller wrote:
> * Mark Evenson [2007-09-03 11:21+0200] writes:
> 
>> o  allows the use of slime-compile-and-load-file (C-c C-k) by patching
>> the definition of COMPILER-CONDITION with explicit NILs, and does a
>> load time creation of a COMPILER-CONDITION to get the MOP
>> discriminating functions initialized correctly
> 
> I didn't see any difference for C-c C-k with and without the patch.
> Can you explain what it is?

On any version subsequent to (and inclusive of) ABCL-0.0.10 that I have 
compiled without this patch to SLIME, slime-compile-and-load-file 
doesn't work, producing a backtrace akin to something like [1]. I 
received exactly  one (1) report of another user for whom this patch 
solved a similar problem, so I had some confidence that it would help 
some of the users of SLIME/ABCL.  But I suspect that the the SLIME + 
ABCL community is fairly small, and it may be that for some unknown 
reason the bug only manifests itself for some versions of the JavaVM 
that hosts ABCL.

The patch was derived from a trial and error approach from the SLIME 
side of things, as opposed to ABCL internals (which I am only starting 
to understand).  Essentially, without this patch the first time SLIME 
tries to create a SWANK-BACKEND::COMPILER-CONDITION with sufficiently 
complicated arguments (/me waves hands), I would get the backtrace.  But 
if I:

1)  gave the definition of COMPILER-CONDITION explicit nil :INITFORMs

2)  created an empty COMPILER-CONDITION at load-time that calls each of 
the readers

then the bug doesn't occur.

Out of curiosity, which version of ABCL on which JVM on which OS where 
you testing on?

> I'd like to keep the definition of COMPILER-CONDITION as it is.
> Would it be enough to supply explicit nils in the load time form? Like
> so:
> 
> (let ((c (make-condition 'compiler-condition 
>                          :original-condition nil
>                          :severity ':note :message "" :location nil))
>       (slots `(severity message short-message references location)))
>   (dolist (slot slots)
>     (funcall slot c)))

Using this supplied form in 'swank-abcl.lisp' doesn't help.  It seems 
that one needs the explicit :INITFORM nil for all the COMPILER-CONDITION 
slots.

Thanks for looking at the patch.  Even if you decide not to accept it, 
at least this thread can give future SLIME/ABCL hackers (including me 
when I have the time) a place to start looking at this issue.

[1]: http://article.gmane.org/gmane.editors.j.devel/1397

-- 
<Mark.Evenson at gmx.at>

"[T]his is not a disentanglement from, but a progressive knotting into."




More information about the slime-devel mailing list