all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Gerd Möllmann" <gerd.moellmann@gmail.com>
To: Pip Cet <pipcet@protonmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>,
	 Helmut Eller <eller.helmut@gmail.com>,
	Emacs Devel <emacs-devel@gnu.org>
Subject: Re: MPS: weak hash tables
Date: Tue, 02 Jul 2024 08:55:11 +0200	[thread overview]
Message-ID: <m24j98gu5s.fsf@pro2.fritz.box> (raw)
In-Reply-To: <OktYqkHd_b7AXwEtc0mvHvPrccA9Tj0YLfA1ZqzP9INwnkRNiX5Mtr1RAnTb2lpmQxpQoja2VbgyxfNuNswvuSIZCu-htZNNHKZCelrgD7Q=@protonmail.com> (Pip Cet's message of "Tue, 02 Jul 2024 06:23:45 +0000")

Pip Cet <pipcet@protonmail.com> writes:

> On Tuesday, July 2nd, 2024 at 05:47, Gerd Möllmann <gerd.moellmann@gmail.com> wrote:
>> Pip Cet pipcet@protonmail.com writes:
>> 
>> > Also, any opinions on :weakness 'key-or-value? Can we just not support it and use strong hash tables instead?
>> 
>> 
>> So, after some more reading, I think I have an opinion. Let me read what
>> it is :-)
>> 
>> The design supports 1 vector of weak references, and 1 vector of
>> strong references. So either keys or values can be weak but not both.
>
> Why not? I may be missing something obvious, but the scan method is
> allowed to modify the scanned object, right? We're doing that in the
> weak-key case anyway.

I may be missing something as well, as usual :-). And yes, we have
exclusive access to the object while it is being scanned.

> So what I'm currently doing is creating a single vector containing all
> keys, then all values, for key-and-value hash tables. If the key gets
> splatted, the value gets splatted right away and everything works as
> it should. If the value gets splatted, we've already decided to keep
> alive the key, but that's okay as it's only a weak reference.

My understanding so far is that the strong part is always allocated with
rank strong, right? The strong part contains one array of references,
the entries, which are therefore also strong. The pointers to the
entries for key/value are set up to refer to the entries arrays of
either the strong part or the weak part, as needed. So my understanding
is that one of them is always strong and other weak. The W predicate can
then only be implemented in one of them.

>> In Emacs itself, I see from git grep that :weakness key, value, and t
>> are being used, where t means key-and-value. Haven't checked for which
>> use cases t is used, though.
>
> What surprised me is that there are plenty of hash tables that are
> both weak and use equal as a predicate. That doesn't make much sense
> to me...

Hm, maybe they are value weak? Key-weak would make no sense, I think,
indeed.

>
>> Anyway, we're better off than before :-).
>
> On 64-bit systems. 32-bit systems are still broken, I'm afraid, and
> while my patch fixes the crash I've seen on i386 Debian, Eli's crash
> looked very different and may not be fixed by it.

From my POV, it's not a deal breaker if 32-bit systems don't work with
igc, They still have the old GC, and 32-bit systems are kind of obsolete
even Intel says and so on. It would be nice if we could that working of
course.

> Also, there's the whole caution thing about weak objects containing
> only unaligned words or words pointing directly to a base object,
> which is only relevant on Unix/i386, IIRC. (MPS emulates instructions
> to simulate fine-grained barriers, which is a really cool idea; I'd
> still like an option to turn it off though...). That would mean we
> have to replace Lisp_Objects and use the ptr member of our union (and
> that's the reason I'm using fixnums rather than plain integers for the
> hash).

Yeah, that's another point I forgot about. The trickery MPS does on
Windows and Linux with 32-bits. The consequences of which are another
very good reason to declare 32-bit systems as not supproted, from my
POV.

> Anyway, thanks a lot, so far. Sorry I'm being dense about the
> key-and-value thing.

Nicht dafür (something meaning with pleasure :-)).




  reply	other threads:[~2024-07-02  6:55 UTC|newest]

