]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: enable zero-copy string->[]byte conversions
authorMatthew Dempsky <mdempsky@google.com>
Thu, 17 Aug 2023 05:57:12 +0000 (22:57 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 17 Aug 2023 19:37:36 +0000 (19:37 +0000)
commitc8adb3004ff05654d98041c76c68b64e1d479782
treea6e6a92c4c180a6b0ccf4bf975b681649c98370b
parentb805e18fbf6dee945236159d89cf3d29fcd541c4
cmd/compile: enable zero-copy string->[]byte conversions

This CL enables the latent support for string->[]byte conversions
added go.dev/cl/520259.

One catch is that we need to make sure []byte("") evaluates to a
non-nil slice, even if "" is (nil, 0). This CL addresses that by
adding a "ptr != nil" check for OSTR2BYTESTMP, unless the NonNil flag
is set.

The existing uses of OSTR2BYTESTMP (which aren't concerned about
[]byte("") evaluating to nil) are updated to set this flag.

Fixes #2205.

Change-Id: I35a9cb16c164cd86156b7560915aba5108d8b523
Reviewed-on: https://go-review.googlesource.com/c/go/+/520395
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/compile/internal/escape/escape.go
src/cmd/compile/internal/ssagen/ssa.go
src/cmd/compile/internal/walk/order.go
src/cmd/compile/internal/walk/switch.go
test/escape2.go
test/escape2n.go