Associative Arrays max length? 32bit/64bit
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Sat May 24 18:05:49 PDT 2014
On Sat, 24 May 2014 02:54:01 -0700, FG <home at fgda.pl> wrote:
> Bloody Thunderbird. I think I pressed Reply instead of Followup. Sorry,
> Steven.
It's OK, it went into my spam folder anyway ;)
> On 2014-05-19 15:31, Steven Schveighoffer wrote:
>> No, in that DMD file, the bucket is a tree, not a doubly-linked list.
>
> Silly me. A look at the body of delnodes should have made it clear that
> it's a binary tree.
>
>> opCmp is not used in D's AA.
>
> Really? Then what does TypeInfo.compare(void*, void*) use? For example
> here:
>
> auto key_hash = keyti.getHash(pkey); Entry *e;
> /* ... */
> if (key_hash == e.hash) {
> auto c = keyti.compare(pkey, e + 1);
> if (c == 0) goto Lret;
> }
You know what, you are right. I assumed it used keyti.equals. This is a
bug imo, since opCmp will be used, and opEquals will be ignored. Just
checking for opCmp == 0 is identical to opEquals, except some types can
define opEquals but not opCmp.
But I don't know if it will get fixed. The whole AA runtime has to be
redone at some point.
-Steve
More information about the Digitalmars-d
mailing list