]> Cypherpunks repositories - gostls13.git/log
gostls13.git
10 years agocmd/internal/gc: destutter array initializers
Matthew Dempsky [Thu, 2 Apr 2015 22:19:10 +0000 (15:19 -0700)]
cmd/internal/gc: destutter array initializers

Aside from removing the superfluous comment near syms, this diff is
entirely mechanically generated via Emacs's query-replace-regexp to
replace "^\tstruct {\n[^}]*}" with "\t".

Change-Id: Ide7e4b5995f6a121b3f57415e033933ac5c7431a
Reviewed-on: https://go-review.googlesource.com/8427
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agoiostest.bash: warn if GOARCH is not correct
Josh Bleecher Snyder [Fri, 3 Apr 2015 18:02:32 +0000 (11:02 -0700)]
iostest.bash: warn if GOARCH is not correct

Fixes #10334

Change-Id: I468230870ca2afc691ce879707dac34e513e1b9e
Reviewed-on: https://go-review.googlesource.com/8442
Reviewed-by: David Crawshaw <crawshaw@golang.org>
10 years agocmd/7g: reserve registers R26 to R32
David Crawshaw [Fri, 3 Apr 2015 16:43:43 +0000 (12:43 -0400)]
cmd/7g: reserve registers R26 to R32

These registers are not available for programs to use. Prior to this
change, the compiler would crash attempting to use ZR as a general
purpose register. Other programs would compile but on execution would
overwrite the G register and cause havoc.

Fixes linux/arm64 build.
Fixes #10304
Fixes #10320

Change-Id: I5cf51d3b77cfe3db7dd6377324950cafb02f8d8b
Reviewed-on: https://go-review.googlesource.com/8456
Reviewed-by: Minux Ma <minux@golang.org>
10 years agocmd/internal/gc: use 512 bits (rather than 464) for multi-precision arithmetic
Robert Griesemer [Thu, 2 Apr 2015 23:34:48 +0000 (16:34 -0700)]
cmd/internal/gc: use 512 bits (rather than 464) for multi-precision arithmetic

The original implementation used 16 int "words" but only 29 bits per word
for a total of 16*29 = 464 bits, with a space consumption of 16*64 = 1024
bits on a 64 bit machine. Switching to 512 bits increases precision while
still using (in the worst case) half the amount of memory per mp value on
a 64 bit machine.

Also: Decreased permitted number of least-significant mantissa bits which
may be incorrect when considering if a precise floating-point constant is
an integer from 29 to 16 bits.

Change-Id: Iee9287056f0e9aa4f06ceac0724ff4674f710c53
Reviewed-on: https://go-review.googlesource.com/8429
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/internal/gc/big: gofmt vendored code
Josh Bleecher Snyder [Fri, 3 Apr 2015 03:42:59 +0000 (20:42 -0700)]
cmd/internal/gc/big: gofmt vendored code

Change-Id: I035e6f1cd159644db5eeef83056b9c34c401e60f
Reviewed-on: https://go-review.googlesource.com/8441
Reviewed-by: Robert Griesemer <gri@golang.org>
10 years agocmd/internal/gc: use hardware instruction for math.Sqrt (amd64/arm)
Russ Cox [Wed, 1 Apr 2015 20:02:34 +0000 (16:02 -0400)]
cmd/internal/gc: use hardware instruction for math.Sqrt (amd64/arm)

I first prototyped this change in Sept 2011, and I discarded it
because it made no difference in the obvious benchmark loop.
It still makes no difference in the obvious benchmark loop,
but in a less obvious one, doing some extra computation
around the calls to Sqrt, not making the call does have a
significant effect.

benchmark                 old ns/op     new ns/op     delta
BenchmarkSqrt             4.56          4.57          +0.22%
BenchmarkSqrtIndirect     4.56          4.56          +0.00%
BenchmarkSqrtGo           69.4          69.4          +0.00%
BenchmarkSqrtPrime        4417          3647          -17.43%

This is a warmup for using hardware expansions for some
calls to 1-line assembly routines in the runtime (for example getg).

Change-Id: Ie66be23f8c09d0f7dc4ddd7ca8a93cfce28f55a4
Reviewed-on: https://go-review.googlesource.com/8356
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/internal/obj/x86: remove NOP that crept into framepointer fix
Russ Cox [Thu, 2 Apr 2015 20:20:30 +0000 (16:20 -0400)]
cmd/internal/obj/x86: remove NOP that crept into framepointer fix

Followup to CL 7728.

Change-Id: Ibb0fed7816aab459a94720b139a7737fad65bea2
Reviewed-on: https://go-review.googlesource.com/8425
Reviewed-by: Austin Clements <austin@google.com>
10 years agocmd/7g: FCMPS/FCMPD also should be RegRead instead of RightRead
Shenghou Ma [Fri, 3 Apr 2015 00:13:17 +0000 (20:13 -0400)]
cmd/7g: FCMPS/FCMPD also should be RegRead instead of RightRead

No test cases yet, but I found this while double checking the
proginfo table.

Change-Id: Ib59675c117c676c1298bcab8765ca6a8fd234de8
Reviewed-on: https://go-review.googlesource.com/8431
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
10 years agoruntime: fix arm, arm64, ppc64 builds (I hope)
Ian Lance Taylor [Fri, 3 Apr 2015 01:58:22 +0000 (18:58 -0700)]
runtime: fix arm, arm64, ppc64 builds (I hope)

I guess we need more builders.

Change-Id: I309e3df7608b9eef9339196fdc50dedf5f9422e4
Reviewed-on: https://go-review.googlesource.com/8434
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
10 years agonet: deflake TestDialGoogle, TestResolveDialGoogle
Mikio Hara [Wed, 1 Apr 2015 13:18:33 +0000 (22:18 +0900)]
net: deflake TestDialGoogle, TestResolveDialGoogle

This change makes use of the socktest package instead of the non-thread
safe variable syscall.SocketDisableIPv6 for simulating unreachable
external networks.

Also adds -ipv4 flag, -ipv6 flag already exists, as a control knob for
testing on each of IPv4-only, IPv6-only and dual IP stack kernels.

Fixes #7687.

Change-Id: I82002007fd526e8cf4de207f935e721df049a22f
Reviewed-on: https://go-review.googlesource.com/8390
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoruntime: initialize shared library at library-load time
Srdjan Petrovic [Thu, 26 Mar 2015 00:50:35 +0000 (17:50 -0700)]
runtime: initialize shared library at library-load time

This is Part 2 of the change, see Part 1 here: in https://go-review.googlesource.com/#/c/7692/

Suggested by iant@, we use the library initialization entry point to:
    - create a new OS thread and run the "regular" runtime init stack on
      that thread
    - return immediately from the main (i.e., loader) thread
    - at the first CGO invocation, we wait for the runtime initialization
      to complete.

The above mechanism is implemented only on linux_amd64.  Next step is to
support it on linux_arm.  Other platforms don't yet support shared library
compiling/linking, but we intend to use the same strategy there as well.

Change-Id: Ib2c81b1b83bee837134084b75a3beecfb8de6bf4
Reviewed-on: https://go-review.googlesource.com/8094
Run-TryBot: Srdjan Petrovic <spetrovic@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agonet: deflake TestDialTimeoutFDLeak
Mikio Hara [Wed, 1 Apr 2015 13:01:24 +0000 (22:01 +0900)]
net: deflake TestDialTimeoutFDLeak

This change makes TestDialTimeoutFDLeak work on almost all the supported
platforms.

Updates #4384.

Change-Id: I3608f438003003f9b7cfa17c9e5fe7077700fd60
Reviewed-on: https://go-review.googlesource.com/8392
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocrypto/x509: Fix parsing bug in uncommon CSR Attributes.
Jacob H. Haven [Thu, 26 Mar 2015 22:05:09 +0000 (15:05 -0700)]
crypto/x509: Fix parsing bug in uncommon CSR Attributes.

