Subject: Re: bug#18522: 24.4.50; mapcar is very slow

From: martin rudalics <[email-masked]>
Date: Wed, 24 Feb 2016 19:16:27 +0100

> Of course.  But why would killed buffers be marked?

Because they are still referenced from somewhere else.

 > What do you mean by "forget"?  Forgetting a Lisp object means it is
 > not referenced by any other object, so it will be GCed, together with
 > the buffers it references.  Right?

Each window in a window configuration stores all the buffers it has ever
shown.  Now window configurations are sometimes stored in registers.  I
could imagine users that store a couple of configurations in registers
and "forget" about them in the sense that they do not restore from some
of those stored configurations for quite some time or the rest of the
session.

 >> BTW, I have no idea why FOR_EACH_BUFFER should be used outside alloc.c.
 >
 > What would you use instead?

A macro that excludes killed buffers.  What's the purpose of

		  if (!PER_BUFFER_VALUE_P (b, idx))
		    set_per_buffer_value (b, offset, value);

in a killed buffer?

martin