GNU bug report logs -
#64391
30.0.50; buffer narrowing slowdown regression in emacs 29
Previous Next
Full log
Message #29 received at 64391 <at> debbugs.gnu.org (full text, mbox):
1 juli 2023 kl. 14.08 skrev Eli Zaretskii <eliz <at> gnu.org>:
>> The attached patch combines narrow-to-region and internal--label-restriction into a single function, internal--narrow-to-region. (We could also add the label as an optional argument to narrow-to-region.)
>
> It does more than that, so I'd appreciate a more detailed description
> of the changes and their rationale.
Actually that's just what it does. Here is a tentative commit message:
Fix severe narrowing performance bug (regression from emacs 28)
In Emacs 29, `narrow-to-region` conses and creates markers
unconditionally on the offchance that a call to
`internal--label-restriction` would need it, which is only rarely the
case (in `with-restriction` with a :label argument).
As a remedy we fuse the two functions to one,
`internal--narrow-to-region`, and only perform the costly consing and
marker creation for labelled narrowing. (Bug#64391)
* lisp/subr.el (internal--with-restriction):
* src/editfns.c (labeled_narrow_to_region):
Call `internal--narrow-to-region` instead of `narrow-to-region`
followed by `internal--label-restriction`.
(Fwiden): Remove assignment to eliminated `outermost-restriction`.
(Fnarrow_to_region): Reduce to a stub that calls the original
function, now named...
(Finternal__narrow_to_region): ...this, which takes an added
`label` argument and includes at the end the optimised body of...
(Finternal__label_restriction): ...this function, now removed
since it has been entirely absorbed.
(syms_of_editfns): Remove the `outermost-restriction` buffer-local
variable as it was only used to convey data from `narrow-to-region`
to `internal--label-restriction` called immediately afterwards.
And again, if anyone would prefer an optional `label` argument to `narrow-to-region` then that would be fine too. It depends a little on whether we want to expose that functionality to the user in that function, or as now keep it in `with-restriction` only.
This bug report was last modified 1 year and 342 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.