A CSR containing challengePassword or unstructuredName Attributes
(included in default OpenSSL prompts) would break ASN.1 parsing.
This updates the parsing structures to allow but then ignore these
fields.

See this CFSSL issue: https://github.com/cloudflare/cfssl/issues/115

Change-Id: I26a3bf1794589d27e6e763da88ae32276f0170c7
Reviewed-on: https://go-review.googlesource.com/8160
Reviewed-by: Adam Langley <agl@golang.org>
10 years agonet: move init function into net.go
Mikio Hara [Wed, 1 Apr 2015 13:46:12 +0000 (22:46 +0900)]
net: move init function into net.go

It's a single, package-wide init function specified for the net package.

Change-Id: Id5894d65e1a92297cc16803cc5e4d4eef0b4b099
Reviewed-on: https://go-review.googlesource.com/8391
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoruntime: add cumulative GC CPU % to gctrace line
Austin Clements [Wed, 1 Apr 2015 17:47:35 +0000 (13:47 -0400)]
runtime: add cumulative GC CPU % to gctrace line

This tracks both total CPU time used by GC and the total time
available to all Ps since the beginning of the program and uses this
to derive a cumulative CPU usage percent for the gctrace line.

Change-Id: Ica85372b8dd45f7621909b325d5ac713a9b0d015
Reviewed-on: https://go-review.googlesource.com/8350
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agoruntime: update gctrace line for new garbage collector
Austin Clements [Thu, 26 Mar 2015 22:48:42 +0000 (18:48 -0400)]
runtime: update gctrace line for new garbage collector

GODEBUG=gctrace=1 turns on a per-GC cycle trace line. The current line
is left over from the STW garbage collector and includes a lot of
information that is no longer meaningful for the concurrent GC and
doesn't include a lot of information that is important.

Replace this line with a new line designed for the new garbage
collector.

This new line is focused more on helping the user understand the
impact of the garbage collector on their program and less on telling
us, the runtime developers, everything that's happening inside
GC. It's designed to fit in 80 columns and intentionally omit some
potentially useful things that were in the old line. We might want a
"verbose" mode that adds information for us.

We'll be able to further simplify the line once we eliminate the STW
around enabling the write barrier. Then we'll have just one STW phase,
one concurrent phase, and one more STW phase, so we'll be able to
reduce the number of times from five to three.

Change-Id: Icc30939fe4576fb4491b4eac811649395727aa2a
Reviewed-on: https://go-review.googlesource.com/8208
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocrypto/tls: make use of crypto.Signer and crypto.Decrypter
Jacob H. Haven [Thu, 19 Mar 2015 11:01:57 +0000 (04:01 -0700)]
crypto/tls: make use of crypto.Signer and crypto.Decrypter

This change replaces all direct ECDSA/RSA sign and decrypt operations
with calls through the crypto.Signer and crypto.Decrypter interfaces.

This is a follow-up to https://go-review.googlesource.com/#/c/3900/
which added crypto.Decrypter and implemented it for RSA.

Change-Id: Ie0f3928448b285f329efcd3a93ca3fd5e3b3e42d
Reviewed-on: https://go-review.googlesource.com/7804
Reviewed-by: Adam Langley <agl@golang.org>
10 years agocmd/internal/gc: move fix and flt functions into respective files (cleanups)
Robert Griesemer [Fri, 27 Mar 2015 01:07:19 +0000 (18:07 -0700)]
cmd/internal/gc: move fix and flt functions into respective files (cleanups)

Also:
- introduce Mpprec (remove old constants)
- no semantic changes

Change-Id: Ie0e77e8e09bd68e09bcf8747a3d875270e736081
Reviewed-on: https://go-review.googlesource.com/8171
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/internal/gc: use big.Float to represent Mpflt bits
Robert Griesemer [Fri, 20 Mar 2015 23:59:08 +0000 (16:59 -0700)]
cmd/internal/gc: use big.Float to represent Mpflt bits

All multi-precision arithmetic is now based on math/big.

- passes all.bash
- added test cases for fixed bugs

Fixes #7740.
Fixes #6866.

Change-Id: I67268b91766970ced3b928260053ccdce8753d58
Reviewed-on: https://go-review.googlesource.com/7912
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/dist, cmd/internal/gc: switch gc from math/big to vendored math/big
Robert Griesemer [Fri, 20 Mar 2015 20:39:44 +0000 (13:39 -0700)]
cmd/dist, cmd/internal/gc: switch gc from math/big to vendored math/big

Change-Id: Iab9a1f814acd53d5707bfcd6c3f9616c79fa7789
Reviewed-on: https://go-review.googlesource.com/7858
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/internal/gc/big: updated vendored version of math/big (fix build)
Robert Griesemer [Thu, 2 Apr 2015 21:47:03 +0000 (14:47 -0700)]
cmd/internal/gc/big: updated vendored version of math/big (fix build)

Change-Id: I04c2bd18a47cc775c78d074fe521cef2b0d6e7f0
Reviewed-on: https://go-review.googlesource.com/8426
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
10 years agocmd/internal/gc, cmd/yacc: restore custom syntax error messages
Matthew Dempsky [Tue, 10 Mar 2015 00:40:23 +0000 (17:40 -0700)]
cmd/internal/gc, cmd/yacc: restore custom syntax error messages

This restores go.errors from before 3af0d79 along with a fixed up
version of the bisonerrors AWK script, translated to Go.

However, this means Yyerror needs access to the yacc parser's state,
which is currently private.  To workaround that, add a "state"
accessor method like the Lookahead method added in c7fa3c6.

Update issue #9968.

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

10 years agocmd/internal/gc/big: vendored math/big for use by gc
Robert Griesemer [Fri, 20 Mar 2015 20:35:02 +0000 (13:35 -0700)]
cmd/internal/gc/big: vendored math/big for use by gc

This is vendored copy of the pure-Go version of math/big.
To update, run vendor.bash in place.

This will permit the use of the new big.Float functionality in
gc (which is not available in 1.4, the version used for bootstrapping).

Change-Id: I4dcdea875d54710005ca3fdea2e0e30422b1b46d
Reviewed-on: https://go-review.googlesource.com/7857
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/yacc: generate arrays instead of slices where possible
Matthew Dempsky [Thu, 12 Mar 2015 22:20:33 +0000 (15:20 -0700)]
cmd/yacc: generate arrays instead of slices where possible

Yacc generates a bunch of global variables of the form

    var yyFoo = []int{...}

where yyFoo is never subsequently modified to point to a different
slice.  Since these variables are implicitly compiled as

    var yyFoo = ([...]int{...})[:]

anyway, by simply converting them all to

    var yyFoo = [...]int{...}

we save sizeof(sliceStruct) bytes of data memory for each variable and
also make len(yyFoo) into compile-time constant expressions, which
shaves some bytes off text size:

    $ size 6g.before 6g.after
       text    data     bss     dec     hex filename
    4598019  605968  342700 5546687  54a2bf 6g.before
    4597810  605552  342700 5546062  54a04e 6g.after

Change-Id: I53c7aa6efdb2d52738013e9d337a59afbfcb2494
Reviewed-on: https://go-review.googlesource.com/7520
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/8g, cmd/internal/gc: clean up GO386 handling
Dave Cheney [Tue, 24 Mar 2015 22:17:09 +0000 (09:17 +1100)]
cmd/8g, cmd/internal/gc: clean up GO386 handling

This change cleans up some of the uglyness introduced in 8fc73a39efe1
by moving the gc.Use_sse into the gc.Arch struct and adjusting its
zero value to be more useful.

