From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2008-10-11 15:55:48
|
On Sat, Oct 11, 2008 at 5:08 PM, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX wrote: > Ville and I were looking into the PUSHNEW/PUSH/POP failures in the ANSI tests. > > What we found is that the macros don't take an environment variable, > yet they do invoke macroexpand to determine macro expansion. The fix > is to add an environment variable to the functions. However, it looks > like building all of ABCL then breaks with a stack overflow. > > This morning I found why: > > In Primitives.java there's a stub implementation of the Lisp ERROR > symbol function. It delegates the invocations of its function to the > Java Lisp.error() function. However, that function does nothing more > than invoke the Lisp ERROR symbol function. As you see, this is a > circular reference. > > > I decided to remove the delegation and just print out a stack trace > and bail out. There's one remaining question: How to bail out nicely > (as we're a library...)? > > > Then, when I print the arguments to the ERROR call and the stack, the > real problem becomes visible: In proclaim.lisp, there's a PUSHNEW form > which upon macro-expansion claims the ENV variable (which I added to > the arglist of PUSHNEW) isn't bound. And of course, when you send a mail like that, the solution dawns on you. Closure.java bound the environment var in way to few code paths. Running full tests now. Looks like we're back to 49 failures only :-) Bye, Erik. |