aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime
diff options
context:
space:
mode:
authorDmitriy Vyukov <dvyukov@google.com>2014-01-24 22:29:01 +0400
committerDmitriy Vyukov <dvyukov@google.com>2014-01-24 22:29:01 +0400
commit9fa9613e0b63b47a1d19c1ba50a7118304dcebae (patch)
treee59df9d45b5309056e2a3d0e5ead82a779ecdead /src/pkg/runtime
parenta81692e2650fce39bebd77224f4153a326460286 (diff)
downloadgo-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.goc4
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))