Change-Id: I26ff5d9ac57b3f25e936519e443de6583cdafa56
Reviewed-on: https://go-review.googlesource.com/7994
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/7g: fix ACMP entry in progtable
David Crawshaw [Thu, 2 Apr 2015 15:35:56 +0000 (11:35 -0400)]
cmd/7g: fix ACMP entry in progtable

On arm64, CMP $foo, R is encoded as from=$foo, reg=R, not as from=$foo,
to=R. The progtable entry for ACMP incorrectly described the latter
form. Because of this, the registerizer was not accounting the registers
used in CMP instructions and was incorrectly re-assigning those registers.

This was an old problem, but it only became apparent after b115c35
(cmd/internal/gc: move cgen, regalloc, et al to portable code). Previous
to this commit, the compiler used a slightly larger register set for the
temps than it used for register variables. Since it had plenty registers
dedicated to temps, the registers used in CMP instruction never clashed
with registers assigned to register variables.

Fixes #10253

Change-Id: Iedf4bd882bd59440dff310ac0f81e0f53d80d7ed
Reviewed-on: https://go-review.googlesource.com/8387
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
10 years agomath/big: implement missing special cases for binary operations
Robert Griesemer [Thu, 2 Apr 2015 00:19:09 +0000 (17:19 -0700)]
math/big: implement missing special cases for binary operations

Change-Id: I9fc12b1a9b1554523e08839c1ff46c8668217ba1
Reviewed-on: https://go-review.googlesource.com/8381
Reviewed-by: Alan Donovan <adonovan@google.com>
10 years agocmd/go: print SWIG warnings
Michael Schaller [Thu, 2 Apr 2015 11:15:08 +0000 (13:15 +0200)]
cmd/go: print SWIG warnings

Fixes #9053

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

10 years agoruntime: remove checkgc code from hashmap
Austin Clements [Mon, 30 Mar 2015 21:45:22 +0000 (17:45 -0400)]
runtime: remove checkgc code from hashmap

Currently hashmap is riddled with code that attempts to force a GC on
the next allocation if checkgc is set. This no longer works as
originally intended with the concurrent collector, and is apparently
no longer used anyway.

Remove checkgc.

Change-Id: Ia6c17c405fa8821dc2e6af28d506c1133ab1ca0c
Reviewed-on: https://go-review.googlesource.com/8355
Reviewed-by: Keith Randall <khr@golang.org>
10 years agoruntime: improve MemStats comments
Austin Clements [Mon, 30 Mar 2015 20:59:09 +0000 (16:59 -0400)]
runtime: improve MemStats comments

This tries to clarify that Alloc and HeapAlloc are tied to how much
freeing has been done by the sweeper.

Change-Id: Id8320074bd75de791f39ec01bac99afe28052d02
Reviewed-on: https://go-review.googlesource.com/8354
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agonet: move test flags into main_test.go
Mikio Hara [Thu, 2 Apr 2015 03:15:03 +0000 (12:15 +0900)]
net: move test flags into main_test.go

Also updates the comments on test flags.

Change-Id: I8dbd90270e08728ab309ab88a3030e0f8e547175
Reviewed-on: https://go-review.googlesource.com/8394
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agogo/ast: fix ast.Inspect doc string
Robert Griesemer [Thu, 2 Apr 2015 00:48:08 +0000 (17:48 -0700)]
go/ast: fix ast.Inspect doc string

Fixes #10243.

Change-Id: I06ac53628980853faecbf1a57ff71b88098d65f2
Reviewed-on: https://go-review.googlesource.com/8382
Reviewed-by: Minux Ma <minux@golang.org>
10 years agoruntime: auto-generate duff routines
Josh Bleecher Snyder [Tue, 31 Mar 2015 16:19:10 +0000 (09:19 -0700)]
runtime: auto-generate duff routines

This makes it easier to experiment with alternative implementations.

While we're here, update the comments.

No functional changes. Passes toolstash -cmp.

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

10 years agocmd/internal/gc: make class uint8 throughout
Josh Bleecher Snyder [Fri, 27 Mar 2015 19:00:07 +0000 (12:00 -0700)]
cmd/internal/gc: make class uint8 throughout

This prevents conversion noise.

No functional changes. Passes toolstash -cmp.

Change-Id: I238adf28680f875217827931a689ce7f19a9b371
Reviewed-on: https://go-review.googlesource.com/8164
Reviewed-by: David Chase <drchase@google.com>
10 years agonet: deflake TestDialTimeout
Mikio Hara [Sun, 29 Mar 2015 11:19:20 +0000 (20:19 +0900)]
net: deflake TestDialTimeout

This change makes TestDialTimeout work on almost all the supported
platforms.

Updates #3016.
Updates #3307.
Updates #3867.
Updates #5380.
Updates #5349.

Change-Id: Iacf0ebea23cdd8f6c0333d70c667a5a5f5eb0ed2
Reviewed-on: https://go-review.googlesource.com/8220
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agodoc/go1.5: add Stats to database/sql
Josh Bleecher Snyder [Wed, 1 Apr 2015 23:33:43 +0000 (16:33 -0700)]
doc/go1.5: add Stats to database/sql

Change-Id: I7b0c186ea292655f7ff45c15ac29f6d1b71ef132
Reviewed-on: https://go-review.googlesource.com/8370
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
10 years agonet: fix data race in benchmarks
Mikio Hara [Wed, 1 Apr 2015 03:21:15 +0000 (12:21 +0900)]
net: fix data race in benchmarks

Fixes #10307.

Change-Id: If70f36a6f1c4e465a47a0bc4d38b318424111106
Reviewed-on: https://go-review.googlesource.com/8330
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agogo/scanner: Simplify ErrorList.Sort implementation.
David Symonds [Wed, 1 Apr 2015 21:24:35 +0000 (14:24 -0700)]
go/scanner: Simplify ErrorList.Sort implementation.

It functions exactly the same, but this is the more common
style for these kinds of multi-key comparison functions,
and is more regular.

Change-Id: I46630948f893bcc96c05eb3d36eb82e1d97a6fa0
Reviewed-on: https://go-review.googlesource.com/8358
Reviewed-by: Robert Griesemer <gri@golang.org>
10 years agomath/big: faster Int.Binomial(n, k) for k > n/2
Robert Griesemer [Wed, 1 Apr 2015 18:49:12 +0000 (11:49 -0700)]
math/big: faster Int.Binomial(n, k) for k > n/2

benchmark             old ns/op     new ns/op     delta
BenchmarkBinomial     478664        4410          -99.08%

Fixes #10084.

Change-Id: Ib75034428e32c79c9a660ae9f9bd396afc6a7f11
Reviewed-on: https://go-review.googlesource.com/8351
Reviewed-by: Alan Donovan <adonovan@google.com>
10 years agocmd/internal/gc: unembed Node.Func
Josh Bleecher Snyder [Thu, 26 Mar 2015 02:33:01 +0000 (19:33 -0700)]
cmd/internal/gc: unembed Node.Func

This is a follow-up to CL 7360.

It was generated with eg and gofmt -r.

The only manual changes are the unembedding in syntax.go
and backporting changes from y.go to go.y.

Passes toolstash -cmp.

Change-Id: I3d6d06ecb659809a4bc8592395d5b9a18967218e
Reviewed-on: https://go-review.googlesource.com/8053
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>

10 years agocmd/internal/gc: separate func-only Node fields
Josh Bleecher Snyder [Wed, 11 Mar 2015 04:37:13 +0000 (21:37 -0700)]
cmd/internal/gc: separate func-only Node fields

Nodes dominate gc's memory usage, but many fields are only used
for a subset of kinds of nodes. This change pulls out fields
used only for func-like Nodes. This reduces the size of the
Node struct on a 64-bit machine from 504 bytes to 416 bytes (-17%).

