bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#53242: [PATCH] unify reads from local_var_alist


From: Sergey Vinokurov
Subject: bug#53242: [PATCH] unify reads from local_var_alist
Date: Fri, 14 Jan 2022 18:37:45 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1

On 14/01/2022 08:08, Eli Zaretskii wrote:
Date: Fri, 14 Jan 2022 00:23:42 +0000
From: Sergey Vinokurov <serg.foo@gmail.com>

I've noticed that local_var_alist field of the buffer structure is
accessed inconsistently. Sometimes it's Fassoc, sometimes it's Fassq and
other times it's assq_no_quit and even an explicit loop.

I think it's safe to unify all the accesses via assq_no_quit since it's
an internaly maintained alist that definitely has no cycles and elements
are cons cells with symbol as their car.

How long can local_var_alist be?  This change will not allow the user
to C-g from a long search.  Do we care?  How about using Fassq
consistently instead?

This list is not directly observed by the user. The lookups happen during reads and writes of the buffer-local variables so if it's really slow the only effect user would observe is that elisp got slow. There's no single point for the user to C-g from.

This list definitely cannot be longer than a list of all the global variables ever defined. This upper bound is probably a high number, but not astronomically high. Perhaps if list gets really long it could be beneficial to use some other data structure, perhaps a hash table, instead.





reply via email to

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