]> Cypherpunks repositories - gostls13.git/commit
runtime: fix hashmap load factor computation
authorKeith Randall <khr@golang.org>
Fri, 1 Sep 2017 19:32:38 +0000 (12:32 -0700)
committerKeith Randall <khr@golang.org>
Sat, 2 Sep 2017 05:44:23 +0000 (05:44 +0000)
commitdbe3522c7f45771bbd12228b7f17a3fc5ac9d7c7
treee023d1b9c3e54796b2d227a4f7a0445833324bb4
parenta6a92b186732e293072daf94397d9c71eb81e2e9
runtime: fix hashmap load factor computation

overLoadFactor wasn't really doing what it says it does.
It was reporting overOrEqualToLoadFactor.  That's actually what we
want when adding an entry to a map, but it isn't what we want when
constructing a map in the first place.

The impetus for this change is that if you make a map with a hint
of exactly 8 (which happens, for example, with the unitMap in
time/format.go), we allocate 2 buckets for it instead of 1.

Instead, make overLoadFactor really report when it is > the max
allowed load factor, not >=.  Adjust the callers who want to ensure
that the map is no more than the max load factor after an insertion
by adding a +1 to the current (pre-addition) size.

Change-Id: Ie8d85344800a9a870036b637b1031ddd9e4b93f9
Reviewed-on: https://go-review.googlesource.com/61053
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Martin Möhrmann <moehrmann@google.com>
src/runtime/export_test.go
src/runtime/hashmap.go
src/runtime/hashmap_fast.go
src/runtime/map_test.go