Commit ef64d9ff authored by Keith Randall's avatar Keith Randall

runtime: don't allocate a new string in printf

LGTM=dave
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/139890043
parent 6a76bca3
...@@ -39,7 +39,7 @@ func goprintf(s string) { ...@@ -39,7 +39,7 @@ func goprintf(s string) {
// and type tables. // and type tables.
//go:nosplit //go:nosplit
func printf(s *byte) { func printf(s *byte) {
vprintf(gostring(s), add(unsafe.Pointer(&s), unsafe.Sizeof(s))) vprintf(gostringnocopy(s), add(unsafe.Pointer(&s), unsafe.Sizeof(s)))
} }
// sprintf is only called from C code. // sprintf is only called from C code.
......
...@@ -90,6 +90,7 @@ runtime·gobytes(byte *p, intgo n) ...@@ -90,6 +90,7 @@ runtime·gobytes(byte *p, intgo n)
return sl; return sl;
} }
#pragma textflag NOSPLIT
String String
runtime·gostringnocopy(byte *str) runtime·gostringnocopy(byte *str)
{ {
......
...@@ -203,6 +203,7 @@ func noteclear(n *note) ...@@ -203,6 +203,7 @@ func noteclear(n *note)
func lock(lk *mutex) func lock(lk *mutex)
func unlock(lk *mutex) func unlock(lk *mutex)
func purgecachedstats(c *mcache) func purgecachedstats(c *mcache)
func gostringnocopy(b *byte) string
//go:noescape //go:noescape
func write(fd uintptr, p unsafe.Pointer, n int32) int32 func write(fd uintptr, p unsafe.Pointer, n int32) int32
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment