Subject: bug#53809: 29.0.50; fatal error: assertion failed: string_immovable_p (bytestr)

From: Mattias Engdegård <[email-masked]>
Date: Mon, 7 Feb 2022 20:09:01 +0100

7 feb. 2022 kl. 19.52 skrev Eli Zaretskii <[email-masked]>:

> Does this mean that Emacs will now be even less willing to return
> memory to the OS, because the bytecode strings cannot be moved by GC?

Not to any significant degree, but it is of course a legitimate concern. Bytecode strings are rarely freed at all; they are typically loaded once and remain until Emacs terminates. Dynamic bytecode generation and replacement is comparatively rare.

Strings are allocated in either of two heaps: one for short strings (≤1024 bytes) and another for large ones. Only the short string heap is compacted, so all the pinning mechanism does is to use the large-string heap for all bytecode strings.