Compiling the runtime, 1.5% of nodes have a non-nil Func.
In html/template, 2.7% of nodes have a non-nil Func.

This change introduces an extra alloc and associated GC overhead
when Func is non-nil. However, when Func is nil, as it almost
always is, it spares the garbage collector scanning some Node fields.
Empirically, this change appears to be roughly neutral with regard to GC.

To keep the diff readable, this CL uses an embedded Func field.
A subsequent CL will unembed the field.

Passes toolstash -cmp.

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

10 years agogo/scanner: Stabilize (*ErrorList).Sort
Jan Mercl [Wed, 1 Apr 2015 10:37:02 +0000 (12:37 +0200)]
go/scanner: Stabilize (*ErrorList).Sort

This change stabilizes the result of Sort when the error list contains
multiple items for same position. To stabilize the result, newly also
the Msg field is considered.

The motivation is to avoid diffs of sorted scanner.ErrorList output
in repository tracked logs like:

-testdata/foo.go:19:44: "bar"
 testdata/foo.go:19:44: "qux"
+testdata/foo.go:19:44: "bar"

The change was approved at [0] before submitting.

As a side effect, one file in go/parser/testdata must be updated as
well. For this file the parser produces two different errors:

testdata/issue3106.src:22:5: expected ';', found 'if'
testdata/issue3106.src:22:5: expected operand, found 'if'

Before comparing the actual and expected errors, the former are
filtered to keep only one error per source line[1]. With the new
(*ErrorList).Less the outcome is the other error than before which is
kept after the call to RemoveMultiplies.

[0]: https://groups.google.com/d/msg/golang-nuts/5ChC0XiIwlU/rol_yb2gTj4J
[1]:
https://github.com/golang/go/blob/9d0239771a2ddd77be0ba64c2782e1328a378190/src/go/parser/error_test.go#L160

Change-Id: Ib72c98a891cdeef34705c22dfbeb0408dcdfddf8
Reviewed-on: https://go-review.googlesource.com/8340
Reviewed-by: Robert Griesemer <gri@golang.org>
10 years agocmd/gofmt, go/format: refactor common pieces into internal/format
Sebastien Binet [Wed, 4 Mar 2015 13:20:32 +0000 (14:20 +0100)]
cmd/gofmt, go/format: refactor common pieces into internal/format

cmd/gofmt and go/format had 3 functions (parse, format and isSpace)
that had to be kept in-sync.

This CL extracts these 3 functions and refactors them into a new
internal/format package.
This CL is just code reorganization with no behavior nor semantic
change.

Change-Id: I593f24e9d3cadbbd9559a67e3b1d2ff190b4fd90
Reviewed-on: https://go-review.googlesource.com/6760
Reviewed-by: Robert Griesemer <gri@golang.org>
10 years agocmd/5g etc: merge simple case expressions onto fewer lines
Josh Bleecher Snyder [Wed, 1 Apr 2015 16:38:44 +0000 (09:38 -0700)]
cmd/5g etc: merge simple case expressions onto fewer lines

The c2go translation left a lot of case expressions on separate lines.
Merge expressions onto single lines subject to these constraints:

* Max 4 clauses, all literals or names
* Don't move expressions with comments

The change was created by running http://play.golang.org/p/yHajs72h-g:

$ mergecase cmd/internal/{ld,gc,obj}/*.go cmd/internal/obj/*/*.go

Passes toolstash -cmp.

Change-Id: Iba41b390d302e5486e5dc6ba7599a92270676556
Reviewed-on: https://go-review.googlesource.com/7593
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>

10 years agocompress/flate: fix typo in comment
Preetam Jinka [Wed, 1 Apr 2015 15:49:24 +0000 (11:49 -0400)]
compress/flate: fix typo in comment

Change-Id: I32ec2d8cb838fb850b3779726cf347dac21dff68
Reviewed-on: https://go-review.googlesource.com/8322
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/gc: teach componentgen about string constants
Josh Bleecher Snyder [Thu, 8 Jan 2015 23:30:02 +0000 (15:30 -0800)]
cmd/gc: teach componentgen about string constants

This makes it cheaper to copy string literals.
This happens just about anywhere that they are used.

Example:

func f() string {
return "f"
}

Using 6g, compiler output before:

"".f t=1 size=32 value=0 args=0x10 locals=0x0
0x0000 00000 (p.go:3) TEXT "".f+0(SB),4,$0-16
0x0000 00000 (p.go:3) FUNCDATA $0,gclocals·d64e51a4c4bfeaa840e480961ec6b0b3+0(SB)
0x0000 00000 (p.go:3) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x0000 00000 (p.go:4) LEAQ go.string."f"+0(SB),BX
0x0007 00007 (p.go:4) MOVQ (BX),BP
0x000a 00010 (p.go:4) MOVQ BP,"".~r0+8(FP)
0x000f 00015 (p.go:4) MOVQ 8(BX),BP
0x0013 00019 (p.go:4) MOVQ BP,"".~r0+16(FP)
0x0018 00024 (p.go:4) RET ,

After:

"".f t=1 size=32 value=0 args=0x10 locals=0x0
0x0000 00000 (p.go:3) TEXT "".f+0(SB),4,$0-16
0x0000 00000 (p.go:3) FUNCDATA $0,gclocals·d64e51a4c4bfeaa840e480961ec6b0b3+0(SB)
0x0000 00000 (p.go:3) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x0000 00000 (p.go:4) MOVQ $go.string."f"+16(SB),BX
0x0007 00007 (p.go:4) MOVQ BX,"".~r0+8(FP)
0x000c 00012 (p.go:4) MOVQ $1,"".~r0+16(FP)
0x0015 00021 (p.go:4) RET ,

The leading MOVQ here will be converted into a LEAQ by the linker,
but there is still a net reduction of two MOVQs.

Before:

TEXT main.f(SB)
        p.go:4  0x2000  488d1d49500500  LEAQ 0x55049(IP), BX
        p.go:4  0x2007  488b2b          MOVQ 0(BX), BP
        p.go:4  0x200a  48896c2408      MOVQ BP, 0x8(SP)
        p.go:4  0x200f  488b6b08        MOVQ 0x8(BX), BP
        p.go:4  0x2013  48896c2410      MOVQ BP, 0x10(SP)
        p.go:4  0x2018  c3              RET

After:

TEXT main.f(SB)
        p.go:4  0x2000  488d1dd94c0500          LEAQ 0x54cd9(IP), BX
        p.go:4  0x2007  48895c2408              MOVQ BX, 0x8(SP)
        p.go:4  0x200c  48c744241001000000      MOVQ $0x1, 0x10(SP)
        p.go:4  0x2015  c3                      RET

The performance improvement is small but widespread.

As a nice small example, net/url's sole benchmark using 6g:

benchmark           old ns/op     new ns/op     delta
BenchmarkString     16372         16118         -1.55%

And with 8g:

benchmark           old ns/op     new ns/op     delta
BenchmarkString     22034         21709         -1.47%

Change-Id: I4ce202ee7dbd4057be869e2faaaa638c28a1fff0
Reviewed-on: https://go-review.googlesource.com/2587
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>

10 years agodatabase/sql: provide stats on number of open connections to the database.
Andrei Korzhevskii [Mon, 23 Mar 2015 15:23:53 +0000 (18:23 +0300)]
database/sql: provide stats on number of open connections to the database.

This change provides a convenient way to monitor database connection pool.

Change-Id: I4b3757855b43f3b254acf9312e2a16e2f87840d0
Reviewed-on: https://go-review.googlesource.com/7950
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocmd/go: always link external test packages first when using gccgo
Dave Cheney [Mon, 30 Mar 2015 05:13:39 +0000 (16:13 +1100)]
cmd/go: always link external test packages first when using gccgo

This CL is an amagamation of several fixes Canonical have made on their
fork of the cmd/go tool (packaged as gccgo-go.deb on Ubuntu 14.04+).

Additionally this CL brings gccgoToolchain.ldi() up to date with the version
that will ship in gccgo-5.0. As gccgo is most likely to be used with its
own version of the go tool that it supples it makes good sense that the libgo
version should dictate the contents of gccgotoolchain.ld()

Please see https://codereview.appspot.com/222890043/ for more details on the
issues fixed.

Change-Id: Icf7deb43f8e80b424757f1673e6bca7a0aa2a1ac
Reviewed-on: https://go-review.googlesource.com/8250
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agotext/scanner: Fix EOF reporting on strange Readers
Evan Phoenix [Sun, 22 Mar 2015 06:42:47 +0000 (23:42 -0700)]
text/scanner: Fix EOF reporting on strange Readers

Currently, scanner uses -1 to represent 2 different states:

1. I haven't yet scanned anything, call it "Beginning of File"
2. I've reached the end of the input, ie EOF

The result of this behavior is that calling Peek() when next()
has detected the end of the input and set s.ch to scanner.EOF,
is that Peek() things "oh, s.ch is < 0, which to me means that
I haven't scanned any next yet, let me try and clear the BOM
marker."

When this behavior is run on a typical IO, next() will issue
a Read and get (0, io.EOF) back for the second time without
blocking and Peek() will return scanner.EOF.

The bug comes into play when, inside a terminal, hitting Control-D.
This causes the terminal to return a EOF condition to the reader
but it does not actually close the fd.

So, combining these 2 situations, we arrive at the bug:

What is expected: hitting Control-D in a terminal will make Peek()
return scanner.EOF instantly.

What actually happens:

0. Code waiting in Next()
1. User hits Control-D
2. fd returns EOF condition
3. EOF bubbles it's way out to line 249 in scanner.go
4. next() returns scanner.EOF
5. Next() saves the scanner.EOF to s.ch and returns the previous value
6. Peek() runs, sees s.ch < 0, mistakenly thinks it hasn't run yet and
   tries to read the BOM marker.
7. next() sees the buffer is empty and tries to fill it again, blocking
   on line 249.

The fix is simple: use a different code to indicate that no data
has been scanned.

Change-Id: Iee8f4da5881682c4d4c36b93b9bf397ac5798179
Reviewed-on: https://go-review.googlesource.com/7913
Reviewed-by: Robert Griesemer <gri@golang.org>
10 years agofmt: improve test coverage of %x and %X format variations for strings
Martin Möhrmann [Fri, 9 Jan 2015 11:32:19 +0000 (12:32 +0100)]
fmt: improve test coverage of %x and %X format variations for strings

The tests in the basic string section are now covering more code paths
for encoding a string into the hexadecimal representation of its bytes.

Changed the basic string and basic bytes tests so that they mirror each other.

Change-Id: Ib5dc7b33876769965f9aba2ac270040abc4b2451
Reviewed-on: https://go-review.googlesource.com/2611
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
10 years agonet: add socket system call hooks for testing
Mikio Hara [Sun, 1 Mar 2015 03:27:01 +0000 (12:27 +0900)]
net: add socket system call hooks for testing

This change adds socket system call hooks to existing test cases for
simulating a bit complicated network conditions to help making timeout
and dual IP stack test cases work more properly in followup changes.

Also test cases print debugging information in non-short mode like the
following:

Leaked goroutines:
net.TestWriteTimeout.func2(0xc20802a5a0, 0xc20801d000, 0x1000, 0x1000, 0xc2081d2ae0)
/go/src/net/timeout_test.go:170 +0x98
created by net.TestWriteTimeout
/go/src/net/timeout_test.go:173 +0x745
net.runDatagramPacketConnServer(0xc2080730e0, 0x2bd270, 0x3, 0x2c1770, 0xb, 0xc2081d2ba0, 0xc2081d2c00)
/go/src/net/server_test.go:398 +0x667
created by net.TestTimeoutUDP
/go/src/net/timeout_test.go:247 +0xc9
(snip)

Leaked sockets:
3: {Cookie:615726511685632 Err:<nil> SocketErr:0}
5: {Cookie:7934075906097152 Err:<nil> SocketErr:0}

Socket statistical information:
{Family:1 Type:805306370 Protocol:0 Opened:17 Accepted:0 Connected:5 Closed:17}
{Family:2 Type:805306369 Protocol:0 Opened:450 Accepted:234 Connected:279 Closed:636}
{Family:1 Type:805306369 Protocol:0 Opened:11 Accepted:5 Connected:5 Closed:16}
{Family:28 Type:805306369 Protocol:0 Opened:95 Accepted:22 Connected:16 Closed:116}
{Family:2 Type:805306370 Protocol:0 Opened:84 Accepted:0 Connected:34 Closed:83}
{Family:28 Type:805306370 Protocol:0 Opened:52 Accepted:0 Connected:4 Closed:52}

Change-Id: I0e84be59a0699bc31245c78e2249423459b8cdda
Reviewed-on: https://go-review.googlesource.com/6390
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agomath/big: remove NaN support - just not worth it
Robert Griesemer [Tue, 31 Mar 2015 01:11:48 +0000 (18:11 -0700)]
math/big: remove NaN support - just not worth it

NaNs make the API more complicated for no real good reasons.
There are few operations that produce NaNs with IEEE arithmetic,
there's no need to copy the behavior. It's easy to test for these
scenarios and avoid them (on the other hand, it's not easy to test
for overflow or underflow, so we want to keep +/-Inf).

Also:
- renamed IsNeg -> Signbit (clearer, especially for x == -0)
- removed IsZero           (Sign() == 0 is sufficient and efficient)
- removed IsFinite         (now same as !IsInf)

Change-Id: I3f3b4445c325d9bbb1bf46ce2e298a6aeb498e07
Reviewed-on: https://go-review.googlesource.com/8280
Reviewed-by: Alan Donovan <adonovan@google.com>
10 years agoruntime, cmd/internal/ld: change runtime to use a single linker symbol
Michael Hudson-Doyle [Wed, 11 Mar 2015 23:22:18 +0000 (12:22 +1300)]
runtime, cmd/internal/ld: change runtime to use a single linker symbol

In preparation for being able to run a go program that has code
in several objects, this changes from having several linker
symbols used by the runtime into having one linker symbol that
points at a structure containing the needed data.  Multiple
object support will construct a linked list of such structures.

A follow up will initialize the slices in the themoduledata
structure directly from the linker but I was aiming for a minimal
diff for now.

Change-Id: I613cce35309801cf265a1d5ae5aaca8d689c5cbf
Reviewed-on: https://go-review.googlesource.com/7441
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/internal/gc: directly produce importpath of package being compiled
Michael Hudson-Doyle [Thu, 19 Mar 2015 10:05:34 +0000 (23:05 +1300)]
cmd/internal/gc: directly produce importpath of package being compiled

Relying on an importing package being linked at the same time as the
imported package does not work in the shared library world.

This also lets us remove some obscure code from the linker.

Change-Id: I57cd5447b42a1a6129b02951d44efffb10cf64be
Reviewed-on: https://go-review.googlesource.com/7797
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agomath/big: fixed Float.Float64, implemented Float.Float32
Robert Griesemer [Tue, 24 Mar 2015 23:36:16 +0000 (16:36 -0700)]
math/big: fixed Float.Float64, implemented Float.Float32

- fix bounds checks for exponent range of denormalized numbers
- use correct rounding precision for denormalized numbers
- added extra tests

