GNU bug report logs -
#54698
non-recursive GC marking [PATCH]
Previous Next
Reported by: Mattias Engdegård <mattiase <at> acm.org>
Date: Sun, 3 Apr 2022 18:42:02 UTC
Severity: normal
Tags: patch
Done: Mattias Engdegård <mattiase <at> acm.org>
Bug is archived. No further changes may be made.
Full log
Message #29 received at 54698 <at> debbugs.gnu.org (full text, mbox):
Mattias Engdegård <mattiase <at> acm.org> writes:
> The GC uses recursion to traverse data structures for marking which
> imposes a limit to how big (or deeply nested) Lisp data structures can
> be, and usually results in an immediate Emacs crash without warning
> when that limit is exceeded.
>
> The attached patch replaces recursion with an explicit stack for most
> common object types: conses, vectors, records, hash tables, symbols,
> functions etc. Recursion remains for some less common types (buffers,
> frames etc) but these are typically not used in quantities to cause a
> problem.
>
> A side benefit is that GC becomes quite a bit faster as a result. Actual workloads such as byte-compilation are consequently sped up by a small but measurable amount.
Hi Mattias,
do you have any other performance measure for cases different than the
one mentioned?
Thanks
Andrea
This bug report was last modified 2 years and 331 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.