]> Cypherpunks repositories - gostls13.git/log
gostls13.git
8 years agocmd/go: remove .o and .a files in builder.collect
Russ Cox [Thu, 3 Nov 2016 03:22:18 +0000 (23:22 -0400)]
cmd/go: remove .o and .a files in builder.collect

This matches the removal of .so files and makes the processing
of '-L/path/to -lfoo' and plain '/path/to/foo.a' match.

Fixes #16463.

Change-Id: I1464c5390d7eb6a3a33b4b2c951f87ef392ec94a
Reviewed-on: https://go-review.googlesource.com/32642
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agoencoding/asn1: document that default:x tag only has meaning with optional tag
Russ Cox [Wed, 26 Oct 2016 16:18:00 +0000 (12:18 -0400)]
encoding/asn1: document that default:x tag only has meaning with optional tag

Fixes #16712.

Change-Id: Ib216059c6c0c952162c19e080dcf3799f0652a8d
Reviewed-on: https://go-review.googlesource.com/32171
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Quentin Smith <quentin@golang.org>
8 years agomisc/cgo/testsanitizers: skip tests when vm.overcommit_memory=2
Russ Cox [Wed, 2 Nov 2016 20:33:33 +0000 (16:33 -0400)]
misc/cgo/testsanitizers: skip tests when vm.overcommit_memory=2

Fixes #17689.

Change-Id: I45a14e6bf4b2647431105f3e0b63b7076b6655d2
Reviewed-on: https://go-review.googlesource.com/32635
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agotime: document that only Jan and January, Mon and Monday are recognized
Russ Cox [Wed, 2 Nov 2016 21:19:42 +0000 (17:19 -0400)]
time: document that only Jan and January, Mon and Monday are recognized

Not "J", not "JAN", not "jan", etc.

Fixes #17523.

Change-Id: I16b5da97e73d88c6680c36401d30f8a195061527
Reviewed-on: https://go-review.googlesource.com/32636
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
8 years agocmd/go: fix coverage in xtest of cgo package
Russ Cox [Thu, 3 Nov 2016 01:15:41 +0000 (21:15 -0400)]
cmd/go: fix coverage in xtest of cgo package

Cover-annotated cgo-rebuilt package for xtest was
not linked into package graph and so not being rebuilt.
Link into package graph.

Fixes #13625.

Change-Id: I685f7276f92bbc85fbc4b389111c83d9fe517637
Reviewed-on: https://go-review.googlesource.com/32614
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/go: fix TestGoGetDashTIssue8181
Russ Cox [Thu, 3 Nov 2016 01:52:27 +0000 (21:52 -0400)]
cmd/go: fix TestGoGetDashTIssue8181

The test case was importing golang.org/x/build/cmd/cl,
which is a package main and cannot be imported.
The test case (stored in a separate repo) has been changed
to import golang.org/x/build/gerrit. Update the test accordingly.

Fixes #17702.

Change-Id: I80e150092111b5a04bb00c992b32edb271edb086
Reviewed-on: https://go-review.googlesource.com/32616
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/go: use new HTTP-only server insecure.go-get-issue-15410.appspot.com instead...
Russ Cox [Thu, 3 Nov 2016 03:01:20 +0000 (23:01 -0400)]
cmd/go: use new HTTP-only server insecure.go-get-issue-15410.appspot.com instead of wh3rd.net

Fixes #15410.

Change-Id: I9964d0162a3cae690afeb889b1822cf79c80b89a
Reviewed-on: https://go-review.googlesource.com/32639
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
8 years agocmd/compile: update/remove outdated comments
Robert Griesemer [Thu, 3 Nov 2016 03:34:29 +0000 (20:34 -0700)]
cmd/compile: update/remove outdated comments

Change-Id: I5a74be1593dca8ba5e0829f0bae35dc9ce702671
Reviewed-on: https://go-review.googlesource.com/32672
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agoruntime/testdata/testprog: increase GCFairness2 timeout to 1s
Quentin Smith [Wed, 2 Nov 2016 20:18:22 +0000 (16:18 -0400)]
runtime/testdata/testprog: increase GCFairness2 timeout to 1s

OpenBSD's scheduler causes preemption to take 20+ms, so 30ms is not
enough time for 3 goroutines to run. This change continues to sleep for
30ms, but if it finds that the 3 goroutines have not run, it sleeps for
an additional 1s before declaring failure.

Updates #17712

Change-Id: I3e886e40d05192b7cb71b4f242af195836ef62a8
Reviewed-on: https://go-review.googlesource.com/32634
Reviewed-by: Rick Hudson <rlh@golang.org>
Run-TryBot: Quentin Smith <quentin@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/vet/all: add s390x support
Josh Bleecher Snyder [Thu, 3 Nov 2016 01:16:51 +0000 (18:16 -0700)]
cmd/vet/all: add s390x support

Some of these whitelist entries could be
eliminated, e.g. by the addition of Go
declarations, but this is a start.

Change-Id: I2fb3234cf05ebc6b161aacac2d4c15d810d50527
Reviewed-on: https://go-review.googlesource.com/32671
Reviewed-by: Michael Munday <munday@ca.ibm.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime: fix s390x asm frame sizes
Josh Bleecher Snyder [Thu, 3 Nov 2016 02:02:43 +0000 (19:02 -0700)]
runtime: fix s390x asm frame sizes

Found by vet.

Change-Id: I1d78454facdd3522509ecfe7c73b21c4602ced8a
Reviewed-on: https://go-review.googlesource.com/32670
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Munday <munday@ca.ibm.com>
8 years agoall: update s390x assembly to use vet-friendly names
Josh Bleecher Snyder [Thu, 3 Nov 2016 02:02:15 +0000 (19:02 -0700)]
all: update s390x assembly to use vet-friendly names

No functional changes.

Change-Id: Ibf592c04be506a76577d48574e84ab20c3238b49
Reviewed-on: https://go-review.googlesource.com/32589
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Munday <munday@ca.ibm.com>
8 years agocmd/go: run mkalldocs.sh
Mohit Agarwal [Thu, 3 Nov 2016 14:23:27 +0000 (19:53 +0530)]
cmd/go: run mkalldocs.sh

Follow-up to CL 32114

Change-Id: I75247ed9c1c0a0e8a278eb75a60d4c5bee355409
Reviewed-on: https://go-review.googlesource.com/32690
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/go: add version of GOROOT to go bug details
Russ Cox [Thu, 3 Nov 2016 03:31:08 +0000 (23:31 -0400)]
cmd/go: add version of GOROOT to go bug details

Fixes #15877.

Change-Id: Ia1e327c0cea3be43e5f8ba637c97c223cee4bb5a
Reviewed-on: https://go-review.googlesource.com/32643
TryBot-Result: Gobot Gobot <gobot@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/pprof: use correct default handler for Go programs
Russ Cox [Thu, 3 Nov 2016 13:13:16 +0000 (09:13 -0400)]
cmd/pprof: use correct default handler for Go programs

The original go tool pprof (written in Perl) got this right.
The Go rewrite never has, but should.

Change-Id: Ie1fc571214c61b1b5654a0bc90e15eb889adf059
Reviewed-on: https://go-review.googlesource.com/32617
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: write type symbols referenced in ptabs
David Crawshaw [Fri, 23 Sep 2016 22:39:31 +0000 (08:39 +1000)]
cmd/compile: write type symbols referenced in ptabs

The exported symbol for a plugin can be the only reference to a
type in a program. In particular, "var F func()" will have
the type *func(), which is uncommon.

Fixes #17140

Change-Id: Ide2104edbf087565f5377374057ae54e0c00c57e
Reviewed-on: https://go-review.googlesource.com/29692
Run-TryBot: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
8 years agonet: disallow dialing and listening on port > 65535 on Plan 9
David du Colombier [Thu, 3 Nov 2016 10:50:45 +0000 (11:50 +0100)]
net: disallow dialing and listening on port > 65535 on Plan 9

Since Dial(":80") was implemented on Plan 9 (CL 32593),
TestProtocolDialError is failing because dialing a port
superior to 65535 is supported on Plan 9.

This change disallows dialing and listening on ports
superior to 65535.

Fixes #17761.

Change-Id: I95e8a163eeacf1ccd8ece7b650f16a0531c59709
Reviewed-on: https://go-review.googlesource.com/32594
Reviewed-by: Russ Cox <rsc@golang.org>
8 years agonet: fix Dial(":80") on Plan 9
David du Colombier [Thu, 3 Nov 2016 13:57:05 +0000 (14:57 +0100)]
net: fix Dial(":80") on Plan 9

CL 32101 fixed Dial(":80") on Windows and added TestDialLocal,
which was failing on Plan 9, because it wasn't implemented
on Plan 9.