Change-Id: I6be56399afd0d9a603300a2e44b5539e08d6f592
Reviewed-on: https://go-review.googlesource.com/8096
Reviewed-by: Alan Donovan <adonovan@google.com>
10 years agodoc: add another go1.5.txt performance item, sort gc items
Brad Fitzpatrick [Tue, 31 Mar 2015 13:16:40 +0000 (06:16 -0700)]
doc: add another go1.5.txt performance item, sort gc items

Change-Id: I9c2b9143d80d253d90d12d2b7686e045ec19c96c
Reviewed-on: https://go-review.googlesource.com/8291
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocrypto/x509: use syscall.GetVersion instead of internal/syscall/windows.GetVersion
Alex Brainman [Tue, 31 Mar 2015 05:59:02 +0000 (16:59 +1100)]
crypto/x509: use syscall.GetVersion instead of internal/syscall/windows.GetVersion

cl8167 introduced internal/syscall/windows.GetVersion, but we already
have that function in syscall.GetVersion. Use that instead.
Also revert all internal/syscall/windows cl8167 changes.

Change-Id: I512a5bf4b3b696e93aaf69e9e8b7df7022670ec0
Reviewed-on: https://go-review.googlesource.com/8302
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
Reviewed-by: Minux Ma <minux@golang.org>
10 years agoruntime: improve comment about non-preemption during GC work
Austin Clements [Fri, 20 Mar 2015 17:34:03 +0000 (13:34 -0400)]
runtime: improve comment about non-preemption during GC work

Currently, gcDrainN is documented saying that it must be run on the
system stack. In fact, the problem and solution here are somewhat
subtler. First, it doesn't have to happen on the system stack, it just
has to be non-stoppable (that is, non-preemptible). Second, this isn't
specific to gcDrainN (though gcDrainN is perhaps the most surprising
instance); it's general to anything that uses the gcWork structure.

Move the comment to gcWork and generalize it.

Change-Id: I5277b5abb070e47f8d783bc15a310b379c6adc22
Reviewed-on: https://go-review.googlesource.com/8247
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agoruntime: fix another out of date comment in GC
Austin Clements [Fri, 20 Mar 2015 17:21:51 +0000 (13:21 -0400)]
runtime: fix another out of date comment in GC

gcDrain used to be passed a *workbuf to start draining from, but now
it takes a gcWork, which hides whether or not there's an initial
workbuf. Update the comment to match this.

Change-Id: I976b58e5bfebc451cfd4fa75e770113067b5cc07
Reviewed-on: https://go-review.googlesource.com/8246
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agostrings: Add benchmark test for trim function
John Potocny [Thu, 26 Mar 2015 01:08:04 +0000 (21:08 -0400)]
strings: Add benchmark test for trim function

The strings.Trim function and variants allocate memory on the heap when creating a function to pass into TrimFunc.
Add a benchmark to document the behavior; an issue will be submitted to address this behavior in the compiler if possible.

Change-Id: I8b66721f077951f7e7b8cf3cf346fac27a9b68c0
Reviewed-on: https://go-review.googlesource.com/8200
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoruntime: allow pointers to strings to be printed
Lee Packham [Mon, 30 Mar 2015 16:36:49 +0000 (17:36 +0100)]
runtime: allow pointers to strings to be printed

Being able to printer pointers to strings means one will able to output
the result of things like the flag library and other components that use
string pointers.

While here, adjusted the tests for gdb to test original string pretty
printing as well as pointers to them. It was doing it via the map before
but for completeness this ensures it's tested as a unit.

Change-Id: I4926547ae4fa6c85ef74301e7d96d49ba4a7b0c6
Reviewed-on: https://go-review.googlesource.com/8217
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/internal/obj/arm64: delete needless closure in for claus
Rob Pike [Mon, 30 Mar 2015 22:06:33 +0000 (15:06 -0700)]
cmd/internal/obj/arm64: delete needless closure in for claus

A residue of the automatic translation, this closure is easily rewritten
to a simpler, smaller, and faster construct.

Discovered while analyzing #10269, which I still plan to fix.

Change-Id: I76b12290280d81880c446b4cf75da633a94482d4
Reviewed-on: https://go-review.googlesource.com/8270
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Minux Ma <minux@golang.org>
10 years agotest: add testcase for gccgo-specific issue 10284
Shenghou Ma [Mon, 30 Mar 2015 04:30:28 +0000 (00:30 -0400)]
test: add testcase for gccgo-specific issue 10284

Change-Id: I624b336a9eb27fbbc8ef13f141023b4f60966245
Reviewed-on: https://go-review.googlesource.com/8240
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoruntime: rename ·main·f to ·mainPC to avoid duplicate symbol
Michael Hudson-Doyle [Sun, 29 Mar 2015 23:38:20 +0000 (23:38 +0000)]
runtime: rename ·main·f to ·mainPC to avoid duplicate symbol

runtime·main·f is normalized by the linker to runtime.main.f, as is
the compiler-generated symbol runtime.main·f.  Change the former to
runtime·mainPC instead.

Fixes issue #9934

Change-Id: I656a6fa6422d45385fa2cc55bd036c6affa1abfe
Reviewed-on: https://go-review.googlesource.com/8234
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/internal/ld: handle TLS and imported symbols more regularly
Michael Hudson-Doyle [Sun, 29 Mar 2015 21:03:05 +0000 (21:03 +0000)]
cmd/internal/ld: handle TLS and imported symbols more regularly

For shared libraries we need to be more flexible in how these symbols
are handled (e.g. sometimes tlsg needs to be global, or you can get
a SDYNIMPORT symbol that has .Hide == true) so handling these cases
in genasmsym makes everything much more regular.

Even ignoring shared libraries, I think this is a bit cleaner.

Change-Id: If5beb093a261e79f4496183226e1765ee7aa6717
Reviewed-on: https://go-review.googlesource.com/8230
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agomisc/ios: retry loop to handle builder flakiness
David Crawshaw [Mon, 30 Mar 2015 12:36:37 +0000 (08:36 -0400)]
misc/ios: retry loop to handle builder flakiness

After moving the darwin/arm builder to new hardware several new flaky
error messages appeared. This provided enough information to Google
to make it clear that iOS build systems have been flaky for many
years, and that is unlikely to change any time soon.

However, all of the pain of lldb and using a breakpoint early in
program initialization gives us an advantage: all install and
initialization flakiness appears to happen before the Go program ever
gets going. So if we see an error or we timeout before we reach our
breakpoint (before any test code has executed), we can assume it is
the fault of the builder and restart without risking hiding a flaky
Go test.

This code has successfully processed the last 8 builds. I am hopeful.

Change-Id: Ide24aaae4fa7bdab9d8f4432bb85d8f2256c7606
Reviewed-on: https://go-review.googlesource.com/8241
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
10 years agoiostest.bash: build script for iOS
David Crawshaw [Mon, 30 Mar 2015 12:47:07 +0000 (08:47 -0400)]
iostest.bash: build script for iOS

In the spirit of nacltest.bash and androidtest.bash. Sets up the
exec script and reboots the device.

The reboot helps make sure previous runs do not interfere with the
current run. It is reasonably easy for a bad program, e.g. one with
a corrupt stack, to get the device stuck.

Change-Id: I61317527741c45a70c390fe21adc4895510fc79f
Reviewed-on: https://go-review.googlesource.com/8242
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
10 years agocmd/internal/gc: convert some comment text from C to Go syntax
David Chase [Fri, 27 Mar 2015 16:34:45 +0000 (12:34 -0400)]
cmd/internal/gc: convert some comment text from C to Go syntax

Change-Id: Icbc42bcff5a3eabe9f43cff7fcc126141e209ded
Reviewed-on: https://go-review.googlesource.com/8203
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocmd/gc: allocate backing storage for non-escaping interfaces on stack
David Chase [Fri, 27 Mar 2015 15:21:14 +0000 (11:21 -0400)]
cmd/gc: allocate backing storage for non-escaping interfaces on stack

