[Top][All Lists]

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

Re: Reachable killed buffers [Was: Re: [Emacs-diffs] /srv/bzr/emacs/trun

From: Stefan Monnier
Subject: Re: Reachable killed buffers [Was: Re: [Emacs-diffs] /srv/bzr/emacs/trunk r109890: Do not mark objects from deleted buffers, windows and frames]
Date: Mon, 10 Sep 2012 09:25:58 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux)

> I found two places where the killed buffer may survive for a while
> and so create some unneeded pressure to GC:
> 1) 'where' slot of Lisp_Buffer_Local_Value, which has local_if_set 0.
>    When the buffer is killed, swap_out_buffer_local_variables can't see
>    this BLV's symbol because it's not in buffer's local_var_alist.
>    Shouldn't we call to swap_in_global_binding for such an "orphaned" BLVs?

Hmm... how can we find those?  I guess we could handle it during GC when
we mark the BLV.

> 2) 'prev_buffers' and 'next_buffers' of struct window.  When the buffer
>    is killed, replace_buffer_in_windows should remove it from these lists;
>    but window-list-1 returns only live windows, so we may end up with
>    dead window with a long list of killed buffers referenced from
>    prev_buffers and/or next_buffers.

I think here as well the problem is how to find those windows, and again
I think the easiest is to do it during GC.


reply via email to

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