[Ecls-list] ANN: ECL 9.6.0
Gabriel Barta
gbarta at gmail.com
Mon Jun 15 13:30:08 UTC 2009
On Sat, Jun 13, 2009 at 2:54 AM, Juan Jose
Garcia-Ripoll<juanjose.garciaripoll at googlemail.com> wrote:
> The major problem with CLOS, as you say, still persists. I have to
> find out a way to debug it. Seems pretty weird that it only happens in
> this platform.
I think I have found this. The problem is that for call-next-method
and some other closures, the generated code was passing the stack
variable env0 as the second var in va_start, but this should always be
the last named parameter, never a stack variable. This didn't cause a
problem on GCC builds because GCC ignores this parameter and uses its
own magic instead. I guess that at the point that line was written,
env0 was passed as a parameter.
The diff is below. As far as I could tell, the default case of
passing narg was always the right thing to do.
Regards,
Gabriel
diff --git a/src/cmp/cmplam.lsp b/src/cmp/cmplam.lsp
index a82669b..2722629 100644
--- a/src/cmp/cmplam.lsp
+++ b/src/cmp/cmplam.lsp
@@ -400,7 +400,6 @@ The function thus belongs to the type of functions
that ecl_make_cfun accepts."
(when varargs
(let ((first-arg (cond ((plusp nreq) (format nil "V~d" (+ req0 nreq)))
- ((eq closure-type 'CLOSURE) "env0")
((eq closure-type 'LEXICAL) (format nil "lex~D" (1- *level*)))
(t "narg"))))
(wt-nl
More information about the ecl-devel
mailing list