mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: simplify hashmap tooManyOverflowBuckets
This generates better code. Masking B in the return statement should be unnecessary, but the compiler is understandably not yet clever enough to see that. Someday, it'd also be nice for the compiler to generate a CMOV for the saturation if statement. Change-Id: Ie1c157b21f5212610da1f3c7823a93816b3b61b9 Reviewed-on: https://go-review.googlesource.com/54656 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Martin Möhrmann <moehrmann@google.com>
This commit is contained in:
parent
aca92f352d
commit
f5804ce4f3
1 changed files with 4 additions and 3 deletions
|
|
@ -995,10 +995,11 @@ func tooManyOverflowBuckets(noverflow uint16, B uint8) bool {
|
|||
// If the threshold is too high, maps that grow and shrink can hold on to lots of unused memory.
|
||||
// "too many" means (approximately) as many overflow buckets as regular buckets.
|
||||
// See incrnoverflow for more details.
|
||||
if B < 16 {
|
||||
return noverflow >= uint16(1)<<B
|
||||
if B > 15 {
|
||||
B = 15
|
||||
}
|
||||
return noverflow >= 1<<15
|
||||
// The compiler doesn't see here that B < 16; mask B to generate shorter shift code.
|
||||
return noverflow >= uint16(1)<<(B&15)
|
||||
}
|
||||
|
||||
// growing reports whether h is growing. The growth may be to the same size or bigger.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue