mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: avoid append in printint, printuint
Should make cmd/link/internal/ld.TestAbstractOriginSanity happier. Change-Id: I121927d42e527ff23d996e7387066f149b11cc59 Reviewed-on: https://go-review.googlesource.com/c/go/+/717480 Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
c93cc603cd
commit
e2c6a2024c
2 changed files with 29 additions and 2 deletions
|
|
@ -174,6 +174,14 @@ func small(i int) string {
|
||||||
return smalls[i*2 : i*2+2]
|
return smalls[i*2 : i*2+2]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RuntimeFormatBase10 formats u into the tail of a
|
||||||
|
// and returns the offset to the first byte written to a.
|
||||||
|
// It is only for use by package runtime.
|
||||||
|
// Other packages should use AppendUint.
|
||||||
|
func RuntimeFormatBase10(a []byte, u uint64) int {
|
||||||
|
return formatBase10(a, u)
|
||||||
|
}
|
||||||
|
|
||||||
// formatBase10 formats the decimal representation of u into the tail of a
|
// formatBase10 formats the decimal representation of u into the tail of a
|
||||||
// and returns the offset of the first byte written to a. That is, after
|
// and returns the offset of the first byte written to a. That is, after
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -140,13 +140,32 @@ func printcomplex64(c complex64) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func printuint(v uint64) {
|
func printuint(v uint64) {
|
||||||
|
// Note: Avoiding strconv.AppendUint so that it's clearer
|
||||||
|
// that there are no allocations in this routine.
|
||||||
|
// cmd/link/internal/ld.TestAbstractOriginSanity
|
||||||
|
// sees the append and doesn't realize it doesn't allocate.
|
||||||
var buf [20]byte
|
var buf [20]byte
|
||||||
gwrite(strconv.AppendUint(buf[:0], v, 10))
|
i := strconv.RuntimeFormatBase10(buf[:], v)
|
||||||
|
gwrite(buf[i:])
|
||||||
}
|
}
|
||||||
|
|
||||||
func printint(v int64) {
|
func printint(v int64) {
|
||||||
|
// Note: Avoiding strconv.AppendUint so that it's clearer
|
||||||
|
// that there are no allocations in this routine.
|
||||||
|
// cmd/link/internal/ld.TestAbstractOriginSanity
|
||||||
|
// sees the append and doesn't realize it doesn't allocate.
|
||||||
|
neg := v < 0
|
||||||
|
u := uint64(v)
|
||||||
|
if neg {
|
||||||
|
u = -u
|
||||||
|
}
|
||||||
var buf [20]byte
|
var buf [20]byte
|
||||||
gwrite(strconv.AppendInt(buf[:0], v, 10))
|
i := strconv.RuntimeFormatBase10(buf[:], u)
|
||||||
|
if neg {
|
||||||
|
i--
|
||||||
|
buf[i] = '-'
|
||||||
|
}
|
||||||
|
gwrite(buf[i:])
|
||||||
}
|
}
|
||||||
|
|
||||||
var minhexdigits = 0 // protected by printlock
|
var minhexdigits = 0 // protected by printlock
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue