go/src/fmt
thepudds 3466e57354 fmt: avoid reflect.Value.Slice to help escape analysis
This is part of a series of CLs that aim to reduce how often
interface arguments escape for the print functions in fmt.

Prior to this change, one reason arguments escape is because
printValue calls reflect.Value.Slice, which causes its
value argument to escape (though at this CL, that is
shrouded in the fmt escape analysis logs by other
printValue escape reasons).

This CL avoids that usage by calling f.Bytes instead,
which is possible because we know f is a slice of bytes
or an addressable array of bytes.

Arguments still escape for other reasons.

Change-Id: Ic3f064117a364007e1dd3197cef9d641abbf784a
Reviewed-on: https://go-review.googlesource.com/c/go/+/524940
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: t hepudds <thepudds1460@gmail.com>
2023-09-07 01:59:23 +00:00
..
doc.go
errors.go errors, fmt: add support for wrapping multiple errors 2022-09-29 18:40:40 +00:00
errors_test.go errors, fmt: add support for wrapping multiple errors 2022-09-29 18:40:40 +00:00
example_test.go
export_test.go
fmt_test.go all: make safe for new vet analyzer 2023-05-08 20:18:40 +00:00
format.go fmt: rely on utf8.AppendRune 2022-09-21 13:54:31 +00:00
gostringer_example_test.go
print.go fmt: avoid reflect.Value.Slice to help escape analysis 2023-09-07 01:59:23 +00:00
scan.go src: rename unexported errors by adding prefix err 2023-02-16 23:09:19 +00:00
scan_test.go fmt,math/big,net/url: fixes to old Benchmarks 2023-05-23 20:25:13 +00:00
state_test.go fmt: add a function to recover the original format string given a State 2022-08-06 09:19:31 +00:00
stringer_example_test.go
stringer_test.go