[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

how to solve "No more room for ......" problems




Hi JAWAD,

Subject: ....no more room for vectors.....


=> Ayant ecrit une syntax pour un langage en utilisant ASF+SDF, lors de
=> la reduction d'un programme j'ai le message suivant:

=>       ***** Fatal error : no room for vectors.
=>       *** EQM error: Pretty print failed.
=>
=>       Quelle est la signification d'un tel message?


First of all, please ask your question in English, the Centaur team does not
consist of only people from France. (I'm Dutch for one)

About your question (my French is poor, but I understand your question),
I'll explain first, write about the implications, and finally I'll sketch
how to solve your problem.

EXPLANATION
This is a message from LeLisp. LeLisp uses several "zones" for particular
data (lists, vectors, code, etc.). In your case, the zone for vectors is
full. Normally, the LeLisp garbage collector prevent this, but now it can't
retrieve any more "garbage" from the vector zone.

IMPLICATION
The implication is that the result of your reduction is there, but it can't
be printed in the LeLisp window since the pretty-printer can't allocate
enough vectors.

SOLUTION
The size Centaur (or rather LeLisp) uses for vectors is determined at the
time you compile Centaur.
Now, suppose your "Centaur core" is called 'ctasdf', you'll find a file
called 'ctasdf.conf' in the directory ..../ct/centaur.
In that file, you'll find a line like this:
LLSIZE=-stack $(STACK) -code $(CODE) -heap 2500 -number 0 -float 1 -vector 50 \
        -string 20 -symbol 20 -cons 20
In this case, the vector zone is defined as "50", in your case probably less.
Change this line and recompile your "Centaur core" as described in the manual.

ADDITIONAL INFORMATION
This solution works for all problems comparable to "....no more room for XXX".
It requires recompilation though.
There is one exception: the room for _lists_. The size of this zone may be
changed when you start the system, by supplying it as the first argument
of your Unix command to start the system. Again, suppose your "Centaur core" 
is called 'ctasdf' you just use:
	ctasdf 100
This saves you the trouble of recompilation.


Happy ASF+SDF'ing, Wilco.
P.S.
I'll mail this message to you personally (for speed of reply), but also to 
the centaur-mail-list. In this way, others may profit as well. You'll 
get it twice, sorry 'bout that.