Lisp pointer size?

Today I got this from emacs:

Warning: memory in use exceeds lisp pointer size
Killing some buffers may delay running out of memory.
However, certainly by the time you receive the 95% warning,
you should clean up, kill this Emacs, and start a new one.

I’ve never seen that before. The process was just 126 megs and about two months old.

3 Responses to “Lisp pointer size?”

  1. Senko Rasic says:

    Lisp uses tagged pointers, that is, they use a few bits of
    the pointer to specify pointer type, which leaves fewer
    bits around to actually point to the object. If you’re
    on 32bit arch, 128mb == 2^27, and, say, 5 bits are used
    by Emacs Lisp to tag the pointers, then you’d really be
    running out of it.
    But I’m not emacs (or even lisp) guru, and all of the above is just my educated guess, so it can easily be wrong.

  2. Alexander Larsson says:

    I assumed that the tag-bits in a pointer used the two lowest bits by only allowing pointers to be at even 32bit positions.

  3. d says:

    Use emacs-22 (from CVS), the size has now been increased to 256MB. Besides that it has quite a lot of very useful features.
    More than 2 tag bits are needed to distiguish between the different
    data types: integers, symbols, strings, conses, floats, etc.