aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2017-08-17 23:13:57 -0700
committerKeith Randall <khr@golang.org>2017-08-18 14:52:25 +0000
commit77871cc664b3a87e4972c874369e2ade79038d76 (patch)
tree01ae1d256d8ad0c5b5903a2c403dee817047b6fd /src
parenta93753401db052f3192103e2c4d4c547d740b41f (diff)
downloadgo-77871cc664b3a87e4972c874369e2ade79038d76.tar.xz
runtime: no need to protect key/value increments against end of bucket
After the key and value arrays, we have an overflow pointer. So there's no way a past-the-end key or value pointer could point past the end of the containing bucket. So we don't need this additional protection. Update #21459 Change-Id: I7726140033b06b187f7a7d566b3af8cdcaeab0b0 Reviewed-on: https://go-review.googlesource.com/56772 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Martin Möhrmann <moehrmann@google.com> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Avelino <t@avelino.xxx>
Diffstat (limited to 'src')
-rw-r--r--src/runtime/hashmap.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/runtime/hashmap.go b/src/runtime/hashmap.go
index 28ea376cf4..f39fb7d3bf 100644
--- a/src/runtime/hashmap.go
+++ b/src/runtime/hashmap.go
@@ -1119,12 +1119,12 @@ func evacuate(t *maptype, h *hmap, oldbucket uintptr) {
typedmemmove(t.elem, dst.v, v)
}
dst.i++
- // If we're at the end of the bucket, don't update k/v,
- // to avoid pointers pointing past the end of the bucket.
- if dst.i < bucketCnt {
- dst.k = add(dst.k, uintptr(t.keysize))
- dst.v = add(dst.v, uintptr(t.valuesize))
- }
+ // These updates might push these pointers past the end of the
+ // key or value arrays. That's ok, as we have the overflow pointer
+ // at the end of the bucket to protect against pointing past the
+ // end of the bucket.
+ dst.k = add(dst.k, uintptr(t.keysize))
+ dst.v = add(dst.v, uintptr(t.valuesize))
}
}
// Unlink the overflow buckets & clear key/value to help GC.