diff options
author | Matthew Dempsky <mdempsky@google.com> | 2021-08-26 16:57:06 -0700 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2021-08-27 03:24:35 +0000 |
commit | d350a6653252fe1f698ac00be99964fa31d06e89 (patch) | |
tree | 9faca4389a0570d9e42bc2c2f80e1cfcc9340f1a /src/cmd/compile/internal/abi | |
parent | d7e2e2ec2b2a11c2bfb98a27c03d0dccba62c4fb (diff) | |
download | go-d350a6653252fe1f698ac00be99964fa31d06e89.tar.gz go-d350a6653252fe1f698ac00be99964fa31d06e89.zip |
cmd/compile: eagerly CalcStructSize for synthetic ABI types
The next CL is going to replace Type.Width with Type.Size(), but
Type.Size() isn't safe to call concurrently. So this CL calls
CalcStructSize, which *is* allowed to be used concurrently, but then
it's the caller's responsibility to ensure it's called right after
NewStruct.
Change-Id: If9cd81650ccb3a867b4449af757375fa56227901
Reviewed-on: https://go-review.googlesource.com/c/go/+/345483
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/abi')
-rw-r--r-- | src/cmd/compile/internal/abi/abiutils.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/abi/abiutils.go b/src/cmd/compile/internal/abi/abiutils.go index d657ddc867..24f34b8263 100644 --- a/src/cmd/compile/internal/abi/abiutils.go +++ b/src/cmd/compile/internal/abi/abiutils.go @@ -722,14 +722,17 @@ func setup() { types.NewField(nxp, fname("len"), ui), types.NewField(nxp, fname("cap"), ui), }) + types.CalcStructSize(synthSlice) synthString = types.NewStruct(types.NoPkg, []*types.Field{ types.NewField(nxp, fname("data"), unsp), types.NewField(nxp, fname("len"), ui), }) + types.CalcStructSize(synthString) synthIface = types.NewStruct(types.NoPkg, []*types.Field{ types.NewField(nxp, fname("f1"), unsp), types.NewField(nxp, fname("f2"), unsp), }) + types.CalcStructSize(synthIface) }) } |