tag go1.2rc5

R=dsymonds
CC=golang-dev
https://codereview.appspot.com/28150043
misc/dist: fix file regexp

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://codereview.appspot.com/28160043
13+
-
test: revert unintentional commits
I thought I am in a different repo...
doc: update installation instructions

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 issue 6613.

R=golang-dev, r
CC=golang-dev
https://codereview.appspot.com/28700043
README: Fix installation instructions
They were out of date and should refer to the source installation instructions.

Fixes issue 6783.

R=golang-dev, rsc, adg, dave
CC=golang-dev
https://codereview.appspot.com/28500043
misc/vim: describe how to get gofmt-on-save behaviour.

Fixes issue 6826.

R=golang-dev, bradfitz, adg
CC=golang-dev
https://codereview.appspot.com/31770043
doc/install.html: fix a tag.

R=golang-dev, adg
CC=golang-dev
https://codereview.appspot.com/30900044

Committer: Andrew Gerrand <adg@golang.org>
misc/vim: send Fmt errors to the quickfix list instead of the location list.

Output from gofmt is a list of errors, so they should appear in the error list.

R=adg
CC=golang-dev
https://codereview.appspot.com/33760043
tag go1.2

R=golang-dev, dsymonds, alex.brainman
CC=golang-dev
https://codereview.appspot.com/35000043
runtime: pass key/value to map accessors by reference, not by value.

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://codereview.appspot.com/14794043
runtime: don't use ... formal argument to deferreturn.

R=golang-dev, rsc
CC=golang-dev
https://codereview.appspot.com/28860043
reflect: prevent the callXX routines from calling makeFuncStub
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 issue 6619.

R=golang-dev, dvyukov, rsc, iant, khr
CC=golang-dev
https://codereview.appspot.com/26970044
reflect: fix Zero() implementation - not every type has a
zero object allocated, so we still need to allocate a new
zero area every time.

Fixes issue 6876.

R=golang-dev
CC=golang-dev
https://codereview.appspot.com/36320043
reflect: test to make sure big Zero()-obtained objects are really zero.

Update issue 6876.

R=dave, bradfitz
CC=golang-dev
https://codereview.appspot.com/36370043
runtime: fix race detector when map keys/values are passed by pointer.

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 issue 6875.

R=golang-dev, dave
CC=golang-dev
https://codereview.appspot.com/36360043
runtime: get rid of concatstring's vararg C argument.

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://codereview.appspot.com/36380043
runtime: move stack scanning into the parallel mark phase

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://codereview.appspot.com/17410043
cmd/gc: fix special-casing of the printed names of map internal structures.
Shaves 1% off of binary size.

update issue 6853

R=golang-dev, rsc
CC=golang-dev
https://codereview.appspot.com/35940047