From: Helmut Eller <eller.helmut@gmail.com>
To: "Gerd Möllmann" <gerd.moellmann@gmail.com>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Collecting markers with MPS (was: STatus of MPS branch)
Date: Wed, 24 Apr 2024 09:26:08 +0200 [thread overview]
Message-ID: <87cyqfjk6n.fsf@gmail.com> (raw)
In-Reply-To: <m2o7a44bua.fsf@Pro.fritz.box> ("Gerd Möllmann"'s message of "Sat, 20 Apr 2024 11:34:05 +0200")
On Sat, Apr 20 2024, Gerd Möllmann wrote:
> - Figure out what is done in the old GC in garbage_collect that is not
> directly related to GC, and how to do that when GC is concurrent.
> Examples are buffer undo_list, window prev_buffers/next_buffers
In the igc branch, markers are currently not collected because they are
referenced from the buffer's chain of markers. The old GC has special
code to break this link. There is also special code to break links from
the undo-list to markers.
With the MPS, we could introduce explicit weak reference objects,
similar to WeakRef in Javascript[*]. Buffers would then, instead of the
current chain of markers, have a list of weak references to markers.
(Markers would no longer have the embedded "next" field.) The same for
the undo-list: instead of markers, it would contain weak references to
markers.
This would allow markers to be collected, but the empty weak-ref objects
would still be in the undo-list and the buffer's markers-list. A timer
could periodically go through those lists and remove the empty
weak-refs.
Does this sound like a reasonable plan? To me, it sounds like it will
require relatively big changes to the buffer code. Much bigger than the
200 or so lines of special code in the old GC. Also, the undo-list is
visible to Lisp code, so those weak reference objects in there must be
new types of Lisp objects.
On the plus side, explicit weak reference objects could make some things
easier to understand and might be more widely useful to Lisp
programmers.
What do you think? Is there an more elegant alternative?
Helmut
[*] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakRef
next prev parent reply other threads:[~2024-04-24 7:26 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-20 9:34 STatus of MPS branch Gerd Möllmann
2024-04-20 14:56 ` Michael Albinus
2024-04-20 15:08 ` Gerd Möllmann
2024-04-20 15:32 ` Michael Albinus
2024-04-20 17:37 ` Gerd Möllmann
2024-04-21 7:39 ` Michael Albinus
2024-04-21 7:56 ` Gerd Möllmann
2024-04-21 8:00 ` Gerd Möllmann
2024-04-21 8:04 ` Michael Albinus
2024-04-21 8:08 ` Gerd Möllmann
2024-04-21 8:18 ` Michael Albinus
2024-04-21 8:28 ` Gerd Möllmann
2024-04-21 8:17 ` Gerd Möllmann
2024-04-21 9:43 ` Michael Albinus
2024-04-21 10:07 ` Gerd Möllmann
2024-04-21 10:58 ` Tramp tests in MPS branch (was: STatus of MPS branch) Michael Albinus
2024-04-21 12:44 ` Tramp tests in MPS branch Gerd Möllmann
2024-04-21 9:29 ` STatus of " Eli Zaretskii
2024-04-21 4:38 ` Gerd Möllmann
2024-04-21 5:31 ` Eli Zaretskii
2024-04-21 5:39 ` Gerd Möllmann
2024-04-21 9:04 ` Eli Zaretskii
2024-04-21 9:17 ` Gerd Möllmann
2024-04-21 6:15 ` Gerd Möllmann
2024-04-21 9:09 ` Eglot tests on MPS branch (was: STatus of MPS branch) Eli Zaretskii
2024-04-21 9:53 ` João Távora
2024-04-21 10:13 ` Eglot tests on MPS branch Gerd Möllmann
2024-04-21 11:01 ` João Távora
2024-04-21 10:55 ` Eglot tests on MPS branch (was: STatus of MPS branch) Eli Zaretskii
2024-04-21 7:49 ` STatus of MPS branch Gerd Möllmann
2024-04-21 8:45 ` Gerd Möllmann
2024-04-21 9:08 ` Andrea Corallo
2024-04-21 9:33 ` Native compilation on " Eli Zaretskii
2024-04-21 10:17 ` Gerd Möllmann
2024-04-21 13:07 ` Andrea Corallo
2024-04-22 7:15 ` Gerd Möllmann
2024-04-22 22:02 ` Andrea Corallo
2024-04-23 3:11 ` Gerd Möllmann
2024-04-23 16:09 ` Gerd Möllmann
2024-04-23 19:43 ` Andrea Corallo
2024-04-24 12:49 ` Gerd Möllmann
2024-04-24 18:14 ` Andrea Corallo
2024-04-24 18:28 ` Gerd Möllmann
2024-04-24 20:54 ` Andrea Corallo
2024-04-25 4:33 ` Gerd Möllmann
2024-04-25 5:50 ` Andrea Corallo
2024-04-25 7:18 ` Gerd Möllmann
2024-04-25 8:06 ` Andrea Corallo
2024-04-25 8:15 ` Gerd Möllmann
2024-04-25 8:57 ` Gerd Möllmann
2024-04-25 9:42 ` Andrea Corallo
2024-04-25 11:33 ` Gerd Möllmann
2024-04-25 5:24 ` Eli Zaretskii
2024-04-25 5:48 ` Andrea Corallo
2024-04-25 15:20 ` Eli Zaretskii
2024-04-26 10:15 ` Gerd Möllmann
2024-04-21 8:58 ` STatus of " Andrea Corallo
2024-04-21 9:19 ` Gerd Möllmann
2024-04-21 9:30 ` Native compilation on MPS branch (was: STatus of MPS branch) Eli Zaretskii
2024-04-21 14:39 ` STatus of MPS branch Helmut Eller
2024-04-21 15:37 ` Gerd Möllmann
2024-04-21 15:52 ` Eli Zaretskii
2024-04-21 20:24 ` Helmut Eller
2024-04-22 4:58 ` Gerd Möllmann
2024-04-22 5:28 ` Gerd Möllmann
2024-04-22 6:15 ` MPS signals and Emacs (was: STatus of MPS branch) Eli Zaretskii
2024-04-22 6:44 ` MPS signals and Emacs Paul Eggert
2024-04-22 7:19 ` Gerd Möllmann
2024-04-22 7:40 ` Paul Eggert
2024-04-22 7:49 ` Gerd Möllmann
2024-04-22 8:09 ` Eli Zaretskii
2024-04-22 8:27 ` Gerd Möllmann
2024-04-22 8:55 ` Eli Zaretskii
2024-04-22 9:02 ` Mattias Engdegård
2024-04-22 9:02 ` Gerd Möllmann
2024-04-22 9:18 ` Eli Zaretskii
2024-04-22 9:29 ` Gerd Möllmann
2024-04-22 9:41 ` Eli Zaretskii
2024-04-22 10:22 ` Gerd Möllmann
2024-04-22 10:46 ` Eli Zaretskii
2024-04-22 11:00 ` Gerd Möllmann
2024-04-22 12:01 ` Eli Zaretskii
2024-04-22 12:16 ` Gerd Möllmann
2024-04-22 10:54 ` Eli Zaretskii
2024-04-22 11:05 ` Gerd Möllmann
2024-04-22 19:41 ` Paul Eggert
2024-04-22 20:55 ` Gerd Möllmann
2024-04-22 22:12 ` Paul Eggert
2024-04-23 3:15 ` Gerd Möllmann
[not found] ` <87le54g1h2.fsf@dick>
2024-04-23 5:51 ` Gerd Möllmann
2024-04-23 6:35 ` Helmut Eller
2024-04-23 6:45 ` Gerd Möllmann
2024-04-23 6:53 ` Helmut Eller
2024-04-23 14:29 ` Gerd Möllmann
[not found] ` <87sezbsmsd.fsf@dick>
2024-04-24 5:03 ` Gerd Möllmann
2024-04-22 7:46 ` Eli Zaretskii
2024-04-22 7:55 ` Gerd Möllmann
2024-04-22 14:10 ` Helmut Eller
2024-04-22 14:42 ` Eli Zaretskii
2024-04-22 22:06 ` Paul Eggert
2024-04-23 7:04 ` Eli Zaretskii
2024-04-22 5:36 ` STatus of MPS branch Gerd Möllmann
2024-04-22 5:50 ` Gerd Möllmann
2024-04-22 15:09 ` Helmut Eller
2024-04-22 17:02 ` Gerd Möllmann
2024-04-24 7:26 ` Helmut Eller [this message]
2024-04-24 7:44 ` Collecting markers with MPS (was: STatus of MPS branch) Eli Zaretskii
2024-04-24 8:56 ` Collecting markers with MPS Helmut Eller
2024-04-24 9:17 ` Gerd Möllmann
2024-04-24 10:22 ` Eli Zaretskii
2024-04-24 10:27 ` Gerd Möllmann
2024-04-24 10:58 ` Gerd Möllmann
2024-04-24 13:32 ` Eli Zaretskii
2024-04-24 13:51 ` Gerd Möllmann
2024-04-24 15:03 ` Helmut Eller
2024-04-24 15:54 ` Eli Zaretskii
2024-04-24 16:21 ` Helmut Eller
2024-04-24 16:26 ` Eli Zaretskii
2024-04-24 16:50 ` Gerd Möllmann
2024-04-24 19:18 ` Helmut Eller
2024-04-24 19:55 ` Gerd Möllmann
2024-04-25 7:38 ` Mattias Engdegård
2024-04-24 9:08 ` Gerd Möllmann
2024-04-24 19:03 ` Helmut Eller
2024-04-24 20:02 ` Gerd Möllmann
2024-04-24 20:13 ` Helmut Eller
2024-04-24 20:42 ` Gerd Möllmann
2024-04-25 9:44 ` Helmut Eller
2024-04-25 11:44 ` Gerd Möllmann
2024-04-25 16:04 ` basic questions on MPS Andrea Corallo
2024-04-25 17:51 ` Helmut Eller
2024-04-25 18:48 ` Eli Zaretskii
2024-04-25 18:53 ` Gerd Möllmann
2024-04-25 19:26 ` Vibhav Pant
2024-04-26 6:36 ` Helmut Eller
2024-04-26 7:25 ` Gerd Möllmann
2024-04-26 15:07 ` vibhavp
2024-04-26 6:42 ` Gerd Möllmann
2024-04-27 0:20 ` Richard Stallman
2024-04-27 8:41 ` Helmut Eller
2024-04-28 22:44 ` Richard Stallman
2024-04-29 4:27 ` Helmut Eller
2024-04-29 22:40 ` Richard Stallman
2024-04-25 18:41 ` Eli Zaretskii
2024-04-25 18:53 ` Andrea Corallo
2024-04-25 18:56 ` Gerd Möllmann
2024-04-25 19:29 ` Andrea Corallo
2024-04-25 19:03 ` Eli Zaretskii
2024-04-25 19:09 ` Andrea Corallo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87cyqfjk6n.fsf@gmail.com \
--to=eller.helmut@gmail.com \
--cc=emacs-devel@gnu.org \
--cc=gerd.moellmann@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.