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


Reply via email to