- 03 Dec, 2013 5 commits
-
-
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 2 commits
-
-
Robert Griesemer authored
R=adonovan CC=golang-dev https://golang.org/cl/25360043
-
Robert Griesemer authored
Generated by addca. R=gobot CC=golang-dev https://golang.org/cl/25350043
-
- 11 Nov, 2013 2 commits
-
-
David Crawshaw authored
R=dsymonds, dominik.honnef, n13m3y3r, rsc, kamil.kisiel CC=golang-dev https://golang.org/cl/22940044
-
Olivier Duperray authored
Fixes issue 5807 . R=golang-dev, adg CC=golang-dev https://golang.org/cl/23940043
-
- 08 Nov, 2013 2 commits
-
-
Dominik Honnef authored
- Use #' for function symbols - Remove unused variables - Use declare-function to shut up byte compiler This is identical to CL 19010044 with one exception: Making sure it doesn't break on Emacs 22.1 R=adonovan, bradfitz, shendaras CC=golang-dev https://golang.org/cl/20100043
-
Sameer Ajmani authored
R=adonovan CC=golang-dev https://golang.org/cl/23680043
-
- 07 Nov, 2013 1 commit
-
-
Russ Cox authored
Clang does not record the "size" field for pointer types, so we must insert the size ourselves. We were already doing this, but only for the case of pointer types. For an array of pointer types, the setting of the size for the nested pointer type was happening after the computation of the size of the array type, meaning that the array type was always computed as 0 bytes. Delay the size computation. This bug happens on all Clang systems, not just FreeBSD. Our test checked that cgo wrote something, not that it was correct. FreeBSD's default clang rejects array[0] as a C struct field, so it noticed the incorrect sizes. But the sizes were incorrect everywhere. Update testcdefs to check the output has the right semantics. Fixes #6292. R=golang-dev, iant CC=golang-dev https://golang.org/cl/22840043
-
- 06 Nov, 2013 1 commit
-
-
Ian Lance Taylor authored
R=golang-dev, minux.ma CC=golang-dev https://golang.org/cl/22510043
-
- 05 Nov, 2013 3 commits
-
-
Ato Araki authored
This fix will show a good synopsis on package listings in that languages. R=adg, r CC=golang-dev https://golang.org/cl/21130043
-
Andrew Gerrand authored
Generated by addca. R=gobot CC=golang-dev https://golang.org/cl/21790043
-
Andrew Gerrand authored
I know it's linked in the previous sentence, but this new link is where I want it to be while reading this sentence. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/21770043
-