Extend escape analysis to convT2E and conT2I. If the interface value
does not escape supply runtime with a stack buffer for the object copy.

This is a straight port from .c to .go of Dmitry's patch

Change-Id: Ic315dd50d144d94dd3324227099c116be5ca70b6
Reviewed-on: https://go-review.googlesource.com/8201
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
10 years agocrypto/x509: skip SHA2 system verify test if not supported.
Daniel Theophanes [Mon, 30 Mar 2015 00:36:05 +0000 (17:36 -0700)]
crypto/x509: skip SHA2 system verify test if not supported.

Windows XP SP2 and Windows 2003 do not support SHA2.

Change-Id: Ica5faed040e9ced8b79fe78d512586e0e8788b3f
Reviewed-on: https://go-review.googlesource.com/8167
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agoruntime: make "write barriers are not allowed" comments more precise
Austin Clements [Sun, 29 Mar 2015 14:20:54 +0000 (10:20 -0400)]
runtime: make "write barriers are not allowed" comments more precise

Currently, various functions are marked with the comment

  // May run without a P, so write barriers are not allowed.

However, "running without a P" is ambiguous. We intended these to mean
that m.p may be nil (which is the condition checked by the write
barrier). The comment could also be taken to mean that a
stop-the-world may happen, which is not the case for these functions
because they run in situations where there is in fact a function on
the stack holding a P locally, it just isn't in m.p.

Change these comments to state precisely what we mean, that m.p may be
nil.

Change-Id: I4a4a1d26aebd455e5067540e13b9f96a7482146c
Reviewed-on: https://go-review.googlesource.com/8209
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agomime/quotedprintable: add binary mode to the writer
Alexandre Cesaro [Fri, 20 Mar 2015 14:27:35 +0000 (15:27 +0100)]
mime/quotedprintable: add binary mode to the writer

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

10 years agotest: add tests for escape analysis of function parameters
Dmitry Vyukov [Thu, 19 Feb 2015 16:10:31 +0000 (19:10 +0300)]
test: add tests for escape analysis of function parameters

False positives (var incorrectly escapes) are marked with BAD.

Change-Id: I002ac5965ec6748adafa2c4c657c97d8f7ff75d0
Reviewed-on: https://go-review.googlesource.com/5311
Reviewed-by: Keith Randall <khr@golang.org>
10 years agoio: clarify the behavior of PipeWriter.CloseWithError(nil).
Aaron Jacobs [Thu, 26 Mar 2015 20:31:31 +0000 (07:31 +1100)]
io: clarify the behavior of PipeWriter.CloseWithError(nil).

The previous wording implied that reads would return no error, rather
than EOF. It's convenient for users to know that Close() is equivalent
to CloseWithError(nil) because it can remove a branch from their error
handling code where they want to close the pipe in the appropriate way.
For example:

    https://github.com/jacobsa/gcloud/blob/6e9a8cec0a3f0834da3e9c9725dfe0bf79cccebb/gcs/bucket.go#L637-L643

Change-Id: I618bffe556eb518011e7ba5cdce1eb0ff536350e
Reviewed-on: https://go-review.googlesource.com/8152
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agomime: tighten up and simplify tests
Brad Fitzpatrick [Sun, 29 Mar 2015 19:21:15 +0000 (21:21 +0200)]
mime: tighten up and simplify tests

Don't test so much at once.

Fixes #10278

Change-Id: I32a9cb81a3cffecc7ce4f83c35a4b589bcd3a9f7
Reviewed-on: https://go-review.googlesource.com/8213
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

10 years agoruntime: do not use AddVectoredContinueHandler on Windows XP/2003.
Daniel Theophanes [Sat, 28 Mar 2015 06:03:22 +0000 (23:03 -0700)]
runtime: do not use AddVectoredContinueHandler on Windows XP/2003.

When Windows Error Reporting dialog is disabled on amd64
Windows XP or 2003, the continue handler does not fire. Newer
versions work correctly regardless of WER.

Fixes #10162

Change-Id: I84ea36ee188b34d1421a8db6231223cf61b4111b
Reviewed-on: https://go-review.googlesource.com/8165
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
10 years agoruntime/pprof: fix data race in test
Dmitry Vyukov [Sat, 28 Mar 2015 13:14:18 +0000 (16:14 +0300)]
runtime/pprof: fix data race in test

rp.Close happened concurrently with rp.Read. Order them.

Fixes #10280

Change-Id: I7b083bcc336d15396c4e42fc4654ba34fad4a4cc
Reviewed-on: https://go-review.googlesource.com/8211
Reviewed-by: Dave Cheney <dave@cheney.net>
10 years agotest: add tests for escape analysis of interface conversions
Dmitry Vyukov [Thu, 19 Feb 2015 13:27:32 +0000 (16:27 +0300)]
test: add tests for escape analysis of interface conversions

The false positives (var incorrectly escapes) are marked with BAD.

Change-Id: If64fabb6ea96de44a1177d9ab12e2ccc579fe0c4
Reviewed-on: https://go-review.googlesource.com/5294
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: add tests for escape analysis of closure arguments
Dmitry Vyukov [Thu, 19 Feb 2015 12:57:03 +0000 (15:57 +0300)]
test: add tests for escape analysis of closure arguments

10 false positives (var incorrectly escapes to heap) are marked with BAD.

Change-Id: I773b13a18ff55aaa499a2a28a979118422cc5322
Reviewed-on: https://go-review.googlesource.com/5293
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: fix build
Dmitry Vyukov [Sat, 28 Mar 2015 14:08:53 +0000 (17:08 +0300)]
test: fix build

Fix build after http://golang.org/cl/5297
The compiler was changed to not print implicit map capacity in error messages.

Change-Id: I852f668680c3c69c5eecc7964e46202a97014d6a
Reviewed-on: https://go-review.googlesource.com/8212
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
10 years agotest: add tests for indirection level computation in escape analysis
Dmitry Vyukov [Thu, 19 Feb 2015 12:44:08 +0000 (15:44 +0300)]
test: add tests for indirection level computation in escape analysis

The false positive (var incorrectly escapes to heap) is marked with BAD.

Change-Id: I11877fa8e976094b31a221abd88ae32d351c85ee
Reviewed-on: https://go-review.googlesource.com/5292
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: add escape analysis tests form maps
Dmitry Vyukov [Thu, 19 Feb 2015 15:14:13 +0000 (18:14 +0300)]
test: add escape analysis tests form maps

False positives (var incorrectly escapes) are marked with BAD.

Change-Id: I8383fa3f77e2156d781d994968636ba9a17bb975
Reviewed-on: https://go-review.googlesource.com/5297
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: add tests for escape analysis when assigning to indirections
Dmitry Vyukov [Thu, 19 Feb 2015 14:39:17 +0000 (17:39 +0300)]
test: add tests for escape analysis when assigning to indirections

False positives (var incorrectly escapes) are marked with BAD.

Change-Id: I0114d87ee467fe1e3b27642f8c5a04d4a9664211
Reviewed-on: https://go-review.googlesource.com/5295
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: add escape analysis tests for fields
Dmitry Vyukov [Thu, 19 Feb 2015 20:30:05 +0000 (23:30 +0300)]
test: add escape analysis tests for fields

False positives (var incorrectly escapes) are marked with BAD.

Change-Id: I3027b6e0f5b48325e6169599400cc59e1394809f
Reviewed-on: https://go-review.googlesource.com/5431
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: add tests for escape analysis of slices
Dmitry Vyukov [Thu, 19 Feb 2015 15:30:08 +0000 (18:30 +0300)]
test: add tests for escape analysis of slices

False positives (var incorrectly escapes) are marked with BAD.

