William Brew wrote: > My application involves a code generator. It creates a lisp function > that constructs a bunch > of function objects and returns a list of them. The function gets > written to a file and file > compiled. If there are a relatively small number (a few hundred), then > everything is fine. If there are a larger number (around 1000) then the > file compiler > dies in the code emitter with a type error. >
Thanks for the very nice bug report. This is a long-standing bug that has probably existed since the first sparc port. It's caused by passing 1000 arguments to LIST. This causes the compiler to allocate a list of 1000 elements all at once. This takes 8000 bytes, but 8000 won't fit into the 13-bit signed immediate value in an instruction. The fix is easy, but I'm just too stupid right now to actually get the right fix. :-( As a workaround, and because it's not portable to pass 1000 args to a function, you might want to build the list up a cons at a time. Ray
