- 06 Dec, 2013 5 commits
-
-
Carl Shapiro authored
When enabled this new debugging mode will allocate objects on their own page and never recycle memory addresses. This is an essential tool to root cause a broad class of heap corruption. R=golang-dev, dave, daniel.morsing, dvyukov, rsc, iant, cshapiro CC=golang-dev https://golang.org/cl/22060046
-
Peter Collingbourne authored
R=iant CC=golang-dev https://golang.org/cl/38560043
-
Ian Lance Taylor authored
R=golang-dev, r CC=golang-dev https://golang.org/cl/38590043
-
Carl Shapiro authored
R=golang-dev CC=golang-dev https://golang.org/cl/38130043
-
Carl Shapiro authored
cmd/5g, cmd/5l, cmd/6g, cmd/6l, cmd/8g, cmd/8l, cmd/gc, runtime: generate pointer maps by liveness analysis This change allows the garbage collector to examine stack slots that are determined as live and containing a pointer value by the garbage collector. This results in a mean reduction of 65% in the number of stack slots scanned during an invocation of "GOGC=1 all.bash". Unfortunately, this does not yet allow garbage collection to be precise for the stack slots computed as live. Pointers confound the determination of what definitions reach a given instruction. In general, this problem is not solvable without runtime cost but some advanced cooperation from the compiler might mitigate common cases. R=golang-dev, rsc, cshapiro CC=golang-dev https://golang.org/cl/14430048
-
- 04 Dec, 2013 2 commits
-
-
Andrew Gerrand authored
R=golang-dev, iant CC=golang-dev https://golang.org/cl/31900043
-
Rob Pike authored
Nothing significant so far (right?), but let's lay the keystone. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/36830043
-
- 03 Dec, 2013 8 commits
-
-
Carl Shapiro authored
R=golang-dev, r, rsc CC=golang-dev https://golang.org/cl/23320044
-
Carl Shapiro authored
Output for an allocation and free (sweep) follows MProf_Malloc(p=0xc2100210a0, size=0x50, type=0x0 <single object>) #0 0x46ee15 runtime.mallocgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:141 #1 0x47004f runtime.settype_flush /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:612 #2 0x45f92c gc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2071 #3 0x45f89e mgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2050 #4 0x45258b runtime.mcall /usr/local/google/home/cshapiro/go/src/pkg/runtime/asm_amd64.s:179 MProf_Free(p=0xc2100210a0, size=0x50) #0 0x46ee15 runtime.mallocgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:141 #1 0x47004f runtime.settype_flush /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:612 #2 0x45f92c gc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2071 #3 0x45f89e mgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2050 #4 0x45258b runtime.mcall /usr/local/google/home/cshapiro/go/src/pkg/runtime/asm_amd64.s:179 R=golang-dev, dvyukov, rsc, cshapiro CC=golang-dev https://golang.org/cl/21990045
-
Keith Randall authored
Shaves 1% off of binary size. update #6853 R=golang-dev, rsc CC=golang-dev https://golang.org/cl/35940047
-
Carl Shapiro authored
This change reduces the cost of the stack scanning by frames. It moves the stack scanning from the serial root enumeration phase to the parallel tracing phase. The output that follows are timings for the issue 6482 benchmark Baseline BenchmarkGoroutineSelect 50 108027405 ns/op BenchmarkGoroutineBlocking 50 89573332 ns/op BenchmarkGoroutineForRange 20 95614116 ns/op BenchmarkGoroutineIdle 20 122809512 ns/op Stack scan by frames, non-parallel BenchmarkGoroutineSelect 20 297138929 ns/op BenchmarkGoroutineBlocking 20 301137599 ns/op BenchmarkGoroutineForRange 10 312499469 ns/op BenchmarkGoroutineIdle 10 209428876 ns/op Stack scan by frames, parallel BenchmarkGoroutineSelect 20 183938431 ns/op BenchmarkGoroutineBlocking 20 170109999 ns/op BenchmarkGoroutineForRange 20 179628882 ns/op BenchmarkGoroutineIdle 20 157541498 ns/op The remaining performance disparity is due to inefficiencies in gentraceback and its callees. The effect was isolated by using a parallel stack scan where scanstack was modified to do a conservative scan of the stack segments without gentraceback followed by a call of gentrackback with a no-op callback. The output that follows are the top-10 most frequent tops of stacks as determined by the Linux perf record facility. Baseline + 25.19% gc.test gc.test [.] runtime.xchg + 19.00% gc.test gc.test [.] scanblock + 8.53% gc.test gc.test [.] scanstack + 8.46% gc.test gc.test [.] flushptrbuf + 5.08% gc.test gc.test [.] procresize + 3.57% gc.test gc.test [.] runtime.chanrecv + 2.94% gc.test gc.test [.] dequeue + 2.74% gc.test gc.test [.] addroots + 2.25% gc.test gc.test [.] runtime.ready + 1.33% gc.test gc.test [.] runtime.cas64 Gentraceback + 18.12% gc.test gc.test [.] runtime.xchg + 14.68% gc.test gc.test [.] scanblock + 8.20% gc.test gc.test [.] runtime.gentraceback + 7.38% gc.test gc.test [.] flushptrbuf + 6.84% gc.test gc.test [.] scanstack + 5.92% gc.test gc.test [.] runtime.findfunc + 3.62% gc.test gc.test [.] procresize + 3.15% gc.test gc.test [.] readvarint + 1.92% gc.test gc.test [.] addroots + 1.87% gc.test gc.test [.] runtime.chanrecv R=golang-dev, dvyukov, rsc CC=golang-dev https://golang.org/cl/17410043
-
Keith Randall authored
Pass as a slice of strings instead. For 2-5 strings, implement dedicated routines so no slices are needed. static call counts in the go binary: 2 strings: 342 occurrences 3 strings: 98 4 strings: 30 5 strings: 13 6+ strings: 14 Why? C varags, bad for stack scanning and copying. R=golang-dev, iant CC=golang-dev https://golang.org/cl/36380043
-
Keith Randall authored
Now that the map implementation is reading the keys and values from arbitrary memory (instead of from stack slots), it needs to tell the race detector when it does so. Fixes #6875. R=golang-dev, dave CC=golang-dev https://golang.org/cl/36360043
-
Keith Randall authored
Update #6876. R=dave, bradfitz CC=golang-dev https://golang.org/cl/36370043
-
Keith Randall authored
zero object allocated, so we still need to allocate a new zero area every time. Fixes #6876. R=golang-dev CC=golang-dev https://golang.org/cl/36320043
-
- 02 Dec, 2013 3 commits
-
-
Keith Randall authored
and methodValueCall directly. Instead, we inline their behavior inside of reflect.call. This change is required because otherwise we have a situation where reflect.callXX calls makeFuncStub, neither of which knows the layout of the args passed between them. That's bad for precise gc & stack copying. Fixes #6619. R=golang-dev, dvyukov, rsc, iant, khr CC=golang-dev https://golang.org/cl/26970044
-
Keith Randall authored
R=golang-dev, rsc CC=golang-dev https://golang.org/cl/28860043
-
Keith Randall authored
This change is part of the plan to get rid of all vararg C calls which are a pain for getting exact stack scanning. We allocate a chunk of zero memory to return a pointer to when a map access doesn't find the key. This is simpler than returning nil and fixing things up in the caller. Linker magic allocates a single zero memory area that is shared by all (non-reflect-generated) map types. Passing things by reference gets rid of some copies, so it speeds up code with big keys/values. benchmark old ns/op new ns/op delta BenchmarkBigKeyMap 34 31 -8.48% BenchmarkBigValMap 37 30 -18.62% BenchmarkSmallKeyMap 26 23 -11.28% R=golang-dev, dvyukov, khr, rsc CC=golang-dev https://golang.org/cl/14794043
-
- 01 Dec, 2013 1 commit
-
-
Andrew Gerrand authored
R=golang-dev, dsymonds, alex.brainman CC=golang-dev https://golang.org/cl/35000043
-
- 27 Nov, 2013 1 commit
-
-
David Symonds authored
Output from gofmt is a list of errors, so they should appear in the error list. R=adg CC=golang-dev https://golang.org/cl/33760043
-
- 25 Nov, 2013 2 commits
-
-
Oling Cat authored
R=golang-dev, adg CC=golang-dev https://golang.org/cl/30900044
-
David Symonds authored
Fixes #6826. R=golang-dev, bradfitz, adg CC=golang-dev https://golang.org/cl/31770043
-
- 20 Nov, 2013 2 commits
-
-
Rob Pike authored
They were out of date and should refer to the source installation instructions. Fixes #6783. R=golang-dev, rsc, adg, dave CC=golang-dev https://golang.org/cl/28500043
-
Andrew Gerrand authored
Clarify that GOROOT should only be set when using a custom install path. Remove NetBSD from binary install page (we don't provide binaries). Remove "What's next" links from installation instructions. Emphasize "How to Write Go Code" page. Fixes #6613. R=golang-dev, r CC=golang-dev https://golang.org/cl/28700043
-
- 19 Nov, 2013 3 commits
- 18 Nov, 2013 2 commits
-
-
Andrew Gerrand authored
This step makes it possible to upload the -osx10.x binaries separately to their construction (after signing, for example). R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/28160043
-
Andrew Gerrand authored
R=dsymonds CC=golang-dev https://golang.org/cl/28150043
-
- 15 Nov, 2013 1 commit
-
-
Brad Fitzpatrick authored
R=golang-dev, crawshaw CC=golang-dev https://golang.org/cl/27000043
-
- 14 Nov, 2013 2 commits
-
-
Russ Cox authored
Also rename URL to /doc/asm. R=golang-dev, minux.ma, r CC=golang-dev https://golang.org/cl/26170043
-
Russ Cox authored
This seems to be the best of a long list of bad ways to fix this issue. Fixes #6760. R=r CC=golang-dev https://golang.org/cl/22770044
-
- 13 Nov, 2013 7 commits
-
-
Andrew Gerrand authored
R=golang-dev, r CC=golang-dev https://golang.org/cl/26220045
-
Andrew Gerrand authored
R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/25580045
-
Rob Pike authored
Blocked on 20930043, the CL the new text references. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/18430044
-
Rob Pike authored
Fixes #6060 R=golang-dev, iant, bradfitz, josharian, minux.ma, aram, rsc CC=golang-dev https://golang.org/cl/20930043
-
Robert Griesemer authored
This documents the status quo more precisely. Not a language change. Fixes #6006. R=r, rsc, iant, ken CC=golang-dev https://golang.org/cl/14415043
-
Andrew Gerrand authored
I used "and above" when I should have said "or later". Sorry for the churn. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/25670043
-
Andrew Gerrand authored
R=golang-dev, r CC=golang-dev https://golang.org/cl/25370045
-
- 12 Nov, 2013 1 commit
-
-
Robert Griesemer authored
R=adonovan CC=golang-dev https://golang.org/cl/25360043
-