emacs-devel
[Top][All Lists]
Advanced

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

Re: Building Emacs overflowed pure space


From: YAMAMOTO Mitsuharu
Subject: Re: Building Emacs overflowed pure space
Date: Thu, 20 Jul 2006 11:13:52 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/22.0.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Wed, 19 Jul 2006 11:05:39 -0400, Stefan Monnier <address@hidden> said:

> Also `make-symbol' allocates a fixed amount of memory AFAIK,
> independent from the symbol name's length (it keeps a ref to the
> string argument, instead, so that (eq X (symbol-name (make-symbol
> X))) is always true), and the "--cl-dolist-temp--" string should
> only be allocated once (when reading the macro definition).  So the
> only explanation that I can find is that the uninterned symbol names
> get copied to purespace at some point (don't know when or why), at
> which point the single shared string "--cl-dolist-temp--" gets
> copied N times.

It is allocated when .elc file is loaded.  Each compiled `dolist'
contains the uninterned symbol #:--cl-dolist-temp--, and its name is
allocated through the following path:

lread.c:read1
2780              Lisp_Object result = uninterned_symbol ? make_symbol 
(read_buffer)
2781                : intern (read_buffer);

lread.c:make_symbol
3294      return Fmake_symbol ((!NILP (Vpurify_flag)
3295                            ? make_pure_string (str, len, len, 0)
3296                            : make_string (str, len)));

alloc.c:make_pure_string
4787      s = (struct Lisp_String *) pure_alloc (sizeof *s, Lisp_String);
4788      s->data = (unsigned char *) pure_alloc (nbytes + 1, -1);

                                     YAMAMOTO Mitsuharu
                                address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]