bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#58338: 29.0.50; mapatoms called on more elements than in obarray?


From: Philip Kaludercic
Subject: bug#58338: 29.0.50; mapatoms called on more elements than in obarray?
Date: Thu, 06 Oct 2022 18:21:47 +0000

Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> Philip Kaludercic <philipk@posteo.net> writes:
>
>>>From reading the docstring of `mapatoms', I would assume that this would
>> evaluate to t:
>>
>> (let ((i 0))
>>   (mapatoms (lambda (_) (setq i (1+ i))) obarray)
>>   (= (length obarray) i))
>>
>> But instead on my system I get (length obarray) ↝ 15121 and and i ↝
>> 78050, which is are at a ratio of 5.16169565505.
>
> obarray is a hash table. with each array element being a list of symbols
> if not empty, for hash collisions.  And it's not a hash table of the
> kind that make-hash-table makes, which I added much later.  And not a
> Lisp list of symbols.

I see, from the value it appeared to be a flat vector.

> With your figures, it seems that there are on average 5 symbols per
> bucket.  For details you'd have to look at the C code.

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Philip Kaludercic <philipk@posteo.net>
>> Date: Thu, 06 Oct 2022 16:16:03 +0000
>> 
>> 
>> >From reading the docstring of `mapatoms', I would assume that this would
>> evaluate to t:
>> 
>> (let ((i 0))
>>   (mapatoms (lambda (_) (setq i (1+ i))) obarray)
>>   (= (length obarray) i))
>> 
>> But instead on my system I get (length obarray) ↝ 15121 and and i ↝
>> 78050, which is are at a ratio of 5.16169565505.
>> 
>> Also interesting, if I intern a variable "foo", the value of i increases
>> to 83106, while (length obarray) stays the same (?)
>
> You assume that obarray is a flat vector or something?  Or how about
> if you explain why the above surprised you?

In that case what confuses me is that (length obarray) doesn't throw an
error.  Or what useful information does that give me?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]