Thread overview: 196+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-01 20:47 MPS: weak hash tables Gerd Möllmann
2024-07-01 21:16 ` Pip Cet
2024-07-01 23:10   ` Pip Cet
2024-07-02  4:19     ` Gerd Möllmann
2024-07-02  5:47     ` Gerd Möllmann
2024-07-02  6:23       ` Pip Cet
2024-07-02  6:55         ` Gerd Möllmann [this message]
2024-07-02  9:15           ` Pip Cet
2024-07-02  9:37             ` Gerd Möllmann
2024-07-02 10:11               ` Gerd Möllmann
2024-07-02 11:36               ` Gerd Möllmann
2024-07-02 13:15                 ` Eli Zaretskii
2024-07-02 13:16                   ` Gerd Möllmann
2024-07-02 13:42                     ` Eli Zaretskii
2024-07-02 15:03                       ` Pip Cet
2024-07-02 15:17                         ` Helmut Eller
2024-07-02 15:35                         ` Eli Zaretskii
2024-07-02 16:34                           ` Pip Cet
2024-07-02 18:20                             ` Eli Zaretskii
2024-07-02 20:16                               ` Pip Cet
2024-07-03  6:30                               ` Gerd Möllmann
2024-07-03 11:23                                 ` Eli Zaretskii
2024-07-03 11:28                                   ` Gerd Möllmann
2024-07-02 13:02             ` Eli Zaretskii
2024-07-02 12:45           ` Eli Zaretskii
2024-07-02 11:23         ` Helmut Eller
2024-07-03  6:11           ` Gerd Möllmann
2024-07-03  6:33             ` Pip Cet
2024-07-03  7:04               ` Gerd Möllmann
2024-07-03  7:24                 ` Helmut Eller
2024-07-03  7:25                 ` Pip Cet
2024-07-03  7:38                   ` Gerd Möllmann
2024-07-03  8:26                     ` Gerd Möllmann
2024-07-03  9:31                       ` Pip Cet
2024-07-03 10:22                         ` Gerd Möllmann
2024-07-03 10:41                           ` Pip Cet
2024-07-03 11:17                             ` Gerd Möllmann
2024-07-03 20:20                           ` Pip Cet
2024-07-04  7:17                             ` Gerd Möllmann
2024-07-04 15:24                               ` Pip Cet
2024-07-04 16:53                                 ` Gerd Möllmann
2024-07-04 20:05                                   ` Pip Cet
2024-07-05  3:50                                     ` Gerd Möllmann
2024-07-05 12:08                                       ` Pip Cet
2024-07-05 12:54                                         ` Gerd Möllmann
2024-07-05 13:27                                         ` Eli Zaretskii
2024-07-05 20:35                                           ` Pip Cet
2024-07-06  6:10                                             ` Eli Zaretskii
2024-07-06  6:31                                               ` Pip Cet
2024-07-06  7:00                                                 ` Eli Zaretskii
2024-07-06  7:40                                                   ` Gerd Möllmann
2024-07-06  9:13                                                   ` Pip Cet
2024-07-06 10:59                                                     ` Eli Zaretskii
2024-07-05 18:14                                         ` Helmut Eller
2024-07-05 19:25                                           ` Pip Cet
2024-07-06  3:39                                             ` Gerd Möllmann
2024-07-06  5:58                                               ` Pip Cet
2024-07-06  6:20                                                 ` Gerd Möllmann
2024-07-06  6:29                                                   ` Pip Cet
2024-07-06  6:51                                                     ` Gerd Möllmann
2024-07-06  6:46                                                 ` Eli Zaretskii
2024-07-06  9:23                                                   ` Pip Cet
2024-07-06 11:03                                                     ` Eli Zaretskii
2024-07-06  3:38                                           ` Gerd Möllmann
2024-07-06  9:47                                             ` Helmut Eller
2024-07-06 10:38                                               ` Gerd Möllmann
2024-07-06 11:13                                               ` Eli Zaretskii
2024-07-06 13:50                                                 ` Helmut Eller
2024-07-06 13:59                                                   ` Eli Zaretskii
2024-07-06 14:38                                                     ` Gerd Möllmann
2024-07-06 16:20                                                     ` Helmut Eller
2024-07-06 16:33                                                       ` Eli Zaretskii
2024-07-06 16:48                                                         ` Helmut Eller
2024-07-06 17:21                                                           ` Eli Zaretskii
2024-07-06 17:59                                                             ` Helmut Eller
2024-07-06 18:14                                                             ` Gerd Möllmann
2024-07-06 18:56                                                               ` Eli Zaretskii
2024-07-06 11:37                                               ` Pip Cet
2024-07-06 11:40                                               ` Gerd Möllmann
2024-07-06 11:57                                               ` Gerd Möllmann
2024-07-06 12:03                                                 ` Eli Zaretskii
2024-07-06 12:16                                                   ` Gerd Möllmann
2024-07-06 12:23                                                     ` Pip Cet
2024-07-06 12:39                                                       ` Gerd Möllmann
2024-07-06 12:30                                                     ` Eli Zaretskii
2024-07-06 12:43                                                       ` Gerd Möllmann
2024-07-06 13:53                                                         ` Eli Zaretskii
2024-07-06 12:36                                                     ` Gerd Möllmann
2024-07-06 14:00                                                       ` Helmut Eller
2024-07-06 14:08                                                         ` Gerd Möllmann
2024-07-06 14:24                                                           ` Gerd Möllmann
2024-07-06 14:44                                                           ` Helmut Eller
2024-07-06 14:52                                                             ` Gerd Möllmann
2024-07-06 15:49                                                               ` Pip Cet
2024-07-06 16:31                                                                 ` Gerd Möllmann
2024-07-06 16:56                                                                   ` Pip Cet
2024-07-06 17:28                                                                     ` Gerd Möllmann
2024-07-06 17:31                                                                       ` Gerd Möllmann
2024-07-06 18:30                                                                       ` Pip Cet
2024-07-06 20:00                                                                         ` Gerd Möllmann
2024-07-06 20:09                                                                           ` Ihor Radchenko
2024-07-07  3:55                                                                             ` Gerd Möllmann
2024-07-07  4:27                                                                             ` Gerd Möllmann
2024-07-07  4:30                                                                               ` Gerd Möllmann
2024-07-07  6:38                                                                               ` Pip Cet
2024-07-07  7:31                                                                                 ` Gerd Möllmann
2024-07-07  7:44                                                                                 ` Helmut Eller
2024-07-07  8:10                                                                                   ` Gerd Möllmann
2024-07-07  8:24                                                                                     ` Gerd Möllmann
2024-07-07  8:47                                                                                       ` Pip Cet
2024-07-07  9:24                                                                                         ` Gerd Möllmann
2024-07-07  9:26                                                                                           ` Gerd Möllmann
2024-07-07 10:47                                                                                           ` Eli Zaretskii
2024-07-07 11:19                                                                                             ` Gerd Möllmann
2024-07-07 14:09                                                                                               ` Eli Zaretskii
2024-07-07 14:15                                                                                                 ` Gerd Möllmann
2024-07-07 14:42                                                                                                   ` Eli Zaretskii
2024-07-07 14:52                                                                                                     ` Gerd Möllmann
2024-07-07 15:34                                                                                                       ` Eli Zaretskii
2024-07-07 15:36                                                                                                         ` Gerd Möllmann
2024-07-07 16:00                                                                                                           ` Eli Zaretskii
2024-07-07 17:08                                                                                                             ` Gerd Möllmann
2024-07-07 17:49                                                                                                               ` Eli Zaretskii
2024-07-07 18:15                                                                                                                 ` Gerd Möllmann
2024-07-07 18:22                                                                                                                   ` Eli Zaretskii
2024-07-07 18:29                                                                                                                     ` Gerd Möllmann
2024-07-07 14:16                                                                                                 ` Gerd Möllmann
2024-07-07 14:18                                                                                                   ` Gerd Möllmann
2024-07-07 10:57                                                                                           ` Pip Cet
2024-07-07 11:35                                                                                             ` Gerd Möllmann
2024-07-07 11:48                                                                                               ` Gerd Möllmann
2024-07-07 14:07                                                                                                 ` Gerd Möllmann
2024-07-07 14:21                                                                                                 ` Pip Cet
2024-07-07 14:27                                                                                                   ` Gerd Möllmann
2024-07-07 15:22                                                                                                   ` Helmut Eller
2024-07-07 15:40                                                                                                     ` Gerd Möllmann
2024-07-07 15:52                                                                                                       ` Helmut Eller
2024-07-07 15:56                                                                                                         ` Gerd Möllmann
2024-07-07 15:57                                                                                                         ` Pip Cet
2024-07-07 16:26                                                                                                           ` Helmut Eller
2024-07-07 17:03                                                                                                             ` Gerd Möllmann
2024-07-07 18:40                                                                                                               ` Gerd Möllmann
2024-07-07 18:53                                                                                                                 ` Helmut Eller
2024-07-07 19:00                                                                                                                   ` Gerd Möllmann
2024-07-07 19:31                                                                                                                     ` Pip Cet
2024-07-07 19:36                                                                                                                       ` Gerd Möllmann
2024-07-08  9:11                                                                                                                     ` MPS: commit limit Gerd Möllmann
2024-07-10  6:46                                                                                                                       ` Helmut Eller
2024-07-10  7:08                                                                                                                         ` Gerd Möllmann
2024-07-16 15:16                                                                                                                       ` Helmut Eller
2024-07-16 15:27                                                                                                                         ` Eli Zaretskii
2024-07-16 15:43                                                                                                                           ` Helmut Eller
2024-07-16 15:54                                                                                                                             ` Eli Zaretskii
2024-07-16 16:29                                                                                                                               ` Helmut Eller
2024-07-16 16:39                                                                                                                                 ` Gerd Möllmann
2024-07-16 16:43                                                                                                                                   ` Pip Cet
2024-07-16 16:56                                                                                                                                     ` Gerd Möllmann
2024-07-16 15:32                                                                                                                         ` Eli Zaretskii
2024-07-16 16:27                                                                                                                           ` Helmut Eller
2024-07-16 18:49                                                                                                                             ` Pip Cet
2024-07-17  6:15                                                                                                                               ` Helmut Eller
2024-07-16 16:32                                                                                                                         ` Pip Cet
2024-07-16 16:48                                                                                                                           ` Helmut Eller
2024-07-08  5:11                                                                                                             ` MPS: weak hash tables Pip Cet
2024-07-08  5:17                                                                                                               ` Gerd Möllmann
2024-07-08  5:37                                                                                                                 ` Pip Cet
2024-07-08  5:43                                                                                                                   ` Gerd Möllmann
2024-07-07  8:49                                                                                       ` Gerd Möllmann
2024-07-08  9:16                                                         ` Andrea Corallo
2024-07-08  9:24                                                           ` Gerd Möllmann
2024-07-08  9:54                                                             ` Andrea Corallo
2024-07-08 10:10                                                               ` Gerd Möllmann
2024-07-08 11:57                                                             ` MPS: out-of-memory Eli Zaretskii
2024-07-08 13:46                                                               ` Gerd Möllmann
2024-07-08 16:45                                                                 ` Pip Cet
2024-07-08 18:26                                                                   ` Gerd Möllmann
2024-07-08 19:44                                                                     ` Pip Cet
2024-07-09  3:58                                                                       ` Gerd Möllmann
2024-07-08 18:27                                                                   ` Helmut Eller
2024-07-08 18:31                                                                     ` Gerd Möllmann
2024-07-08 19:14                                                                       ` Eli Zaretskii
2024-07-08 19:35                                                                         ` Gerd Möllmann
2024-07-08 19:08                                                                     ` Eli Zaretskii
2024-07-08 19:31                                                                     ` Pip Cet
2024-07-04 15:22                         ` MPS: weak hash tables Helmut Eller
2024-07-04 15:33                           ` Pip Cet
2024-07-04 16:46                             ` Gerd Möllmann
2024-07-04 16:43                           ` Gerd Möllmann
2024-07-02 13:50         ` Mattias Engdegård
2024-07-02  6:57     ` Gerd Möllmann
2024-07-02  7:15       ` Gerd Möllmann
2024-07-02  8:46         ` Ihor Radchenko
2024-07-02  8:59           ` Gerd Möllmann
2024-07-02  9:33             ` Ihor Radchenko
2024-07-02  9:35               ` Pip Cet
2024-07-02 11:03                 ` Ihor Radchenko

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=m24j98gu5s.fsf@pro2.fritz.box \
    --to=gerd.moellmann@gmail.com \
    --cc=eliz@gnu.org \
    --cc=eller.helmut@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=pipcet@protonmail.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.