From: Michael Anthony Knyszek Date: Thu, 2 Jun 2022 21:10:26 +0000 (+0000) Subject: runtime: avoid string allocation in printDebuglog X-Git-Tag: go1.19beta1~76 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=73587b71a62f7c7a27664a207781dedae223774b;p=gostls13.git runtime: avoid string allocation in printDebuglog Either due to a new nowritebarrierrec annotation or a change in escape analysis, printDebuglog can't be called from sighandler anymore. Fix this by avoiding a string allocation that's the primary culprit. Change-Id: Ic84873a453f45852b0443a46597ed3ab8c9443fd Reviewed-on: https://go-review.googlesource.com/c/go/+/410121 Run-TryBot: Michael Knyszek Reviewed-by: Michael Pratt TryBot-Result: Gopher Robot --- diff --git a/src/runtime/debuglog.go b/src/runtime/debuglog.go index 7f92a6baf8..ca1a791c93 100644 --- a/src/runtime/debuglog.go +++ b/src/runtime/debuglog.go @@ -777,7 +777,8 @@ func printDebugLog() { // Logged before runtimeInitTime was set. pnano = 0 } - print(string(itoaDiv(tmpbuf[:], uint64(pnano), 9))) + pnanoBytes := itoaDiv(tmpbuf[:], uint64(pnano), 9) + print(slicebytetostringtmp((*byte)(noescape(unsafe.Pointer(&pnanoBytes[0]))), len(pnanoBytes))) print(" P ", p, "] ") for i := 0; s.begin < s.end; i++ {