[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