[Top][All Lists]

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

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

From: Dmitry Antipov
Subject: 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 13:46:05 +0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120824 Thunderbird/15.0

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?

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.


reply via email to

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