diff options
| author | Dmitriy Vyukov <dvyukov@google.com> | 2014-01-24 22:29:01 +0400 |
|---|---|---|
| committer | Dmitriy Vyukov <dvyukov@google.com> | 2014-01-24 22:29:01 +0400 |
| commit | 9fa9613e0b63b47a1d19c1ba50a7118304dcebae (patch) | |
| tree | e59df9d45b5309056e2a3d0e5ead82a779ecdead /src/pkg/runtime | |
| parent | a81692e2650fce39bebd77224f4153a326460286 (diff) | |
| download | go-9fa9613e0b63b47a1d19c1ba50a7118304dcebae.tar.xz | |
runtime: do not zero terminate strings
On top of "tiny allocator" (cl/38750047), reduces number of allocs by 1% on json.
No code must rely on zero termination. So will also make debugging simpler,
by uncovering issues earlier.
json-1
allocated 7949686 7915766 -0.43%
allocs 93778 92790 -1.05%
time 100957795 97250949 -3.67%
rest of the metrics are too noisy.
LGTM=r
R=golang-codereviews, r, bradfitz, iant
CC=golang-codereviews
https://golang.org/cl/40370061
Diffstat (limited to 'src/pkg/runtime')
| -rw-r--r-- | src/pkg/runtime/string.goc | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/pkg/runtime/string.goc b/src/pkg/runtime/string.goc index 57b3546c3f..8eff05a843 100644 --- a/src/pkg/runtime/string.goc +++ b/src/pkg/runtime/string.goc @@ -46,10 +46,8 @@ gostringsize(intgo l) if(l == 0) return runtime·emptystring; - // leave room for NUL for C runtime (e.g., callers of getenv) - s.str = runtime·mallocgc(l+1, 0, FlagNoScan|FlagNoZero); + s.str = runtime·mallocgc(l, 0, FlagNoScan|FlagNoZero); s.len = l; - s.str[l] = 0; for(;;) { ms = runtime·maxstring; if((uintptr)l <= ms || runtime·casp((void**)&runtime·maxstring, (void*)ms, (void*)l)) |
