aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2024-11-14 16:58:07 -0800
committerKeith Randall <khr@golang.org>2024-11-17 20:17:05 +0000
commit63f762bcdea96889d8ffa406804665b84bda63ab (patch)
tree6ec8508a506b512742af1d3415116f90d67ad7be /src/cmd/compile/internal
parent04807d3acf160b270fbec42b7b672d531dec06b7 (diff)
downloadgo-63f762bcdea96889d8ffa406804665b84bda63ab.tar.xz
internal/runtime/maps: eliminate a load from the hot path
typ.Group.Size involves two loads. Instead cache GroupSize as a separate fields of the map type so we can get to it in just one load. Change-Id: I10ffdce1c7f75dcf448da14040fda78f0d75fd1d Reviewed-on: https://go-review.googlesource.com/c/go/+/627716 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/cmd/compile/internal')
-rw-r--r--src/cmd/compile/internal/reflectdata/map_swiss.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/reflectdata/map_swiss.go b/src/cmd/compile/internal/reflectdata/map_swiss.go
index 98abd69c34..629136821b 100644
--- a/src/cmd/compile/internal/reflectdata/map_swiss.go
+++ b/src/cmd/compile/internal/reflectdata/map_swiss.go
@@ -276,6 +276,7 @@ func writeSwissMapType(t *types.Type, lsym *obj.LSym, c rttype.Cursor) {
c.Field("Elem").WritePtr(s2)
c.Field("Group").WritePtr(s3)
c.Field("Hasher").WritePtr(hasher)
+ c.Field("GroupSize").WriteUintptr(uint64(gtyp.Size()))
c.Field("SlotSize").WriteUintptr(uint64(slotTyp.Size()))
c.Field("ElemOff").WriteUintptr(uint64(elemOff))
var flags uint32