This change implements Dial(":80") by connecting to 127.0.0.1
or ::1 (depending on network), so it works as documented.

Fixes #17760.

Change-Id: If0ff769299e09bebce11fc3708639c1d8c96c280
Reviewed-on: https://go-review.googlesource.com/32593
Reviewed-by: Russ Cox <rsc@golang.org>
8 years agocmd/vet: teach vet about ast.AliasSpec
Josh Bleecher Snyder [Thu, 3 Nov 2016 01:25:57 +0000 (18:25 -0700)]
cmd/vet: teach vet about ast.AliasSpec

Fixes #17755

Change-Id: I1ad1edc382b1312d992963054eb82648cb5112d2
Reviewed-on: https://go-review.googlesource.com/32588
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
8 years agocmd/compile/internal/ssa: generate bswap on AMD64
Ilya Tocar [Thu, 27 Oct 2016 13:58:45 +0000 (16:58 +0300)]
cmd/compile/internal/ssa: generate bswap on AMD64

Generate bswap+load/store for reading/writing big endian data.
Helps encoding/binary.

name                    old time/op    new time/op    delta
ReadSlice1000Int32s-8     5.06µs ± 8%    4.58µs ± 8%   -9.50%        (p=0.000 n=10+10)
ReadStruct-8              1.07µs ± 0%    1.05µs ± 0%   -1.51%         (p=0.000 n=9+10)
ReadInts-8                 367ns ± 0%     363ns ± 0%   -1.15%          (p=0.000 n=8+9)
WriteInts-8                475ns ± 1%     469ns ± 0%   -1.45%        (p=0.000 n=10+10)
WriteSlice1000Int32s-8    5.03µs ± 3%    4.50µs ± 3%  -10.45%          (p=0.000 n=9+9)
PutUvarint32-8            17.2ns ± 0%    17.2ns ± 0%     ~     (all samples are equal)
PutUvarint64-8            46.7ns ± 0%    46.7ns ± 0%     ~           (p=0.509 n=10+10)

name                    old speed      new speed      delta
ReadSlice1000Int32s-8    791MB/s ± 8%   875MB/s ± 8%  +10.53%        (p=0.000 n=10+10)
ReadStruct-8            70.0MB/s ± 0%  71.1MB/s ± 0%   +1.54%         (p=0.000 n=9+10)
ReadInts-8              81.6MB/s ± 0%  82.6MB/s ± 0%   +1.21%          (p=0.000 n=9+9)
WriteInts-8             63.0MB/s ± 1%  63.9MB/s ± 0%   +1.45%        (p=0.000 n=10+10)
WriteSlice1000Int32s-8   796MB/s ± 4%   888MB/s ± 3%  +11.65%          (p=0.000 n=9+9)
PutUvarint32-8           233MB/s ± 0%   233MB/s ± 0%     ~           (p=0.089 n=10+10)
PutUvarint64-8           171MB/s ± 0%   171MB/s ± 0%     ~            (p=0.137 n=10+9)

Change-Id: Ia2dbdef92198eaa7e2af5443a8ed586d4b401ffb
Reviewed-on: https://go-review.googlesource.com/32222
Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agocmd/compile: add OMOD to list of ops that might panic
Josh Bleecher Snyder [Thu, 3 Nov 2016 00:55:53 +0000 (17:55 -0700)]
cmd/compile: add OMOD to list of ops that might panic

Follow-up to CL 32551.

Change-Id: If68f9581a7f13e04796aaff2007c09f8ea2c3611
Reviewed-on: https://go-review.googlesource.com/32586
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agoencoding/asn1: return error for unexported fields in Marshal, Unmarshal
Hiroshi Ioka [Fri, 21 Oct 2016 00:00:07 +0000 (09:00 +0900)]
encoding/asn1: return error for unexported fields in Marshal, Unmarshal

The old code cannot handle unexported fields, it panics.
The new code returns error instead.

Fixes #17462

Change-Id: I927fc46b21d60e86cb52e84c65f2122f9159b21d
Reviewed-on: https://go-review.googlesource.com/31540
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
8 years agonet/http: deflake TestServerSetKeepAlivesEnabledClosesConns
Brad Fitzpatrick [Thu, 3 Nov 2016 01:11:49 +0000 (01:11 +0000)]
net/http: deflake TestServerSetKeepAlivesEnabledClosesConns

Fixes #17754
Updates #9478 (details in here)

Change-Id: Iae2c1ca05a18ed266b53b2594c22fc57fab33c5e
Reviewed-on: https://go-review.googlesource.com/32587
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile/internal/gc: make tests run faster
Josh Bleecher Snyder [Thu, 3 Nov 2016 00:55:29 +0000 (17:55 -0700)]
cmd/compile/internal/gc: make tests run faster

