• Keith Randall's avatar
    runtime: fix hashmap load factor computation · dbe3522c
    Keith Randall authored
    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: 's avatarMartin Möhrmann <moehrmann@google.com>
    dbe3522c
hashmap_fast.go 31.9 KB