mirror of
https://github.com/golang/go
synced 2024-11-24 19:30:42 -07:00
cmd/compile: fix OADDSTR buffer size calculation
The size calculation has been wrong since this code was first committed in https://golang.org/cl/3120. The effect was that the compiler always allocated a temporary buffer on the stack for a non-escaping string concatenation. This turns out to make no practical difference, as the compiler always allocates a buffer of the same size (32 bytes) and the runtime only uses the temporary buffer if the concatenated strings fit (check is in rawstringtmp in runtime/string.go). The effect of this change is to avoid generating a temporary buffer on the stack that will not be used. Change-Id: Id632bfe3d6c113c9934c018a2dd4bcbf1784a63d Reviewed-on: https://go-review.googlesource.com/20112 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
88e18032bd
commit
8b4deb448e
@ -2718,8 +2718,8 @@ func addstr(n *Node, init **NodeList) *Node {
|
|||||||
if n.Esc == EscNone {
|
if n.Esc == EscNone {
|
||||||
sz := int64(0)
|
sz := int64(0)
|
||||||
for l := n.List; l != nil; l = l.Next {
|
for l := n.List; l != nil; l = l.Next {
|
||||||
if n.Op == OLITERAL {
|
if l.N.Op == OLITERAL {
|
||||||
sz += int64(len(n.Val().U.(string)))
|
sz += int64(len(l.N.Val().U.(string)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user