GNU bug report logs - #79346
igc: PolicyShouldCollectWorld

Previous Next

Package: emacs;

Reported by: Helmut Eller <eller.helmut <at> gmail.com>

Date: Sat, 30 Aug 2025 11:55:02 UTC

Severity: normal

Full log


Message #32 received at 79346 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Gerd Möllmann <gerd.moellmann <at> gmail.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 79346 <at> debbugs.gnu.org
Subject: Re: bug#79346: igc: PolicyShouldCollectWorld
Date: Thu, 04 Sep 2025 22:05:55 +0200
[Message part 1 (text/plain, inline)]
On Thu, Sep 04 2025, Gerd Möllmann wrote:

> Helmut Eller <eller.helmut <at> gmail.com> writes:
[...]
>> What would you think of making mps_arena_step and perhaps buffer_step
>> available from Lisp so that those things can be called from Lisp-level
>> idle timers?
>
> Sounds like a good idea.

Below is a patch that does this.

The idle timer waits 2 seconds, before it calls mps_arena_step.  As
usual, "idle time" is the time since the last command completed, i.e. 2
seconds must pass after a command before the idle timer fires.  (Other
timers or process filters don't reset "idle time"; only new commands
do.)  I think that should avoid the problem that I've seen where
opportunistic GC was started while I was in the middle of typing
something.

The code uses a constant to predict the idle time; maybe one could to
something a bit more clever; not sure if that would be worth the
trouble.

Regarding bug#76505 (or https://github.com/Ravenbrook/mps/issues/305),
I now think that it's safe to call mps_arena_step with multiplier=0:
The expression (availableEnd - now) never overflows because the
invariant now <= intervalEnd <= availableEnd holds.

[0001-Call-mps_arena_step-from-a-Lisp-idle-timer.patch (text/x-diff, attachment)]

This bug report was last modified today.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.