TestAssembly takes 20s on my machine,
which is too slow for normal operation.
Marking as -short has its dangers (#17472),
but hopefully we'll soon have a builder for that.

All the SSA tests are hermetic and not time sensitive
and can thus be run in parallel.
Reduces the cmd/compile/internal/gc test time during
all.bash on my laptop from 42s to 7s.

Updates #17751

Change-Id: Idd876421db23b9fa3475e8a9b3355a5dc92a5a29
Reviewed-on: https://go-review.googlesource.com/32585
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agonet/http: update bundled http2 to fix test flake
Brad Fitzpatrick [Thu, 3 Nov 2016 00:44:16 +0000 (00:44 +0000)]
net/http: update bundled http2 to fix test flake

Updates http2 to x/net/http2 git rev 569280fa for:

   http2: fix over-aggressive ignoring of frames while in "go away" mode
   https://golang.org/cl/32583

Fixes #17733

Change-Id: I4008d2e14ce89782ce7e18b441b1181f98623b9d
Reviewed-on: https://go-review.googlesource.com/32584
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agogo/types: set up correct type with NewAlias
Robert Griesemer [Wed, 2 Nov 2016 21:54:46 +0000 (14:54 -0700)]
go/types: set up correct type with NewAlias

Change-Id: I4b035b3539c98e5b1442d1009d457cbc199b42ee
Reviewed-on: https://go-review.googlesource.com/32637
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/vet: add test case for ppc64{,le}
Michael Munday [Wed, 2 Nov 2016 17:43:57 +0000 (13:43 -0400)]
cmd/vet: add test case for ppc64{,le}

Adapted from the mips64 test case.

Fixes #17745.

Change-Id: I46f0900028adb936dcab2cdc701ea11d0a3cb95e
Reviewed-on: https://go-review.googlesource.com/32611
Run-TryBot: Michael Munday <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Rob Pike <r@golang.org>
8 years agocmd/compile: compute faulting args before writing args to stack
Keith Randall [Tue, 1 Nov 2016 22:28:10 +0000 (15:28 -0700)]
cmd/compile: compute faulting args before writing args to stack

when compiling f(a, b, c), we do something like:
  *(SP+0) = eval(a)
  *(SP+8) = eval(b)
  *(SP+16) = eval(c)
  call f

If one of those evaluations is later determined to unconditionally panic
(say eval(b) in this example), then the call is deadcode eliminated. But
any previous argument write (*(SP+0)=... here) is still around. Becuase
we only compute the size of the outarg area for calls which are still
around at the end of optimization, the space needed for *(SP+0)=v is not
accounted for and thus the outarg area may be too small.

The fix is to make sure that we evaluate any potentially panicing
operation before we write any of the args to the stack. It turns out
that fix is pretty easy, as we already have such a mechanism available
for function args. We just need to extend it to possibly panicing args
as well.

The resulting code (if b and c can panic, but a can't) is:
  tmpb = eval(b)
  *(SP+16) = eval(c)
  *(SP+0) = eval(a)
  *(SP+8) = tmpb
  call f

This change tickled a bug in how we find the arguments for intrinsic
calls, so that latent bug is fixed up as well.

Update #16760.

Change-Id: I0bf5edf370220f82bc036cf2085ecc24f356d166
Reviewed-on: https://go-review.googlesource.com/32551
Reviewed-by: Cherry Zhang <cherryyz@google.com>
8 years agocmd/compile: do more type conversion inline
Keith Randall [Fri, 28 Oct 2016 18:37:45 +0000 (11:37 -0700)]
cmd/compile: do more type conversion inline

The code to do the conversion is smaller than the
call to the runtime.
The 1-result asserts need to call panic if they fail, but that
code is out of line.

The only conversions left in the runtime are those which
might allocate and those which might need to generate an itab.

Given the following types:
  type E interface{}
  type I interface { foo() }
  type I2 iterface { foo(); bar() }
  type Big [10]int
  func (b Big) foo() { ... }

This CL inlines the following conversions:

was assertE2T
  var e E = ...
  b := i.(Big)
was assertE2T2
  var e E = ...
  b, ok := i.(Big)
was assertI2T
  var i I = ...
  b := i.(Big)
was assertI2T2
  var i I = ...
  b, ok := i.(Big)
was assertI2E
  var i I = ...
  e := i.(E)
was assertI2E2
  var i I = ...
  e, ok := i.(E)

These are the remaining runtime calls:

convT2E:
  var b Big = ...
  var e E = b
convT2I:
  var b Big = ...
  var i I = b
convI2I:
  var i2 I2 = ...
  var i I = i2
assertE2I:
  var e E = ...
  i := e.(I)
assertE2I2:
  var e E = ...
  i, ok := e.(I)
assertI2I:
  var i I = ...
  i2 := i.(I2)
assertI2I2:
  var i I = ...
  i2, ok := i.(I2)

Fixes #17405
Fixes #8422

Change-Id: Ida2367bf8ce3cd2c6bb599a1814f1d275afabe21
Reviewed-on: https://go-review.googlesource.com/32313
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: David Chase <drchase@google.com>
8 years agocmd/compile: On a runtime.KeepAlive call, keep whole variable alive
Keith Randall [Tue, 1 Nov 2016 04:18:00 +0000 (21:18 -0700)]
cmd/compile: On a runtime.KeepAlive call, keep whole variable alive

We generate an OpKeepAlive for the idata portion of the interface
for a runtime.KeepAlive call.  But given such an op, we need to keep
the entire containing variable alive, not just the range that was
passed to the OpKeepAlive operation.

Fixes #17710

Change-Id: I90de66ec8065e22fb09bcf9722999ddda289ae6e
Reviewed-on: https://go-review.googlesource.com/32477
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
8 years agonet/http: update bundled http2
Brad Fitzpatrick [Wed, 2 Nov 2016 19:48:35 +0000 (19:48 +0000)]
net/http: update bundled http2

Update bundled x/net/http2 to x/net git rev 6c4ac8bd for:

   http2: fix Transport race sending RST_STREAM while reading DATA on cancels
   https://golang.org/cl/32571

   http2: remove h2-14 ALPN proto
   https://golang.org/cl/32576

Fixes #16974

Change-Id: I6ff8493a13d2641499fedf33e8005004735352ff
Reviewed-on: https://go-review.googlesource.com/32578
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoarchive/tar: disable prefix field in Writer
Joe Tsai [Thu, 27 Oct 2016 23:23:53 +0000 (16:23 -0700)]
archive/tar: disable prefix field in Writer

The proper fix for the Writer is too involved to be done in time
for Go 1.8. Instead, we do a localized fix that simply disables the
prefix encoding logic. While this will prevent some legitimate uses
of prefix, it will ensure that we don't keep outputting invalid
GNU format files that have the prefix field populated.

For headers with long filenames that could have used the prefix field,
they will be promoted to use the PAX format, which ensures that we
will still be able to encode all headers that we were able to do before.

Updates #12594
Fixes #17630
Fixes #9683

Change-Id: Ia97b524ac69865390e2ae8bb0dfb664d40a05add
Reviewed-on: https://go-review.googlesource.com/32234
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/vet: fix go vet on s390x assembly
Michael Munday [Wed, 2 Nov 2016 17:11:56 +0000 (13:11 -0400)]
cmd/vet: fix go vet on s390x assembly

Test adapted from the mips64 test.

Fixes #15454.

Change-Id: If890c2d18a4a03a08faaa2e674edd7223af60290
Reviewed-on: https://go-review.googlesource.com/22472
Run-TryBot: Michael Munday <munday@ca.ibm.com>
Reviewed-by: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: avoid double export of aliased objects
Matthew Dempsky [Wed, 2 Nov 2016 16:47:43 +0000 (09:47 -0700)]
cmd/compile: avoid double export of aliased objects

Instead of writing out the original object for each alias, ensure we
export the original object before any aliases. This allows the aliases
to simply refer back to the original object by qualified name.

Fixes #17636.

Change-Id: If80fa8c66b8fee8344a00b55d25a8aef22abd859
Reviewed-on: https://go-review.googlesource.com/32575
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agonet: fix Dial(":80") on Windows
Russ Cox [Thu, 27 Oct 2016 01:07:52 +0000 (21:07 -0400)]
net: fix Dial(":80") on Windows

Windows sockets allow bind to 0.0.0.0:80 but not connect to it.
To make Listen(":80") / Dial(":80") work as documented on Windows,
connect to 127.0.0.1 or ::1 (depending on network) in place of 0.0.0.0.

Fixes #6290.

Change-Id: Ia27537067276871648546678fbe0f1b8478329fe
Reviewed-on: https://go-review.googlesource.com/32101
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
8 years agotesting: introduce testing/internal/testdeps for holding testmain dependencies
Russ Cox [Mon, 31 Oct 2016 23:27:26 +0000 (19:27 -0400)]
testing: introduce testing/internal/testdeps for holding testmain dependencies

Currently, we don't have package testing to import package regexp directly,
because then regexp can't have internal tests (or at least they become more
difficult to write), for fear of an import cycle. The solution we've been using
is for the generated test main package (pseudo-import path "testmain", package main)
to import regexp and pass in a matchString function for use by testing when
implementing the -run flags. This lets testing use regexp but without depending
on regexp and creating unnecessary cycles.

We want to add a few dependencies to runtime/pprof, notably regexp
but also compress/gzip, without causing those packages to have to work
hard to write internal tests.

Restructure the (dare I say it) dependency injection of regexp.MatchString
to be more general, and use it for the runtime/pprof functionality in addition
to the regexp functionality. The new package testing/internal/testdeps is
the root for the testing dependencies handled this way.

Code using testing.MainStart will have to change from passing in a matchString
implementation to passing in testdeps.TestDeps{}. Users of 'go test' don't do this,
but other build systems that have recreated 'go test' (for example, Blaze/Bazel)
may need to be updated. The new testdeps setup should make future updates
unnecessary, but even so we keep the comment about MainStart not being
subject to Go 1 compatibility.

Change-Id: Iec821d2afde10c79f95f3b23de5e71b219f47b92
Reviewed-on: https://go-review.googlesource.com/32455
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agoapi: sort except.txt
Russ Cox [Mon, 31 Oct 2016 18:16:53 +0000 (14:16 -0400)]
api: sort except.txt

Make it easier to find lines and update the file.

Change-Id: I9db78ffd7316fbc17c5488e178e23777756d8f47
Reviewed-on: https://go-review.googlesource.com/32454
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/pprof: move cmd/internal/pprof back to cmd/pprof/internal
Russ Cox [Mon, 31 Oct 2016 16:09:03 +0000 (12:09 -0400)]
cmd/pprof: move cmd/internal/pprof back to cmd/pprof/internal

CL 21870 moved the entire cmd/pprof/internal directory to cmd/internal/pprof
for use by cmd/trace, but really cmd/trace only needed cmd/pprof/internal/profile,
which became cmd/internal/pprof/profile, and then internal/pprof/profile.

Move the rest back under cmd/pprof so that it is clear that no other code
is reaching into the guts of cmd/pprof. Just like functions should not be
exported unless necessary, internals should not be made visible to more
code than necessary.

Raúl Silvera noted after the commit of CL 21870 that only the profile package
should have moved, but there was no followup fix (until now).

Change-Id: I603f4dcb0616df1e5d5eb7372e6fccda57e05079
Reviewed-on: https://go-review.googlesource.com/32453
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agointernal/pprof/profile: new package, moved from cmd/internal/pprof/profile
Russ Cox [Mon, 31 Oct 2016 16:07:13 +0000 (12:07 -0400)]
internal/pprof/profile: new package, moved from cmd/internal/pprof/profile

This allows both the runtime and the cmd/pprof code to use the package,
just like we do for internal/trace.

Change-Id: I7606977284e1def36c9647354c58e7c1e93dba6b
Reviewed-on: https://go-review.googlesource.com/32452
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agobytes, strings: update s390x code to match amd64 changes
Michael Munday [Wed, 2 Nov 2016 15:41:40 +0000 (11:41 -0400)]
bytes, strings: update s390x code to match amd64 changes

Updates the s390x-specific files in these packages with the changes
to the amd64-specific files made during the review of CL 31690. I'd
like to keep these files in sync unless there is a reason to
diverge.

Change-Id: Id83e5ce11a45f877bdcc991d02b14416d1a2d8d2
Reviewed-on: https://go-review.googlesource.com/32574
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agogo1.8.txt: Add CL 25345.
Jan Mercl [Wed, 2 Nov 2016 10:23:05 +0000 (11:23 +0100)]
go1.8.txt: Add CL 25345.

Change-Id: I436528a4f81634448a60b1183d1b65a3bf4f48c1
Reviewed-on: https://go-review.googlesource.com/32590
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
8 years agoruntime: address comments from CL 32357
David Crawshaw [Wed, 2 Nov 2016 13:10:29 +0000 (09:10 -0400)]
runtime: address comments from CL 32357

Change-Id: I174d7307bfdd8ec57bb4266dab8569fd2234abb4
Reviewed-on: https://go-review.googlesource.com/32610
Reviewed-by: Austin Clements <austin@google.com>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/go: use cgo -srcdir when using SWIG
Ian Lance Taylor [Tue, 1 Nov 2016 19:06:22 +0000 (12:06 -0700)]
cmd/go: use cgo -srcdir when using SWIG

SWIG generates cgo input files in the work directory. When those files
are passed directly to cgo, cgo generates long file names that include
the object directory (with slashes replaced by underscores). Instead,
use cgo's new -srcdir option to give it short file names.

When using both SWIG and cgo, copy the cgo files into the object
directory first.

Use a shorter object file name when compiling the C file generated by
SWIG.

Fixes #17070.

Change-Id: Ic558603f1731636d9999f3130ad0224b24bd7dcb
Reviewed-on: https://go-review.googlesource.com/32485
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agonet: implement Buffers on windows
Alex Brainman [Sat, 29 Oct 2016 07:37:49 +0000 (18:37 +1100)]
net: implement Buffers on windows

Updates #13451

Change-Id: I2c3c66d9532c16e616c476e2afe31b3ddc0a8d79
Reviewed-on: https://go-review.googlesource.com/32371
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>

8 years agodoc: update go1.8.txt
Brad Fitzpatrick [Tue, 1 Nov 2016 23:44:18 +0000 (16:44 -0700)]
doc: update go1.8.txt

Automated update after manual classification using x/build/cmd/writenotes.

Change-Id: Ie92f501d301c1e2245954439da197812c09c1684
Reviewed-on: https://go-review.googlesource.com/32570
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/cgo: only record typedef name for pointer to struct
Ian Lance Taylor [Tue, 1 Nov 2016 21:13:34 +0000 (14:13 -0700)]
cmd/cgo: only record typedef name for pointer to struct

In a function argument, we handle a typedef for a pointer specially,
using the pointer type rather than the typedef, to permit the Go calls
to match the laxer type conversions permitted in C. We record the
typedef so that we use that type in the C code, in case it has a special
attribute. However, using the typedef is wrong when using a pointer to a
basic type, because the C code may sometimes use the typedef and
sometimes not, and using the typedef in all cases will cause incorrect
type errors on the Go side. Fortunately we only really need to use the
typedef when pointing to a struct/union/class, and in such a case
confusion is unlikely.

Fixes #17723.

Change-Id: Id2eaeb156faeaf2e8eb9cf0b8f95b44caf8cfbd2
Reviewed-on: https://go-review.googlesource.com/32536
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agocmd/compile: get rid of unused Name.Method field
Matthew Dempsky [Tue, 1 Nov 2016 22:33:40 +0000 (15:33 -0700)]
cmd/compile: get rid of unused Name.Method field

It's never set anywhere, and even if it was, it would just Fatalf.

Change-Id: I84ade6d2068c623a8c85f84d8cdce38984996ddd
Reviewed-on: https://go-review.googlesource.com/32489
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agogo/importer: handle multiple imports of the same object
Robert Griesemer [Tue, 1 Nov 2016 21:46:59 +0000 (14:46 -0700)]
go/importer: handle multiple imports of the same object

Before aliases, and because we chose a simple export format for them,
a package may now export the same object more than once if there are
multiple exported aliases referring to that object. The go/importer
made the assumption this couldn't happen. Adjust it.

Fixes #17726.

Change-Id: Ibb9fc669a8748200b45ad78934d7453e5a5aad82
Reviewed-on: https://go-review.googlesource.com/32538
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Robert Griesemer <gri@golang.org>

8 years agocmd/compile/internal/syntax: don't depend on hardwired $GOROOT name
Robert Griesemer [Tue, 1 Nov 2016 22:15:11 +0000 (15:15 -0700)]
cmd/compile/internal/syntax: don't depend on hardwired $GOROOT name

Fixes #17697.

Change-Id: I3c47e139b09bde81566e29a1ac0ec8c58d55a34a
Reviewed-on: https://go-review.googlesource.com/32539
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/go: remove _cgo_flags from gccgo archive built using SWIG
Ian Lance Taylor [Tue, 1 Nov 2016 20:04:56 +0000 (13:04 -0700)]
cmd/go: remove _cgo_flags from gccgo archive built using SWIG

Since SWIG uses cgo, when using SWIG with gccgo, the go tool will add a
_cgo_flags file to the package archive, just as it does with cgo. We
need to remove that file from the archive passed to the linker, just as
we do with cgo.

Change-Id: I5ef4fea92eec419f870fbf6f678691d15901ee6c
Reviewed-on: https://go-review.googlesource.com/32535
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
8 years agocmd/compile: mark go.itab.* symbols local earlier
Michael Hudson-Doyle [Fri, 28 Oct 2016 02:08:28 +0000 (15:08 +1300)]
cmd/compile: mark go.itab.* symbols local earlier

This feels a bit like a layering violation, but as the bug report shows
it is sometimes necessary.

Fixes #17642

Change-Id: I4ba060bb1ce73a527ce276e5a769c44692b50016
Reviewed-on: https://go-review.googlesource.com/32236
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agocmd/link: support plugins with no exported symbols
David Crawshaw [Mon, 31 Oct 2016 03:53:09 +0000 (23:53 -0400)]
cmd/link: support plugins with no exported symbols

A plugin with no exported symbols is still potentially very useful.
Its init functions are called on load, and it so it can have visible
side effects.

Fixes #17681

Change-Id: Icdca31f48e5ab13c99020a2ef724f3de47dcd74b
Reviewed-on: https://go-review.googlesource.com/32437
Run-TryBot: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agogo/types: handle imported aliases
Robert Griesemer [Tue, 1 Nov 2016 17:38:24 +0000 (10:38 -0700)]
go/types: handle imported aliases

When we lookup a qualified identifier, we need to unpack
an alias. Do this in all places, not just one. Duh!

Fixes #17716.
For #17592.

Change-Id: I58d57b17cc635d0408b370f109c719c16757fd8e
Reviewed-on: https://go-review.googlesource.com/32534
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agoruntime: resolve type offsets using source module
David Crawshaw [Tue, 1 Nov 2016 19:28:55 +0000 (15:28 -0400)]
runtime: resolve type offsets using source module

The runtime.typeEquals function is used during typelinksinit to
determine the canonical set of *_type values to use throughout the
runtime. As such, it is run against non-canonical *_type values, that
is, types from modules that are duplicates of a type from another
module that was loaded earlier in the program life.

These non-canonical *_type values sometimes contain pointers. These
pointers are pointing to position-independent data, and so they are set
by ld.so using dynamic relocations when the module is loaded. As such,
the pointer can point to the equivalent memory from a previous module.

This means if typesEqual follows a pointer inside a *_type, it can end
up at a piece of memory from another module. If it reads a typeOff or
nameOff from that memory and attempts to resolve it against the
non-canonical *_type from the later module, it will end up with a
reference to junk memory.

Instead, resolve against the pointer the offset was read from, so the
data is valid.

Fixes #17709.
Should no longer matter after #17724 is resolved in a later Go.

Change-Id: Ie88b151a3407d82ac030a97b5b6a19fc781901cb
Reviewed-on: https://go-review.googlesource.com/32513
Run-TryBot: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agocmd/compile/internal/syntax: avoid deadlock
Josh Bleecher Snyder [Tue, 1 Nov 2016 19:27:26 +0000 (12:27 -0700)]
cmd/compile/internal/syntax: avoid deadlock

When the err from ReadFile is non-nil, we call t.Fatal(err).
Switch t.Fatal to t.Error + return.
ensure that close(results) happens on that code path as well.

Updates #17697.

Change-Id: Ifaacf27a76c175446d642086ff32f4386428080d
Reviewed-on: https://go-review.googlesource.com/32486
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime: treat SIGSTOP on Solaris as we do on other systems
Ian Lance Taylor [Tue, 1 Nov 2016 17:24:06 +0000 (10:24 -0700)]
runtime: treat SIGSTOP on Solaris as we do on other systems

This makes no practical difference, as SIGSTOP can not be caught, but
may as well be consistent.

Change-Id: I3efbbf092388bb3f6dccc94cf703c5d94d35f6a1
Reviewed-on: https://go-review.googlesource.com/32533
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agotime: simplify: tell people to not use == with Time values
Ian Lance Taylor [Sun, 30 Oct 2016 15:56:19 +0000 (11:56 -0400)]
time: simplify: tell people to not use == with Time values

Change-Id: I49952f89b04f41109bb6591c6f025971d9880123
Reviewed-on: https://go-review.googlesource.com/32411
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: David Symonds <dsymonds@golang.org>
8 years agonet/http: make Transport reject URLs with bogus ports with non-digits
Brad Fitzpatrick [Tue, 1 Nov 2016 17:40:07 +0000 (17:40 +0000)]
net/http: make Transport reject URLs with bogus ports with non-digits

Fixes #14353

Change-Id: I9cb5a5192ecdae37c100969395ed6a1564b8d34e
Reviewed-on: https://go-review.googlesource.com/32482
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Martin Möhrmann <martisch@uos.de>
8 years agobytes,strings: use IndexByte more often in Index on AMD64
Ilya Tocar [Fri, 21 Oct 2016 20:23:48 +0000 (23:23 +0300)]
bytes,strings: use IndexByte more often in Index on AMD64

IndexByte+compare is faster than indexShortStr in good case, when
first byte is rare, but is more costly in bad cases.
Start with IndexByte and switch to indexShortStr if we encounter
false positives more often than once per 8 bytes.

Benchmark changes for package bytes:

IndexRune/4K-8                    416ns ± 0%       86ns ± 0%    -79.24%        (p=0.000 n=10+10)
IndexRune/4M-8                    413µs ± 0%      100µs ± 1%    -75.88%        (p=0.000 n=10+10)
IndexRune/64M-8                  6.73ms ± 0%     2.86ms ± 1%    -57.49%        (p=0.000 n=10+10)
Index/10-8                       8.45ns ± 0%     8.96ns ± 0%     +6.04%         (p=0.000 n=9+10)
Index/32-8                       9.64ns ± 0%     9.51ns ± 0%     -1.30%          (p=0.000 n=8+9)
Index/4K-8                       2.11µs ± 0%     2.12µs ± 0%     +0.26%        (p=0.000 n=10+10)
Index/4M-8                       3.60ms ± 5%     3.59ms ± 7%       ~            (p=0.497 n=9+10)
Index/64M-8                      57.1ms ± 3%     58.7ms ± 5%       ~            (p=0.113 n=9+10)
IndexEasy/10-8                   7.10ns ± 1%     7.71ns ± 1%     +8.60%        (p=0.000 n=10+10)
IndexEasy/32-8                   9.29ns ± 1%     9.22ns ± 0%     -0.75%         (p=0.000 n=9+10)
IndexEasy/4K-8                   1.06µs ± 0%     0.08µs ± 0%    -92.18%        (p=0.000 n=10+10)
IndexEasy/4M-8                   1.07ms ± 0%     0.10ms ± 1%    -90.74%         (p=0.000 n=9+10)
IndexEasy/64M-8                  17.3ms ± 0%      2.8ms ± 1%    -83.76%         (p=0.000 n=10+9)

IndexRune/4K-8                 9.84GB/s ± 0%  47.42GB/s ± 0%   +381.85%         (p=0.000 n=8+10)
IndexRune/4M-8                 10.1GB/s ± 0%   42.1GB/s ± 1%   +314.56%        (p=0.000 n=10+10)
IndexRune/64M-8                10.0GB/s ± 0%   23.4GB/s ± 1%   +135.25%        (p=0.000 n=10+10)
Index/10-8                     1.18GB/s ± 0%   1.12GB/s ± 0%     -5.67%         (p=0.000 n=10+9)
Index/32-8                     3.32GB/s ± 0%   3.36GB/s ± 0%     +1.27%         (p=0.000 n=10+9)
Index/4K-8                     1.94GB/s ± 0%   1.93GB/s ± 0%     -0.25%         (p=0.000 n=10+9)
Index/4M-8                     1.17GB/s ± 5%   1.17GB/s ± 7%       ~            (p=0.497 n=9+10)
Index/64M-8                    1.17GB/s ± 3%   1.15GB/s ± 6%       ~            (p=0.113 n=9+10)
IndexEasy/10-8                 1.41GB/s ± 1%   1.30GB/s ± 1%     -7.90%        (p=0.000 n=10+10)
IndexEasy/32-8                 3.45GB/s ± 1%   3.47GB/s ± 0%     +0.73%         (p=0.000 n=9+10)
IndexEasy/4K-8                 3.84GB/s ± 0%  49.16GB/s ± 0%  +1178.78%         (p=0.000 n=9+10)
IndexEasy/4M-8                 3.91GB/s ± 0%  42.19GB/s ± 1%   +980.37%         (p=0.000 n=9+10)
IndexEasy/64M-8                3.88GB/s ± 0%  23.91GB/s ± 1%   +515.76%         (p=0.000 n=10+9)

No significant changes in strings.

In regexp I see:

Match/Easy0/32-8                 536MB/s ± 1%   540MB/s ± 1%    +0.75%         (p=0.001 n=9+10)
Match/Easy0/1K-8                1.62GB/s ± 0%  4.42GB/s ± 1%  +172.48%        (p=0.000 n=10+10)
Match/Easy0/32K-8               1.87GB/s ± 0%  9.07GB/s ± 1%  +384.24%         (p=0.000 n=7+10)
Match/Easy0/1M-8                1.90GB/s ± 0%  4.83GB/s ± 0%  +154.56%         (p=0.000 n=8+10)
Match/Easy0/32M-8               1.90GB/s ± 0%  4.53GB/s ± 0%  +138.62%         (p=0.000 n=7+10)

Compared to in 1.7:

Match/Easy0/32-8                  59.5ns ± 0%    59.2ns ± 1%   -0.45%         (p=0.008 n=9+10)
Match/Easy0/1K-8                   226ns ± 1%     231ns ± 1%   +2.30%        (p=0.000 n=10+10)
Match/Easy0/32K-8                 3.73µs ± 2%    3.61µs ± 1%   -3.12%        (p=0.000 n=10+10)
Match/Easy0/1M-8                   206µs ± 1%     217µs ± 0%   +5.34%        (p=0.000 n=10+10)
Match/Easy0/32M-8                 7.03ms ± 1%    7.40ms ± 0%   +5.23%        (p=0.000 n=10+10)

Fixes #17456

Change-Id: I38b2fabcaed7119cc4bf37007ba7bfe7504c8f9f
Reviewed-on: https://go-review.googlesource.com/31690
Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agostrings: ignore allocation test in cover mode
Brad Fitzpatrick [Tue, 1 Nov 2016 18:13:54 +0000 (18:13 +0000)]
strings: ignore allocation test in cover mode

Fixes #17699

Change-Id: I7ea29a3fc2ca13d9d7e3044cbb8ea22e3435d423
Reviewed-on: https://go-review.googlesource.com/32484
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
8 years agotesting: add a method testing.CoverMode
Rob Pike [Tue, 1 Nov 2016 18:01:39 +0000 (11:01 -0700)]
testing: add a method testing.CoverMode

This makes it possible to avoid tests where coverage affects the test
results by skipping them (or otherwise adjusting them) when coverage
is enabled.

Update #17699

Change-Id: Ifcc36cfcd88ebd677890e82ba80ee3d696ed3d7c
Reviewed-on: https://go-review.googlesource.com/32483
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agonet/http: add Transport.ProxyConnectHeader to control headers to proxies
Brad Fitzpatrick [Tue, 1 Nov 2016 17:12:48 +0000 (17:12 +0000)]
net/http: add Transport.ProxyConnectHeader to control headers to proxies

Fixes #13290

Change-Id: I0f7e7683d86db501cbedb6a0b7349ceb0769701c
Reviewed-on: https://go-review.googlesource.com/32481
Reviewed-by: Martin Möhrmann <martisch@uos.de>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agoruntime: align stack pointer in sigfwd
Bryan C. Mills [Thu, 27 Oct 2016 21:36:39 +0000 (17:36 -0400)]
runtime: align stack pointer in sigfwd

sigfwd calls an arbitrary C signal handler function.  The System V ABI
for x86_64 (and the most recent revision of the ABI for i386) requires
the stack to be 16-byte aligned.

Fixes: #17641
Change-Id: I77f53d4a8c29c1b0fe8cfbcc8d5381c4e6f75a6b
Reviewed-on: https://go-review.googlesource.com/32107
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agonet/http, net/http/httptest: make http2's TrailerPrefix work for http1
Brad Fitzpatrick [Tue, 1 Nov 2016 15:24:11 +0000 (15:24 +0000)]
net/http, net/http/httptest: make http2's TrailerPrefix work for http1

Go's http1 implementation originally had a mechanism to send HTTP
trailers based on pre-declaring the trailer keys whose values you'd
later let after the header was written.

http2 copied the same mechanism, but it was found to be unsufficient
for gRPC's wire protocol. A second trailer mechanism was added later
(but only to http2) for handlers that want to send a trailer without
knowing in advance they'd need to.

Copy the same mechanism back to http1 and document it.

Fixes #15754

Change-Id: I8c40d55e28b0e5b7087d3d1a904a392c56ee1f9b
Reviewed-on: https://go-review.googlesource.com/32479
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/vendor/golang.org/x/arch/ppc64/ppc64asm: skip TestObjdumpPowerManual if not ppc64x
Lynn Boger [Tue, 1 Nov 2016 15:43:34 +0000 (10:43 -0500)]
cmd/vendor/golang.org/x/arch/ppc64/ppc64asm: skip TestObjdumpPowerManual if not ppc64x

Skip TestObjdumpPowerManual if the host system is not ppc64 or ppc64le.
This test depends on using the host objdump and comparing output, which
does not work as expected if the test is run on another host.

Orignates from golang.org/x/arch/ppc64/ppc64asm commit 8e2d4898.

Fixes #17698

Change-Id: I956b0fb78c5ec33641db752d46a755008403d269
Reviewed-on: https://go-review.googlesource.com/32531
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: add debug print to identify unexpected objects
Robert Griesemer [Tue, 1 Nov 2016 16:39:01 +0000 (09:39 -0700)]
cmd/compile: add debug print to identify unexpected objects

This should never be called but should help identify causes of
unexpected panics such as in issue #17716.

Change-Id: Id6ad0cef1088a41bfcc69110a93484a7e39c4128
Reviewed-on: https://go-review.googlesource.com/32480
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agoplugin: do not leak cRelName on error path
David Crawshaw [Mon, 31 Oct 2016 12:59:05 +0000 (08:59 -0400)]
plugin: do not leak cRelName on error path

Fixes #17683

Change-Id: I46f45c63796b58e8a8f14e37592231cbe7cd6934
Reviewed-on: https://go-review.googlesource.com/32438
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agoruntime: access modules via a slice
David Crawshaw [Mon, 31 Oct 2016 00:30:38 +0000 (20:30 -0400)]
runtime: access modules via a slice

The introduction of -buildmode=plugin means modules can be added to a
Go program while it is running. This means there exists some time
while the program is running with the module is on the moduledata
linked list, but it has not been initialized to the satisfaction of
other parts of the runtime. Notably, the GC.

This CL adds a new way of access modules, an activeModules function.
It returns a slice of modules that is built in the background and
atomically swapped in. The parts of the runtime that need to wait on
module initialization can use this slice instead of the linked list.

Fixes #17455

Change-Id: I04790fd07e40c7295beb47cea202eb439206d33d
Reviewed-on: https://go-review.googlesource.com/32357
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: improve s390x rules for folding ADDconst into loads/stores
Michael Munday [Fri, 7 Oct 2016 16:16:26 +0000 (12:16 -0400)]
cmd/compile: improve s390x rules for folding ADDconst into loads/stores

There is no benefit to folding ADDconsts unless the resultant immediate
will fit into a 20-bit signed integer, so limit these rules accordingly.

Also the signed load operations were missing, so I've added them, and
I've also removed some MOVDaddr rules that were dead code (MOVDaddrs
are rematerializable on s390x which means they can't take inputs other
than SP or SB).

Change-Id: Iebeba78da37d3d71d32d4b7f49fe4ea9095d40ec
Reviewed-on: https://go-review.googlesource.com/30616
Run-TryBot: Michael Munday <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: David Chase <drchase@google.com>
8 years agoruntime: improve atoi implementation
Martin Möhrmann [Sat, 29 Oct 2016 23:54:19 +0000 (01:54 +0200)]
runtime: improve atoi implementation

- Adds overflow checks
- Adds parsing of negative integers
- Adds boolean return value to signal parsing errors
- Adds atoi32 for parsing of integers that fit in an int32
- Adds tests

Handling of errors to provide error messages
at the call sites is left to future CLs.

Updates #17718

Change-Id: I3cacd0ab1230b9efc5404c68edae7304d39bcbc0
Reviewed-on: https://go-review.googlesource.com/32390
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime: get ppc64x ISA level and hardware capabilities from HWCAP/HWCAP2
Carlos Eduardo Seo [Fri, 28 Oct 2016 16:42:42 +0000 (14:42 -0200)]
runtime: get ppc64x ISA level and hardware capabilities from HWCAP/HWCAP2

This implements a check that can be done at runtime for the ISA level and
hardware capability. It follows the same implementation as in s390x.

These checks will be important as we enable new instructions and write go
asm implementations using those.

Updates #15403
Fixes #16643

Change-Id: Idfee374a3ffd7cf13a7d8cf0a6c83d247d3bee16
Reviewed-on: https://go-review.googlesource.com/32330
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agobytes, strings: optimize multi-byte index operations on s390x
Michael Munday [Sat, 1 Oct 2016 16:44:33 +0000 (12:44 -0400)]
bytes, strings: optimize multi-byte index operations on s390x

Use vector instructions to speed up indexing operations for short
strings (64 bytes or less).

bytes_s390x.go and strings_s390x.go are based on their amd64
equivalents in CL 31690.

bytes package:

name                   old time/op    new time/op    delta
Index/10                 40.3ns ± 7%    11.3ns ± 4%    -72.06%  (p=0.000 n=10+10)
Index/32                  196ns ± 1%      27ns ± 2%    -86.25%  (p=0.000 n=10+10)
Index/4K                 28.9µs ± 1%     1.5µs ± 2%    -94.94%    (p=0.000 n=9+9)
Index/4M                 30.1ms ± 2%     1.5ms ± 3%    -94.94%  (p=0.000 n=10+10)
Index/64M                 549ms ±13%      28ms ± 3%    -94.87%   (p=0.000 n=10+9)
IndexEasy/10             18.8ns ±11%    11.5ns ± 2%    -38.81%  (p=0.000 n=10+10)
IndexEasy/32             23.6ns ± 6%    28.1ns ± 3%    +19.29%  (p=0.000 n=10+10)
IndexEasy/4K              251ns ± 5%     223ns ± 8%    -11.04%  (p=0.000 n=10+10)
IndexEasy/4M              318µs ± 9%     266µs ± 8%    -16.42%  (p=0.000 n=10+10)
IndexEasy/64M            14.7ms ±16%    13.2ms ±11%    -10.22%  (p=0.001 n=10+10)

strings package:

name                   old time/op  new time/op  delta
IndexRune              88.1ns ±16%  28.9ns ± 4%  -67.20%  (p=0.000 n=10+10)
IndexRuneLongString     456ns ± 7%    34ns ± 3%  -92.50%  (p=0.000 n=10+10)
IndexRuneFastPath      12.9ns ±14%  11.1ns ± 6%  -13.84%  (p=0.000 n=10+10)
Index                  13.0ns ± 7%  11.3ns ± 4%  -13.31%  (p=0.000 n=10+10)
IndexHard1             3.38ms ± 9%  0.07ms ± 1%  -97.79%  (p=0.000 n=10+10)
IndexHard2             3.58ms ± 7%  0.37ms ± 2%  -89.78%  (p=0.000 n=10+10)
IndexHard3             3.47ms ± 7%  0.75ms ± 1%  -78.52%  (p=0.000 n=10+10)
IndexHard4             3.56ms ± 6%  1.34ms ± 0%  -62.39%    (p=0.000 n=9+9)

Change-Id: If36c2afb8c02e80fcaa1cf5ec2abb0a2be08c7d1
Reviewed-on: https://go-review.googlesource.com/32447
Run-TryBot: Michael Munday <munday@ca.ibm.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agotesting: don't warn if -bench was passed
Daniel Martí [Thu, 27 Oct 2016 18:47:47 +0000 (19:47 +0100)]
testing: don't warn if -bench was passed

In a previous change, cmd/go was taught to show a "no tests ran" warning
if test did nothing. But it missed a case - if no tests nor examples ran
but any benchmarks were meant to be run, it would still produce the
warning. This meant that running only benchmarks, which is common, would
be confusing:

 $ go test -run='^$' -bench=.
testing: warning: no tests to run
BenchmarkFoo-4            300000              5056 ns/op
[...]

I believe this was because of a copy-paste error in the tests. This was
being tested, but on the wrong file which does contain a test that was
being run. Fix the path and fix the now failing test by never showing
the warning if -bench was given a non-empty string.

The rationale is that if -bench was given but there was no output, it's
obvious that nothing happened as benchmarks always produce output even
without -v. So showing a warning in those cases is redundant.

To make future typos less likely, make sure that no tests are being run
in the cases where we only want to run benchmarks.

Fixes #17603.

Change-Id: I4c626caf39f72260c6a9761c06446663f465f947
Reviewed-on: https://go-review.googlesource.com/32157
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agonet/http/httputil: add ModifyResponse to reverseProxy
Emmanuel Odeke [Fri, 28 Oct 2016 15:11:39 +0000 (08:11 -0700)]
net/http/httputil: add ModifyResponse to reverseProxy

Adds ModifyResponse, an optional func to ReverseProxy
that modifies a response in the backend, right before
the headers of the response are written to the internal
response writer.
If ModifyResponse returns an error, the proxy returns
a StatusBadGateway error.

Fixes #14237.

Change-Id: I8e03139e34dea0084512ccbd8cc49e941bf9fb5d
Reviewed-on: https://go-review.googlesource.com/32356
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agoencoding/json: marshal with null when RawMessage is nil
Joe Tsai [Tue, 1 Nov 2016 00:34:42 +0000 (17:34 -0700)]
encoding/json: marshal with null when RawMessage is nil

This CL expands upon a change made in (http://golang.org/cl/21811)
to ensure that a nil RawMessage gets serialized as "null" instead of
being a nil slice.

The added check only triggers when the RawMessage is nil. We do not
handle the case when the RawMessage is non-nil, but empty.

Fixes #17704
Updates #14493

Change-Id: I0fbebcdd81f7466c5b78c94953afc897f162ceb4
Reviewed-on: https://go-review.googlesource.com/32472
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile/internal/syntax: don't panic if no error handler is provided
Robert Griesemer [Mon, 31 Oct 2016 23:58:15 +0000 (16:58 -0700)]
cmd/compile/internal/syntax: don't panic if no error handler is provided

If no error handler is provided, terminate parsing with first error
and report that error.

Fixes #17697.

Change-Id: I9070faf7239bd53725de141507912b92ded3474b
Reviewed-on: https://go-review.googlesource.com/32456
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agonet/http: add Server.Close & Server.Shutdown for forced & graceful shutdown
Brad Fitzpatrick [Sun, 30 Oct 2016 03:28:05 +0000 (03:28 +0000)]
net/http: add Server.Close & Server.Shutdown for forced & graceful shutdown

Also updates x/net/http2 to git rev 541150 for:

   http2: add support for graceful shutdown of Server
   https://golang.org/cl/32412

   http2: make http2.Server access http1's Server via an interface check
   https://golang.org/cl/32417

Fixes #4674
Fixes #9478

Change-Id: I8021a18dee0ef2fe3946ac1776d2b10d3d429052
Reviewed-on: https://go-review.googlesource.com/32329
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: move parser.go remnants into noder.go
Matthew Dempsky [Mon, 31 Oct 2016 23:42:30 +0000 (16:42 -0700)]
cmd/compile: move parser.go remnants into noder.go

Change-Id: I54f8788a4703283b9aa3904e2e610097ac3e3586
Reviewed-on: https://go-review.googlesource.com/32471
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
8 years agoruntime: perform write barriers on direct channel receive
Austin Clements [Mon, 31 Oct 2016 21:37:05 +0000 (17:37 -0400)]
runtime: perform write barriers on direct channel receive

Currently we have write barriers for direct channel sends, where the
receiver is blocked and the sender is writing directly to the
receiver's stack; but not for direct channel receives, where the
sender is blocked and the receiver is reading directly from the
sender's stack.

This was okay with the old write barrier because either 1) the
receiver would write the received pointer into the heap (causing it to
be shaded), 2) the pointer would still be on the receiver's stack at
mark termination and we would rescan it, or 3) the receiver dropped
the pointer so it wasn't necessarily reachable anyway.

This is not okay with the write barrier because it lets a grey stack
send a white pointer to a black stack and then remove it from its own
stack. If the grey stack was the sole grey-protector of this pointer,
this hides the object from the garbage collector.

Fix this by making direct receives perform a stack-to-stack write
barrier just like direct sends do.

Fixes #17694.

Change-Id: I1a4cb904e4138d2ac22f96a3e986635534a5ae41
Reviewed-on: https://go-review.googlesource.com/32450
Reviewed-by: Rick Hudson <rlh@golang.org>
8 years agocmd/compile: avoid nil-ing out a node's Type in typecheckcomplit() on error
Dhananjay Nakrani [Sat, 29 Oct 2016 19:10:21 +0000 (12:10 -0700)]
cmd/compile: avoid nil-ing out a node's Type in typecheckcomplit() on error

typecheckcomplit nils out node's type, upon finding new errors.
This hides new errors in children's node as well as the type info
of current node. This change fixes that.

Fixes #17645.

Change-Id: Ib473291f31c7e8fa0307cb1d494e0c112ddd3583
Reviewed-on: https://go-review.googlesource.com/32324
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agoruntime: make assists perform root jobs
Austin Clements [Sun, 30 Oct 2016 21:59:06 +0000 (17:59 -0400)]
runtime: make assists perform root jobs

Currently, assists can only perform heap marking jobs. However, at the
beginning of GC, there are only root jobs and no heap marking jobs. As
a result, there's often a period at the beginning of a GC cycle where
no goroutine has accumulated assist credit, but at the same time it
can't get any credit because there are no heap marking jobs for it to
do yet. As a result, many goroutines often block on the assist queue
at the very beginning of the GC cycle.

This commit fixes this by allowing assists to perform root marking
jobs. The tricky part of this (and the reason we haven't done this
before) is that stack scanning jobs can lead to deadlocks if the
goroutines performing the stack scanning are themselves
non-preemptible, since two non-preemptible goroutines may try to scan
each other. To address this, we use the same insight d6625ca used to
simplify the mark worker stack scanning: as long as we're careful with
the stacks and only drain jobs while on the system stack, we can put
the goroutine into a preemptible state while we drain jobs. This means
an assist's user stack can be scanned while it continues to do work.

This reduces the rate of assist blocking in the x/benchmarks HTTP
benchmark by a factor of 3 and all remaining blocking happens towards
the *end* of the GC cycle, when there may genuinely not be enough work
to go around.

Ideally, assists would get credit for working on root jobs. Currently
they do not; however, this change prioritizes heap work over root jobs
in assists, so they're likely to mostly perform heap work. In contrast
with mark workers, for assists, the root jobs act only as a backstop
to create heap work when there isn't enough heap work.

Fixes #15361.

Change-Id: If6e169863e4ad75710b0c8dc00f6125b41e9a595
Reviewed-on: https://go-review.googlesource.com/32432
Reviewed-by: Rick Hudson <rlh@golang.org>
8 years agoruntime: lift systemstack part of gcAssistAlloc
Austin Clements [Sun, 30 Oct 2016 21:46:49 +0000 (17:46 -0400)]
runtime: lift systemstack part of gcAssistAlloc

This lifts the part of gcAssistAlloc that runs on the system stack to
its own function in preparation for letting assists perform root jobs
(notably stack scanning). This makes it easy to see that there are no
references to the user stack once we've entered gcAssistAlloc1, which
means it's safe to shrink the stack while in gcAssistAlloc1.

This does not yet make assists perform root jobs, so it's not actually
possible for the stack to shrink yet. That will happen in the next
commit.

The code in gcAssistAlloc1 is identical to the code that's currently
passed in a closure to systemstack with one exception. Currently, we
set the "completed" variable in the enclosing scope to indicate that
the assist completed the mark phase. This is exactly the sort of
cross-stack reference lifting this function is meant to prevent. We
replace this variable with setting gp.param to nil or non-nil to
indicate the completion status.

Updates #15361.

Change-Id: Iba7cfb758c781070a441aea86c0117b399a24dbd
Reviewed-on: https://go-review.googlesource.com/32431
TryBot-Result: Gobot Gobot <gobot@golang.org>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Rick Hudson <rlh@golang.org>
8 years agogo/types: basic Defs/Uses test for aliases
Robert Griesemer [Mon, 31 Oct 2016 21:38:12 +0000 (14:38 -0700)]
go/types: basic Defs/Uses test for aliases

Change-Id: I113ea712838511ee823375d9ea059089195414f5
Reviewed-on: https://go-review.googlesource.com/32449
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agodoc: replace code.google.com/p/sitesearch with its new destination
Jaana Burcu Dogan [Mon, 31 Oct 2016 18:38:22 +0000 (11:38 -0700)]
doc: replace code.google.com/p/sitesearch with its new destination

Fixes #16910.

Change-Id: I0e97e88bee0361cd3621cacd1d4b84e6e42af718
Reviewed-on: https://go-review.googlesource.com/32424
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agogo/types: implement missing String method for Alias object
Robert Griesemer [Mon, 31 Oct 2016 19:52:43 +0000 (12:52 -0700)]
go/types: implement missing String method for Alias object

Change-Id: Iba5cfa033483b843dbd3681ffad50b117cced4a7
Reviewed-on: https://go-review.googlesource.com/32448
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agocmd/compile: initialize Decldepth in all cases
Dhananjay Nakrani [Sun, 30 Oct 2016 19:47:53 +0000 (12:47 -0700)]
cmd/compile: initialize Decldepth in all cases

Previously, on encountering Func.Nname.Type == nil, typecheckfunc()
returned without initializing Decldepth for that func. This causes
typecheckclosure() to fatal. This change ensures that we initialize
Decldepth in all cases.

Fixes #17588.

Change-Id: I2e3c81ad52e8383395025388989e8dbf03438b68
Reviewed-on: https://go-review.googlesource.com/32415
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: make [0]T and [1]T SSAable types
Keith Randall [Mon, 31 Oct 2016 04:10:03 +0000 (21:10 -0700)]
cmd/compile: make [0]T and [1]T SSAable types

We used to have to keep on-stack copies of these types.
Now they can be registerized.

[0]T is kind of trivial but might as well handle it.

This change enables another change I'm working on to improve how x.(T)
expressions are handled (#17405).  This CL helps because now all
types that are direct interface types are registerizeable (e.g. [1]*byte).

No higher-degree arrays for now because non-constant indexes are hard.

Update #17405

Change-Id: I2399940965d17b3969ae66f6fe447a8cefdd6edd
Reviewed-on: https://go-review.googlesource.com/32416
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
8 years agocmd/compile: mark temps with new AutoTemp flag, and use it.
David Chase [Fri, 28 Oct 2016 17:33:57 +0000 (13:33 -0400)]
cmd/compile: mark temps with new AutoTemp flag, and use it.

This is an extension of
https://go-review.googlesource.com/c/31662/
to mark all the temporaries, not just the ssa-generated ones.

Before-and-after ls -l `go tool -n compile` shows a 3%
reduction in size (or rather, a prior 3% inflation for
failing to filter temps out properly.)

Replaced name-dependent "is it a temp?" tests with calls to
*Node.IsAutoTmp(), which depends on AutoTemp.  Also replace
calls to istemp(n) with n.IsAutoTmp(), to reduce duplication
and clean up function name space.  Generated temporaries
now come with a "." prefix to avoid (apparently harmless)
clashes with legal Go variable names.

Fixes #17644.
Fixes #17240.

Change-Id: If1417f29c79a7275d7303ddf859b51472890fd43
Reviewed-on: https://go-review.googlesource.com/32255
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agogo/types: don't expose types.Alias kind field - only used by go/types
Robert Griesemer [Mon, 31 Oct 2016 18:16:15 +0000 (11:16 -0700)]
go/types: don't expose types.Alias kind field - only used by go/types

Change-Id: I8a28a88a655d9929f8641f71573dc01dc53be00f
Reviewed-on: https://go-review.googlesource.com/32443
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agovendor/golang_org/text/unicode/norm: re-vendor
Josh Bleecher Snyder [Mon, 31 Oct 2016 18:43:40 +0000 (11:43 -0700)]
vendor/golang_org/text/unicode/norm: re-vendor

This picks up just a trivial fix,
making vet (and thus me) happy.

Change-Id: Ib82ae44c081ff1ec5c078196a6cd5e1a3505d03b
Reviewed-on: https://go-review.googlesource.com/32427
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/vet/all: update whitelists
Josh Bleecher Snyder [Mon, 31 Oct 2016 18:41:34 +0000 (11:41 -0700)]
cmd/vet/all: update whitelists

Change-Id: Ic66eb2939d83559610e62cbb181a8faa6193ecc4
Reviewed-on: https://go-review.googlesource.com/32426
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: remove unreachable code
Josh Bleecher Snyder [Mon, 31 Oct 2016 18:41:24 +0000 (11:41 -0700)]
cmd/compile: remove unreachable code

Makes vet happy.

Change-Id: I00de44a844afa57901b31991acf9e7ac834a9572
Reviewed-on: https://go-review.googlesource.com/32425
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agogo/importer: implement importing of exported aliases
Robert Griesemer [Fri, 28 Oct 2016 23:17:43 +0000 (16:17 -0700)]
go/importer: implement importing of exported aliases

Fixes #17592.

Change-Id: I914fa8c0729012990878b6e5c3e99b0f9b0e2be8
Reviewed-on: https://go-review.googlesource.com/32350
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agocmd/compile: remove legacy debug flags
Matthew Dempsky [Mon, 31 Oct 2016 19:01:32 +0000 (12:01 -0700)]
cmd/compile: remove legacy debug flags

-M, -P, and -R were for debugging backend passes that no longer
exists.

-g is used for debugging instructions generated with Gins, but the SSA
backend mostly generates instructions directly. The handful of
instructions still generated with Gins are pretty useless for
debugging.

-x was used to debug the old lexer, but now it only causes us to print
file names as they're parsed, and only if we manually hack the
compiler to enable tracing.

Change-Id: Ia58d4bc9c1312693466171a3fcefc1221e9a2381
Reviewed-on: https://go-review.googlesource.com/32428
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocrypto/sha256: improve performance for sha256.block on ppc64le
Mike Strosaker [Fri, 28 Oct 2016 23:50:16 +0000 (19:50 -0400)]
crypto/sha256: improve performance for sha256.block on ppc64le

Adds an assembly implementation of sha256.block for ppc64le to improve its
performance.  This implementation is largely based on the original amd64
implementation, which unrolls the 64 iterations of the inner loop.

Fixes #17652

benchmark               old ns/op     new ns/op     delta
BenchmarkHash8Bytes     1263          767           -39.27%
BenchmarkHash1K         14048         7766          -44.72%
BenchmarkHash8K         102245        55626         -45.60%

benchmark               old MB/s     new MB/s     speedup
BenchmarkHash8Bytes     6.33         10.43        1.65x
BenchmarkHash1K         72.89        131.85       1.81x
BenchmarkHash8K         80.12        147.27       1.84x

Change-Id: Ib4adf429423b20495580400be10bd7e171bcc70b
Reviewed-on: https://go-review.googlesource.com/32318
Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocrypto/sha512: improve performance for sha512.block on ppc64le
Mike Strosaker [Sat, 29 Oct 2016 06:36:41 +0000 (02:36 -0400)]
crypto/sha512: improve performance for sha512.block on ppc64le

Adds an assembly implementation of sha512.block for ppc64le to improve its
performance.  This implementation is largely based on the original amd64
implementation, unrolling the 80 iterations of the inner loop.

Fixes #17660

benchmark               old ns/op     new ns/op     delta
BenchmarkHash8Bytes     1715          1133          -33.94%
BenchmarkHash1K         10098         5513          -45.41%
BenchmarkHash8K         68004         35278         -48.12%

benchmark               old MB/s     new MB/s     speedup
BenchmarkHash8Bytes     4.66         7.06         1.52x
BenchmarkHash1K         101.40       185.72       1.83x
BenchmarkHash8K         120.46       232.21       1.93x

Change-Id: Ifd55a49a24cb159b3a09a8e928c3f37727aca103
Reviewed-on: https://go-review.googlesource.com/32320
Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agogo/build: add back deps for runtime/pprof/internal/gzip0
Michael Matloob [Mon, 31 Oct 2016 15:30:59 +0000 (15:30 +0000)]
go/build: add back deps for runtime/pprof/internal/gzip0

These were accidentally removed by a rollback cl: golang.org/cl/32441

Change-Id: I0cfa8b3397be324dabfb8f33b6548a03c10571eb
Reviewed-on: https://go-review.googlesource.com/32334
Reviewed-by: Alan Donovan <adonovan@google.com>
8 years agoRevert "runtime/pprof: write profiles in protobuf format."
Michael Matloob [Mon, 31 Oct 2016 15:30:59 +0000 (15:30 +0000)]
Revert "runtime/pprof: write profiles in protobuf format."

This reverts commit b33030a72754cb55d6ec137e79facacb398c9be4.

Reason for revert: We're going to try to get the code in this change
submitted in smaller, more carefully reviewed changes.

Change-Id: I4175f4b297f0e69fb78b11f9dc0bd82f27865be7
Reviewed-on: https://go-review.googlesource.com/32441
Reviewed-by: Russ Cox <rsc@golang.org>
8 years agonet/http: returned typed error on Transport proxy dial
Quentin Renard [Sat, 8 Oct 2016 13:52:25 +0000 (15:52 +0200)]
net/http: returned typed error on Transport proxy dial

Fixes #16997

Change-Id: I9ca27d8cff1905584862997d0e8a11ce3c4c21cb
Reviewed-on: https://go-review.googlesource.com/30750
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agodatabase/sql: correctly spell constants
Kevin Burke [Mon, 31 Oct 2016 14:32:19 +0000 (07:32 -0700)]
database/sql: correctly spell constants

Also add a link to more information about isolation levels as defined by the
SQL standard. Fixes #17682.

Change-Id: I94c53b713f4c882af40cf15fe5f1e5dbc53ea741
Reviewed-on: https://go-review.googlesource.com/32418
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>