Change-Id: I9e9a3f71b060520103bcf289829a2efdf6f2b517
Reviewed-on: https://go-review.googlesource.com/5298
Reviewed-by: Keith Randall <khr@golang.org>
10 years agotest: add additional ... tests for escape analysis
Dmitry Vyukov [Thu, 19 Feb 2015 14:54:55 +0000 (17:54 +0300)]
test: add additional ... tests for escape analysis

False positives (var incorrectly escapes) are marked with BAD.

Change-Id: I646a29ffe24d963c63db09cba81dbc101d7c7242
Reviewed-on: https://go-review.googlesource.com/5296
Reviewed-by: Keith Randall <khr@golang.org>
10 years agoos: give race detector chance to override Exit(0)
Dmitry Vyukov [Tue, 10 Feb 2015 14:26:26 +0000 (17:26 +0300)]
os: give race detector chance to override Exit(0)

Racy tests do not fail currently, they do os.Exit(0).
So if you run go test without -v, you won't even notice.
This was probably introduced with testing.TestMain.

Racy programs do not have the right to finish successfully.

Change-Id: Id133d7424f03d90d438bc3478528683dd02b8846
Reviewed-on: https://go-review.googlesource.com/4371
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agonet: simplify test helpers
Mikio Hara [Thu, 26 Mar 2015 14:26:45 +0000 (23:26 +0900)]
net: simplify test helpers

This change consolidates test helpers that test platform capabilities.
testNetwork, testAddress and testListenArgs report whether given
ariguments are testable on the current platform configuration to
mitigate to receive weird test results.

Change-Id: Ie1ed568a1f9cc50f3155945ea01562904bc2c389
Reviewed-on: https://go-review.googlesource.com/8076
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/go: add -asmflags build flag
Srdjan Petrovic [Tue, 17 Mar 2015 18:57:11 +0000 (11:57 -0700)]
cmd/go: add -asmflags build flag

We need this in order to pass the "-shared" flag to the assembler.

Change-Id: I9c15cfe4d32c1e5e8cae1b9b2c924cfd77923b55
Reviewed-on: https://go-review.googlesource.com/7694
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd: linker changes for shared library initialization
Srdjan Petrovic [Tue, 17 Mar 2015 16:47:01 +0000 (09:47 -0700)]
cmd: linker changes for shared library initialization

Suggested by iant@, this change:
  - looks for a symbol _rt0_<GOARCH>_<GOOS>_lib,
  - if the symbol is present, adds a new entry into the .init_array ELF
    section that points to the symbol.

The end-effect is that the symbol _rt0_<GOARCH>_<GOOS>_lib will be
invoked as soon as the (ELF) shared library is loaded, which will in turn
initialize the runtime. (To be implemented.)

Change-Id: I99911a180215a6df18f8a18483d12b9b497b48f4
Reviewed-on: https://go-review.googlesource.com/7692
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agomath/big: fix copy-paste mistake in int_test.go
Jeremy Schlatter [Fri, 27 Mar 2015 03:29:06 +0000 (03:29 +0000)]
math/big: fix copy-paste mistake in int_test.go

Change-Id: If986ed2cf94efba92763d00a3182047c05d6f805
Reviewed-on: https://go-review.googlesource.com/8133
Reviewed-by: Minux Ma <minux@golang.org>
10 years agocmd/go: small code reorganization
Jeremy Schlatter [Fri, 27 Mar 2015 01:59:31 +0000 (01:59 +0000)]
cmd/go: small code reorganization

covermode is not passed to 6.out, so it should not be grouped
with the flags that are. Move it to the "local" section.

Change-Id: Id487898962e7ab7adf98b0854c2f1802116bec11
Reviewed-on: https://go-review.googlesource.com/8132
Reviewed-by: Minux Ma <minux@golang.org>
10 years agodoc/go1.5.txt: add ExtensionByType to mime
Josh Bleecher Snyder [Fri, 27 Mar 2015 18:11:54 +0000 (11:11 -0700)]
doc/go1.5.txt: add ExtensionByType to mime

Change-Id: Iacbf06cf30a8a9630d8ee1f6934cbdef93ae0fc9
Reviewed-on: https://go-review.googlesource.com/8163
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
10 years agoruntime/pprof: fix TestCPUProfileWithFork for GOOS=android.
Hyang-Ah Hana Kim [Fri, 27 Mar 2015 00:02:50 +0000 (20:02 -0400)]
runtime/pprof: fix TestCPUProfileWithFork for GOOS=android.

1) Large allocation in this test caused crash. This was not
detected by builder because builder runs tests with -test.short.

2) The command "go" for forking doesn't exist in some platforms
including android. This change uses the test binary itself which
is guaranteed to exist.

This change also adds logging of the total samples collected in
TestCPUProfileMultithreaded test that is flaky in android-arm
builder.

Change-Id: I225c6b7877d811edef8b25e7eb00559450640c42
Reviewed-on: https://go-review.googlesource.com/8131
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

10 years agosyscall: apply the errno allocation fix to other operating systems
Brad Fitzpatrick [Fri, 27 Mar 2015 09:08:19 +0000 (10:08 +0100)]
syscall: apply the errno allocation fix to other operating systems

The previously-submitted https://go-review.googlesource.com/#/c/6701
didn't include dragonfly, freebsd, nacl, netbsd, openbsd, or solaris.
(or things like darwin/arm or ppc64 or arm64)

So do them all.

Note I had to copy the function into tables_nacl.go. I found that
preferable to creating a new file just to have suitable build
tags. It's likely this function will be mirrored to plan9 and windows
later too, each of the 4 with their own policy of which error values
are common.

The corresponding x/sys CL for this CL is https://golang.org/cl/8190
but it excludes nacl (not in x/sys) and solaris (already broken).

Update Issue #8859

Change-Id: I91902615692b29b69c905edd9e126a26337294f6
Reviewed-on: https://go-review.googlesource.com/8192
Reviewed-by: Rob Pike <r@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

10 years agomime: add ExtensionByType method
Nick Cooper [Thu, 12 Mar 2015 00:23:44 +0000 (11:23 +1100)]
mime: add ExtensionByType method

Added the inverse of TypeByExtension for discovering an appropriate
extensions for a given MIME type.

Fixes #10144

Change-Id: I6a80e1af3db5d45ad6a4c7ff4ccfdf6a4f424367
Reviewed-on: https://go-review.googlesource.com/7444
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agonet: reenable a previously skipped test
Brad Fitzpatrick [Fri, 27 Mar 2015 09:19:17 +0000 (10:19 +0100)]
net: reenable a previously skipped test

Update #8859

Change-Id: I5b0005b308e83954a495f06d27b7d8d30e813820
Reviewed-on: https://go-review.googlesource.com/8193
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agodoc: add more performance items to go1.5.txt
Brad Fitzpatrick [Fri, 27 Mar 2015 13:25:25 +0000 (14:25 +0100)]
doc: add more performance items to go1.5.txt

Change-Id: Ia7a08bc855db87890d35b2a1667e245ce5ecf472
Reviewed-on: https://go-review.googlesource.com/8197
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agotesting/quick: fix comment
Dmitry Vyukov [Fri, 27 Mar 2015 12:47:44 +0000 (15:47 +0300)]
testing/quick: fix comment

There is no top-level Values function.

Change-Id: I3ea2eea0b5f77f3e1a3f75d1a6472507ef2888bb
Reviewed-on: https://go-review.googlesource.com/8196
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agodoc/go1.5.txt: fix URL for a CL
Damian Gryski [Fri, 27 Mar 2015 09:12:00 +0000 (10:12 +0100)]
doc/go1.5.txt: fix URL for a CL

Change-Id: I6a91d255b9e9f66b0288b82af4303f9a9b4b373c
Reviewed-on: https://go-review.googlesource.com/8191
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>