runtime: interpret type information during garbage collection

R=rsc, dvyukov, remyoudompheng, dave, minux.ma, bradfitz
CC=golang-dev
https://codereview.appspot.com/6945069

Committer: Russ Cox <rsc@golang.org>
runtime: work around 5c bug in GC code.

5c miscompiles *p++ = struct_literal.

R=dave, golang-dev
CC=golang-dev
https://codereview.appspot.com/7065069
syscall: implement Pipe2 on Linux and use it in ForkExec

Fixes issue 2656.

R=golang-dev, bradfitz, iant, minux.ma
CC=golang-dev
https://codereview.appspot.com/7062057

Committer: Ian Lance Taylor <iant@golang.org>
net: use windows ConnectEx to dial (when possible)

Update issue 2631.
Update issue 3097.

R=golang-dev, bradfitz
CC=golang-dev
https://codereview.appspot.com/7061060
encoding/json: improve performance of Unmarshal on primitive types

Skip most of the scanning and parsing logic for simple (non-object/array) JSON values.

benchmark                   old ns/op    new ns/op    delta
BenchmarkUnmarshalInt             948          436  -54.01%
BenchmarkUnmarshalUint            930          427  -54.09%
BenchmarkUnmarshalString         1407          715  -49.18%
BenchmarkUnmarshalFloat          1114          536  -51.89%
BenchmarkUnmarshalBool            759          266  -64.95%
BenchmarkUnmarshalStruct         8165         8181   +0.20%

No significant effects on the go1 benchmarks:

benchmark                 old ns/op    new ns/op    delta
BenchmarkBinaryTree17    9647362752   9596196417   -0.53%
BenchmarkFannkuch11      5623613048   5518694872   -1.87%
BenchmarkGobDecode         32944041     33165434   +0.67%
BenchmarkGobEncode         21237482     21080554   -0.74%
BenchmarkGzip             750955920    749861980   -0.15%
BenchmarkGunzip           197369742    197886192   +0.26%
BenchmarkJSONEncode        79274091     78891137   -0.48%
BenchmarkJSONDecode       180257802    175280358   -2.76%
BenchmarkMandelbrot200      7396666      7388266   -0.11%
BenchmarkParse             11446460     11386550   -0.52%
BenchmarkRevcomp         1605152523   1599512029   -0.35%
BenchmarkTemplate         204538247    207765574   +1.58%

benchmark                  old MB/s     new MB/s  speedup
BenchmarkGobDecode            23.30        23.14    0.99x
BenchmarkGobEncode            36.14        36.41    1.01x
BenchmarkGzip                 25.84        25.88    1.00x
BenchmarkGunzip               98.32        98.06    1.00x
BenchmarkJSONEncode           24.48        24.60    1.00x
BenchmarkJSONDecode           10.76        11.07    1.03x
BenchmarkParse                 5.06         5.09    1.01x
BenchmarkRevcomp             158.34       158.90    1.00x
BenchmarkTemplate              9.49         9.34    0.98x

Fixes issue 3949.

R=golang-dev, dave, bradfitz, timo
CC=golang-dev
https://codereview.appspot.com/7068043

Committer: Brad Fitzpatrick <bradfitz@golang.org>
cmd/5l: support -Z (zero stack frame at function entry)
also added appropriate docs to cmd/ld/doc.go
(largely copied from Russ's CL 6938073).

R=rsc
CC=golang-dev
https://codereview.appspot.com/7004049
cmd/5g: allow optimization of return registers.
Modeled after CL 7030046 by daniel.morsing.

example program:
func f(x int) int { x -= 10; return x }

5g -S difference:
 --- prog list "f" ---
 0011 (x.go:7) TEXT   	add+0(SB),$0-8
 0012 (x.go:7) MOVW   	x+0(FP),R0
-0013 (x.go:7) SUB    	$10,R0,R2
-0014 (x.go:7) MOVW   	R2,R0
-0015 (x.go:7) MOVW   	R2,.noname+4(FP)
-0016 (x.go:7) RET    	,
+0013 (x.go:7) SUB    	$10,R0
+0014 (x.go:7) MOVW   	R0,.noname+4(FP)
+0015 (x.go:7) RET    	,

R=dave, rsc
CC=golang-dev
https://codereview.appspot.com/7030047
cmd/gc, cmd/ld: update doc.go for -race

R=golang-dev, dave, rsc
CC=golang-dev
https://codereview.appspot.com/7066052
bytes: fix UnreadByte failure after ReadBytes

Fixes issue 4583.

R=golang-dev, minux.ma, bradfitz, rsc, dave
CC=golang-dev
https://codereview.appspot.com/6976050

Committer: Dave Cheney <dave@cheney.net>
cmd/6g, cmd/8g: Allow optimization of return registers.

The peephole optimizer would keep hands off AX and X0 during returns, even though go doesn't return through registers.

R=dave, rsc
CC=golang-dev
https://codereview.appspot.com/7030046
os: use syscall.Pipe2 on Linux

Update issue 2656

R=golang-dev, iant, minux.ma, bradfitz
CC=golang-dev
https://codereview.appspot.com/7065063

Committer: Ian Lance Taylor <iant@golang.org>
net/http: buffer before chunking

This introduces a buffer between writing from a handler and
writing chunks.  Further, it delays writing the header until
the first full chunk is ready.  In the case where the first
full chunk is also the final chunk (for small responses), that
means we can also compute a Content-Length, which is a nice
side effect for certain benchmarks.

Fixes issue 2357

R=golang-dev, dave, minux.ma, rsc, adg, balasanjay
CC=golang-dev
https://codereview.appspot.com/6964043