mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: on map update, don't overwrite key if we don't need to.
Keep track of which types of keys need an update and which don't. Strings need an update because the new key might pin a smaller backing store. Floats need an update because it might be +0/-0. Interfaces need an update because they may contain strings or floats. Fixes #11088 Change-Id: I9ade53c1dfb3c1a2870d68d07201bc8128e9f217 Reviewed-on: https://go-review.googlesource.com/10843 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
af7c9a42c1
commit
00c638d243
4 changed files with 86 additions and 6 deletions
|
|
@ -67,6 +67,7 @@ type maptype struct {
|
|||
indirectvalue bool // store ptr to value instead of value itself
|
||||
bucketsize uint16 // size of bucket
|
||||
reflexivekey bool // true if k==k for all keys
|
||||
needkeyupdate bool // true if we need to update key on an overwrite
|
||||
}
|
||||
|
||||
type chantype struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue