]> Cypherpunks repositories - gostls13.git/log
gostls13.git
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>
10 years agosyscall: don't allocate when boxing common Errno values into errors
Brad Fitzpatrick [Wed, 4 Mar 2015 00:42:06 +0000 (16:42 -0800)]
syscall: don't allocate when boxing common Errno values into errors

Fixes #8859

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

10 years agoimage/draw: fix golden test for YCbCr.RGBA change.
Nigel Tao [Fri, 27 Mar 2015 00:28:33 +0000 (11:28 +1100)]
image/draw: fix golden test for YCbCr.RGBA change.

The previous change was
https://go-review.googlesource.com/#/c/8073/

Change-Id: I0c48502d1ba90fb5d41c5e66346a8e7f4ee87ce7
Reviewed-on: https://go-review.googlesource.com/8151
Reviewed-by: Nigel Tao <nigeltao@golang.org>
10 years agoimage/color: have YCbCr.RGBA work in 16-bit color, per the Color
Nigel Tao [Wed, 25 Mar 2015 22:47:24 +0000 (09:47 +1100)]
image/color: have YCbCr.RGBA work in 16-bit color, per the Color
interface.

Change-Id: Ie025753df08ae93e7a5095a3426aff15fa2016fd
Reviewed-on: https://go-review.googlesource.com/8073
Reviewed-by: Rob Pike <r@golang.org>
10 years agoruntime: disallow write barriers in handoffp and callees
Austin Clements [Thu, 26 Mar 2015 19:50:22 +0000 (15:50 -0400)]
runtime: disallow write barriers in handoffp and callees

handoffp by definition runs without a P, so it's not allowed to have
write barriers. It doesn't have any right now, but mark it
nowritebarrier to disallow any creeping in in the future. handoffp in
turns calls startm, newm, and newosproc, all of which are "below Go"
and make sense to run without a P, so disallow write barriers in these
as well.

For most functions, we've done this because they may race with
stoptheworld() and hence must not have write barriers. For these
functions, it's a little different: the world can't stop while we're
in handoffp, so this race isn't present. But we implement this
restriction with a somewhat broader rule that you can't have a write
barrier without a P. We like this rule because it's simple and means
that our write barriers can depend on there being a P, even though
this rule is actually a little broader than necessary. Hence, even
though there's no danger of the race in these functions, we want to
adhere to the broader rule.

Change-Id: Ie22319c30eea37d703eb52f5c7ca5da872030b88
Reviewed-on: https://go-review.googlesource.com/8130
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Minux Ma <minux@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agoruntime: don't trigger write barrier in newosproc for nacl
Shenghou Ma [Tue, 24 Mar 2015 03:13:11 +0000 (23:13 -0400)]
runtime: don't trigger write barrier in newosproc for nacl

This should fix the intermittent calling write barrier with mp.p == nil
failures on the nacl/386 builder.

Change-Id: I34aef5ca75ccd2939e6a6ad3f5dacec64903074e
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7973
Reviewed-by: Austin Clements <austin@google.com>
10 years agotime: add a thorough example for time.Format
Rob Pike [Fri, 20 Mar 2015 21:01:51 +0000 (14:01 -0700)]
time: add a thorough example for time.Format

People will still not look at it, but at least we will have a stronger defense.

Change-Id: Ieea6a3d42d06e1067e424e35b87dbcb01c9523cb
Reviewed-on: https://go-review.googlesource.com/7859
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agosyscall: change Dup,Dup2,Dup3 to use Syscall, not RawSyscall
Ian Lance Taylor [Thu, 26 Mar 2015 15:02:16 +0000 (08:02 -0700)]
syscall: change Dup,Dup2,Dup3 to use Syscall, not RawSyscall

This avoids hanging when a Go program uses a FUSE filesystem and the
dup system call has to close a file descriptor.  When dup uses
RawSyscall then the goroutine calling dup will occupy a scheduler slot
(a p structure) during the call, and may block waiting for some other
goroutine to respond to the close call on the FUSE filesystem.
Changing to Syscall avoids the problem.  This makes Dup a tiny bit
slower but is quite unlikely to make a difference for any real
programs.

Fixes #10202.

Change-Id: If6490a8f9b3c9cfed6acbfb4bfd1eaeac62ced17
Reviewed-on: https://go-review.googlesource.com/8095
Reviewed-by: Rob Pike <r@golang.org>
10 years agoruntime: use uintXX instead of *byte for si_addr on Darwin
Austin Clements [Thu, 26 Mar 2015 16:14:26 +0000 (12:14 -0400)]
runtime: use uintXX instead of *byte for si_addr on Darwin

Currently, Darwin's siginfo type uses *byte for the si_addr
field. This results in unwanted write barriers in set_sigaddr. It's
also pointless since it never points to anything real and the get/set
methods return/take uintXX and cast it from/to the pointer.

All other arches use a uint type for this field. Change Darwin to
match. This simplifies the get/set methods and eliminates the unwanted
write barriers.

Change-Id: Ifdb5646d35e1f2f6808b87a3d59745ec9718add1
Reviewed-on: https://go-review.googlesource.com/8086
Reviewed-by: Austin Clements <austin@google.com>
10 years agoruntime: remove write barrier on G in sighandler
Austin Clements [Tue, 24 Mar 2015 15:51:24 +0000 (11:51 -0400)]
runtime: remove write barrier on G in sighandler

sighandler may run during a stop-the-world without a P, so it's not
allowed to have write barriers. Fix the G write to disable the write
barrier (this is safe because the G is reachable from allgs) and mark
the function nowritebarrier.

Change-Id: I907f05d3829e24eeb15fa4d020598af36710e87e
Reviewed-on: https://go-review.googlesource.com/8020
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agosyscall: regenerate zsyscall_darwin_arm.go
Ian Lance Taylor [Wed, 25 Mar 2015 00:31:31 +0000 (17:31 -0700)]
syscall: regenerate zsyscall_darwin_arm.go

This is mostly straightforward but it does introduce an odd change to
Fchflags and adds the Mlock related functions.  These changes look
correct to me but I don't know why they weren't in the original file.

Change-Id: I1a01e075566d327a78b77e7354c9fb85b6ad1f22
Reviewed-on: https://go-review.googlesource.com/8062
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
10 years agoruntime, runtime/cgo: make needextram a bool
David Crawshaw [Wed, 25 Mar 2015 11:10:45 +0000 (07:10 -0400)]
runtime, runtime/cgo: make needextram a bool

Also invert it, which means it no longer needs to cross the cgo
package boundary.

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

10 years agodoc/go1.5.txt: add $DOLLAR to generate
Rob Pike [Thu, 26 Mar 2015 00:29:33 +0000 (17:29 -0700)]
doc/go1.5.txt: add $DOLLAR to generate

Change-Id: I6d129ef56baa2c0c5e0b278cfa67fc22f3bf18ac
Reviewed-on: https://go-review.googlesource.com/8052
Reviewed-by: Rob Pike <r@golang.org>
10 years agocmd/go: add $DOLLAR to the predefined variables for go generate
Rob Pike [Wed, 25 Mar 2015 20:17:54 +0000 (13:17 -0700)]
cmd/go: add $DOLLAR to the predefined variables for go generate

Without some hook like this, it's impossible to get a $ into the generate
command, which is necessary if you're trying to do some shell scripting
or regular expressions.

We could use backslash escaping but that's already tricky enough
because the strings are processed as Go strings. Using $ like this
means we need no more mechanism, just a predefined variable.

We may need to revisit this but I hope we can avoid new quoting rules.

Change-Id: Ieb478c8cc767a866765282472239ed3c1e5669a8
Reviewed-on: https://go-review.googlesource.com/8091
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoruntime: add runtime.cmpstring and bytes.Compare
Dave Cheney [Tue, 24 Mar 2015 09:37:10 +0000 (09:37 +0000)]
runtime: add runtime.cmpstring and bytes.Compare

Update #10007

Implement runtime.cmpstring and bytes.Compare in asm for arm.

benchmark                                old ns/op     new ns/op     delta
BenchmarkCompareBytesEqual               254           91.4          -64.02%
BenchmarkCompareBytesToNil               41.5          37.6          -9.40%
BenchmarkCompareBytesEmpty               40.7          37.6          -7.62%
BenchmarkCompareBytesIdentical           255           96.3          -62.24%
BenchmarkCompareBytesSameLength          125           60.9          -51.28%
BenchmarkCompareBytesDifferentLength     133           60.9          -54.21%
BenchmarkCompareBytesBigUnaligned        17985879      5669706       -68.48%
BenchmarkCompareBytesBig                 17097634      4926798       -71.18%
BenchmarkCompareBytesBigIdentical        16861941      4389206       -73.97%

benchmark                             old MB/s     new MB/s     speedup
BenchmarkCompareBytesBigUnaligned     58.30        184.95       3.17x
BenchmarkCompareBytesBig              61.33        212.83       3.47x
BenchmarkCompareBytesBigIdentical     62.19        238.90       3.84x

This is a collaboration between Josh Bleecher Snyder and myself.

Change-Id: Ib3944b8c410d0e12135c2ba9459bfe131df48edd
Reviewed-on: https://go-review.googlesource.com/8010
Reviewed-by: Keith Randall <khr@golang.org>
10 years agoimage/internal/imageutil: inline the color.YCbCrToRGB calls.
Nigel Tao [Tue, 24 Mar 2015 00:45:29 +0000 (11:45 +1100)]
image/internal/imageutil: inline the color.YCbCrToRGB calls.

The image/draw benchmark:
benchmark          old ns/op     new ns/op     delta
BenchmarkYCbCr     1198605       978647        -18.35%

Change-Id: Iacfc21e6f641ecb05adc00b3aec0048f1f43d265
Reviewed-on: https://go-review.googlesource.com/7952
Reviewed-by: Rob Pike <r@golang.org>
10 years agomisc/ios: simplify breakpoint timeout
David Crawshaw [Wed, 25 Mar 2015 17:22:32 +0000 (13:22 -0400)]
misc/ios: simplify breakpoint timeout

The clever partial timer I added interacts badly with iOS app launch
timeout termination. A fixed timeout will be easier to debug.

Change-Id: I6eb4ee5f1431539f00fa707e8cde6f3cf86983fc
Reviewed-on: https://go-review.googlesource.com/8083
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
10 years agomisc/ios: timeout and continue waiting for getwd
David Crawshaw [Wed, 25 Mar 2015 00:52:11 +0000 (20:52 -0400)]
misc/ios: timeout and continue waiting for getwd

Split out from cl/8024 for clarity and improved approach.

Rarely, "stop reason = breakpoint" does not appear in the lldb stop
text. However the program is ready to proceed. To be a little more
robust about those cases, we wait for two seconds, and if that text
doesn't appear but a prompt does we continue and hope for the best.
Worst case, this results in a harder to read failure message.

Change-Id: Ib20aa92564cdccefd2b7260417c647cd44122b66
Reviewed-on: https://go-review.googlesource.com/8080
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
10 years agocrypto/tls: Correct minimum version in comment
Matt Bostock [Sun, 22 Feb 2015 01:14:36 +0000 (01:14 +0000)]
crypto/tls: Correct minimum version in comment

Commit 604fa4d5 made TLS 1.0 the default minimum version. This commit
amends a comment to reflect that.

This is where the default is used in the absence of an explicit version
being set:
https://github.com/golang/go/blob/edadffa2f3464c48a234f3cf2fc092a03f91824f/src/crypto/tls/common.go#L391-L393

Change-Id: I8f1117ecdddc85bb1cc76a6834026505a380b793
Reviewed-on: https://go-review.googlesource.com/5525
Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Adam Langley <agl@golang.org>
10 years agoruntime: remove obsolete comment
Alex Brainman [Wed, 25 Mar 2015 01:00:54 +0000 (12:00 +1100)]
runtime: remove obsolete comment

We do not use SEH to handle Windows exception anymore.

Change-Id: I0ac807a0fed7a5b4c745454246764c524460472b
Reviewed-on: https://go-review.googlesource.com/8071
Reviewed-by: Minux Ma <minux@golang.org>
10 years agodoc/go1.5: add nacl get_random_bytes change, pepper-39+ required
Shenghou Ma [Wed, 25 Mar 2015 02:31:35 +0000 (22:31 -0400)]
doc/go1.5: add nacl get_random_bytes change, pepper-39+ required

Change-Id: Ib7374dc87fa4d4ad5854155049e511a1ff51ca97
Reviewed-on: https://go-review.googlesource.com/8081
Reviewed-by: Minux Ma <minux@golang.org>
10 years agoruntime, syscall: use the new get_random_bytes syscall for NaCl
Shenghou Ma [Thu, 18 Dec 2014 08:26:08 +0000 (03:26 -0500)]
runtime, syscall: use the new get_random_bytes syscall for NaCl

The SecureRandom named service was removed in
https://codereview.chromium.org/550523002. And the new syscall
was introduced in https://codereview.chromium.org/537543003.

Accepting this will remove the support for older version of
sel_ldr. I've confirmed that both pepper_40 and current
pepper_canary have this syscall.

After this change, we need sel_ldr from pepper_39 or above to
work.

Fixes #9261

Change-Id: I096973593aa302ade61f259a3a71ebc7c1a57913
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/1755
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>

10 years agoos/exec: post-process lsof output on Android.
Hyang-Ah (Hana) Kim [Tue, 24 Mar 2015 20:42:34 +0000 (16:42 -0400)]
os/exec: post-process lsof output on Android.

lsof is used to inspect the open file desciptors in exec_test.go.
In order to limit the output of lsof to the tested process, the tests use
lsof with the -p option, but the version of lsof in android seems to ignore
it. This change adds a post-processing step to filter out irrelevant entries.

Fixes golang/go#10206.

Change-Id: Ia789b8f5e1e9b95c7b55deac92d0d1fbf3ee74fb
Reviewed-on: https://go-review.googlesource.com/8025
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agonet/internal/socktest: new package
Mikio Hara [Thu, 26 Feb 2015 08:52:26 +0000 (17:52 +0900)]
net/internal/socktest: new package

Package socktest provides utilities for socket testing.

This package allows test cases in the net package to simulate
complicated network conditions such as that a destination address is
resolvable/discoverable but is not routable/reachable at network layer.
Those conditions are required for testing functionality of timeout,
multiple address families.

Change-Id: Idbe32bcc3319b41b0cecac3d058014a93e13288b
Reviewed-on: https://go-review.googlesource.com/6090
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agonacltest.bash: reduce test time by using bootstrapping Go to build fstest_nacl.go
Shenghou Ma [Tue, 24 Mar 2015 06:23:22 +0000 (02:23 -0400)]
nacltest.bash: reduce test time by using bootstrapping Go to build fstest_nacl.go

One full round of make.bash is saved with this change.

Change-Id: I8ad1442e9e1255b9abe14dbfec4c903d897d6015
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7976
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocmd/6g: fix build for nacl/amd64p32
Shenghou Ma [Tue, 24 Mar 2015 06:07:20 +0000 (02:07 -0400)]
cmd/6g: fix build for nacl/amd64p32

Change-Id: I3de78f321c99f8f850a304f7d34c85d0fe254c0e
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7975
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Rob Pike <r@golang.org>
10 years agonet/url: fix docs for URL.String
Shenghou Ma [Tue, 24 Mar 2015 04:04:42 +0000 (00:04 -0400)]
net/url: fix docs for URL.String

Fixes #10227.

Change-Id: I64d5522e76da5a717e3c4169405e5ef35d6c262e
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7974
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agomime/quotedprintable: accept badly encoded bytes
Alexandre Cesaro [Fri, 20 Mar 2015 11:22:49 +0000 (12:22 +0100)]
mime/quotedprintable: accept badly encoded bytes

RFC 2045 says:
    An "=" followed by two hexadecimal digits, one or both
    of which are lowercase letters in "abcdef", is formally
    illegal. A robust implementation might choose to
    recognize them as the corresponding uppercase letters.

    https://tools.ietf.org/html/rfc2045#page-22

Change-Id: Ibb4b1e4b8bf4fa65ff895ba486a931d90308bf70
Reviewed-on: https://go-review.googlesource.com/7891
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocmd/8g, cmd/internal/gc: fix GO386=387 build
Dave Cheney [Tue, 24 Mar 2015 11:16:48 +0000 (22:16 +1100)]
cmd/8g, cmd/internal/gc: fix GO386=387 build

Adjust Thearch.FREG_MIN/MAX when using non sse2 mode in 8g.

Also, gc.Use_sse is treated as a bool, so make it a bool.

Change-Id: I840411605344bb31c32f492b3e6729166c084f0c
Reviewed-on: https://go-review.googlesource.com/7993
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
Run-TryBot: Dave Cheney <dave@cheney.net>

10 years agomath/big: fix known bug in Float.Float64
Robert Griesemer [Tue, 24 Mar 2015 00:31:25 +0000 (17:31 -0700)]
math/big: fix known bug in Float.Float64

- handle exponent over- and underflow
- handle denormalized numbers
- added test cases

Change-Id: I1bbb9904b0c104f54696944e1f57559881f6eeeb
Reviewed-on: https://go-review.googlesource.com/7982
Reviewed-by: Alan Donovan <adonovan@google.com>
10 years agocmd/dist: add test to usage message's list of commands
Brad Fitzpatrick [Tue, 24 Mar 2015 20:16:03 +0000 (13:16 -0700)]
cmd/dist: add test to usage message's list of commands

Change-Id: Id1edbed38c94e7c1c13a0200c44edf2b9ae5f087
Reviewed-on: https://go-review.googlesource.com/8040
Reviewed-by: David Crawshaw <crawshaw@golang.org>
10 years agoruntime, syscall: fix Solaris exec tests
Aram Hăvărneanu [Tue, 24 Mar 2015 17:33:37 +0000 (18:33 +0100)]
runtime, syscall: fix Solaris exec tests

Also fixes a long-existing problem in the fork/exec path.

Change-Id: Idec40b1cee0cfb1625fe107db3eafdc0d71798f2
Reviewed-on: https://go-review.googlesource.com/8030
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
10 years agocmd/7g: fix linux/arm64 build
Shenghou Ma [Tue, 24 Mar 2015 06:56:07 +0000 (02:56 -0400)]
cmd/7g: fix linux/arm64 build

REGRT1 and REGRT2 are also reserved on arm64 for runtime (duffzero
and duffcopy).

Change-Id: If098527a7f29d16f94bdcec05fd55950b9076e35
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7977
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Rob Pike <r@golang.org>
10 years agosyscall: use Getpgid to emulate Getpgrp on linux
Shenghou Ma [Tue, 24 Mar 2015 17:11:43 +0000 (13:11 -0400)]
syscall: use Getpgid to emulate Getpgrp on linux

Fixes newly introduced test on linux/arm64 because linux/arm64 doesn't
have the getpgrp syscall. Getpgid(0) is documented to be equivalent to
Getpgrp.

Change-Id: I8f30f4f8de8c32fe04a29c9c4a9330d4e4e6b46d
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/8022
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
Reviewed-by: Rob Pike <r@golang.org>
10 years agoruntime: initialize extra M for cgo during mstart
David Crawshaw [Tue, 24 Mar 2015 13:22:35 +0000 (09:22 -0400)]
runtime: initialize extra M for cgo during mstart

Previously the extra m needed for cgo callbacks was created on the
first callback. This works for cgo, however the cgocallback mechanism
is also borrowed by badsignal which can run before any cgo calls are
made.

Now we initialize the extra M at runtime startup before any signal
handlers are registered, so badsignal cannot be called until the
extra M is ready.

Updates #10207.

Change-Id: Iddda2c80db6dc52d8b60e2b269670fbaa704c7b3
Reviewed-on: https://go-review.googlesource.com/7978
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>

10 years agodoc/go1.4.html: fix typo
Shenghou Ma [Tue, 24 Mar 2015 16:58:51 +0000 (12:58 -0400)]
doc/go1.4.html: fix typo

Change-Id: I5bfeeef53665b1ef79ec0e4a6ae0eb4aa3e95603
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/8021
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agoruntime: Remove write barrier on g
Rick Hudson [Tue, 24 Mar 2015 15:18:46 +0000 (11:18 -0400)]
runtime: Remove write barrier on g

There are calls to stdcall when the GC thinks the world is stopped
and stdcall write a *g for the CPU profiler. This produces a write
barrier but the GC is not prepared to deal with write barriers when
it thinks the world is stopped. Since the g is on allg it does not
need a write barrier to keep it alive so eliminate the write barrier.

Change-Id: I937633409a66553d7d292d87d7d58caba1fad0b6
Reviewed-on: https://go-review.googlesource.com/7979
Reviewed-by: Austin Clements <austin@google.com>
Run-TryBot: Rick Hudson <rlh@golang.org>

10 years agoruntime: add TestCgoDLLImports
Alex Brainman [Mon, 16 Mar 2015 04:46:22 +0000 (15:46 +1100)]
runtime: add TestCgoDLLImports

The test is a simple reproduction of issue 9356.

Update #8948.
Update #9356.

Change-Id: Ia77bc36d12ed0c3c4a8b1214cade8be181c9ad55
Reviewed-on: https://go-review.googlesource.com/7618
Reviewed-by: Minux Ma <minux@golang.org>
10 years agodoc/go1.5: mention external linking support for windows
Shenghou Ma [Sat, 14 Mar 2015 02:36:51 +0000 (22:36 -0400)]
doc/go1.5: mention external linking support for windows

Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e33
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7537

10 years agocmd/go: update PE header magic for files generated by GNU ld
Shenghou Ma [Sat, 14 Mar 2015 02:12:59 +0000 (22:12 -0400)]
cmd/go: update PE header magic for files generated by GNU ld

Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e32
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7536
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/dist: enable external linking test for windows/amd64
Shenghou Ma [Sat, 14 Mar 2015 02:12:09 +0000 (22:12 -0400)]
cmd/dist: enable external linking test for windows/amd64

Fixes #4069.

Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e31
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7535
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
10 years agocmd/internal/ld, cmd/6l: external linking for windows/amd64
Shenghou Ma [Sat, 14 Mar 2015 02:10:48 +0000 (22:10 -0400)]
cmd/internal/ld, cmd/6l: external linking for windows/amd64

Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e30
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7534
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agocmd/dist: enable external linking test for windows/386
Shenghou Ma [Tue, 10 Mar 2015 08:11:30 +0000 (04:11 -0400)]
cmd/dist: enable external linking test for windows/386

Signed-off-by: Shenghou Ma <minux@golang.org>
Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e2f
Reviewed-on: https://go-review.googlesource.com/7284
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
10 years agocmd/internal/ld, cmd/8l: external linking for windows/386
Shenghou Ma [Mon, 9 Mar 2015 07:05:40 +0000 (03:05 -0400)]
cmd/internal/ld, cmd/8l: external linking for windows/386

Update #4069: this CL fixes the issue on windows/386.

Signed-off-by: Shenghou Ma <minux@golang.org>
Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e2e
Reviewed-on: https://go-review.googlesource.com/7283
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoruntime: use _main instead of main on windows/386
Shenghou Ma [Tue, 10 Mar 2015 07:26:37 +0000 (03:26 -0400)]
runtime: use _main instead of main on windows/386

windows/386 also wants underscore prefix for external names.
This CL is in preparation of external linking support.

Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e2d
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7282
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
10 years agocmd/internal/ld, runtime: record argument size for cgo_dynimport stdcall syscalls
Shenghou Ma [Mon, 9 Mar 2015 03:04:48 +0000 (23:04 -0400)]
cmd/internal/ld, runtime: record argument size for cgo_dynimport stdcall syscalls

When external linking, we must link to implib provided by mingw, so we must use
properly decorated names for stdcalls.

Because the feature is only used in the runtime, I've designed a new decoration
scheme so that we can use the same decorated name for both 386 and amd64.

A stdcall function named FooEx from bar16.dll which takes 3 parameters will be
imported like this:
//go:cgo_import_dynamic runtime._FooEx FooEx%3 "bar16.dll"
Depending on the size of uintptr, the linker will later transform it to _FooEx@12
or _FooEx@24.

This is in prepration for the next CL that adds external linking support for
windows/386.

Change-Id: I2d2ea233f976aab3f356f9b508cdd246d5013e2c
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7163
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agoos/signal: skip TestCtrlBreak on windows/386 temporarily
Shenghou Ma [Tue, 24 Mar 2015 00:41:35 +0000 (20:41 -0400)]
os/signal: skip TestCtrlBreak on windows/386 temporarily

Update #10215.

Change-Id: Ib588f90279a4ef5461492553d50ad77c742b3560
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7971
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
10 years agoimage/internal/imageutil: generate subsample-ratio-specific code.
Nigel Tao [Tue, 24 Mar 2015 00:43:36 +0000 (11:43 +1100)]
image/internal/imageutil: generate subsample-ratio-specific code.

This is in preparation for inlining the color.YCbCrToRGB calls in a
follow-up change.

Change-Id: I30750ace11a8ef6016b3c1e0b4bfdbcc8151f9a5
Reviewed-on: https://go-review.googlesource.com/7951
Reviewed-by: Rob Pike <r@golang.org>
10 years agodebug/dwarf, encoding/asn1, go/ast: fix old comments
Matthew Dempsky [Mon, 23 Mar 2015 22:28:51 +0000 (15:28 -0700)]
debug/dwarf, encoding/asn1, go/ast: fix old comments

The debug/dwarf and encoding/asn1 examples were added in 2009, a few
months before Go added implicit semicolons, and never updated.

The go/ast node types have always been named just "Expr", "Stmt", and
"Decl", so the comments about "ExprNode", "StmtNode", and "DeclNode"
were likely just mistaken because the interface tag methods are
"exprNode", "stmtNode", and "declNode", respectively.

Change-Id: I9d138cc3a16c1a51453da1406914d7b320bf6270
Reviewed-on: https://go-review.googlesource.com/7980
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocmd/internal/ld: edit into more idiomatic Go code
Matthew Dempsky [Fri, 6 Mar 2015 01:45:11 +0000 (17:45 -0800)]
cmd/internal/ld: edit into more idiomatic Go code

Instead of reimplementing chained hash tables, just use maps.

Use bool instead of uint8 for variables only set to 0 or 1.

Fix parsing of `import foo "foo" // indirect` lines.  Previously, this
was treated as an import of package path `"foo" // indirect`, which
could result in the cycle-detection code failing to detect a cycle
because it would be treated as a separate package from `"foo"`.

Also, since there are theoretically multiple quoted forms for a
package path, use strconv.Unquote to normalize them.  Side benefit:
Unquote will complain if any trailing comments sneak back in.

Aside: For most Go archives, Go package data is only present in the
__.PKGDEF member, but unless -u is used, ldpkg is only called on the
_go_.6 member.  Consequently, importcycles is a no-op when -u isn't
used as it has no package data to inspect.

Change-Id: I7076cf91a66726a8d9c5676adfea13c5532001fa
Reviewed-on: https://go-review.googlesource.com/7002
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Rob Pike <r@golang.org>
10 years agoimage/internal/imageutil: new package, used by image/draw and image/jpeg.
Nigel Tao [Mon, 23 Mar 2015 00:03:02 +0000 (11:03 +1100)]
image/internal/imageutil: new package, used by image/draw and image/jpeg.

The imageutil.DrawYCbCr function lives in an internal package because it
is needed by both the image/draw and image/jpeg packages, but it doesn't
seem right for one of those two to depend on the other.

It could eventually go into the image package, but that would require
committing to an API for the rest of Go 1.x.

Change-Id: I7b12555c970d86409365e99eef9360702aaffa30
Reviewed-on: https://go-review.googlesource.com/7925
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
10 years agocmd/go: allow go get with local path
Sebastien Binet [Fri, 27 Feb 2015 23:41:31 +0000 (00:41 +0100)]
cmd/go: allow go get with local path

Previously, running 'go get' with a local path would correctly
download the package but fail to install it.
This is because a sticky error - resulting from discovering that the
package needed to be downloaded - was still around.
Theoretically, such sticky errors would be cleared but they weren't
because the map tracking these errors were indexed with the correct
canonical import path of the package (e.g. "ex.com/x/pkg") whereas the
clearing was done with the local path (e.g. "./pkg".)

Always use the canonical import path.

Fixes #9767

Change-Id: Ia0e8a51ac591d4c833d11285da5b767ef7ed8ad2
Reviewed-on: https://go-review.googlesource.com/6266
Reviewed-by: Rob Pike <r@golang.org>
10 years agoregexp: fix link to RE2 syntax
Brad Fitzpatrick [Mon, 23 Mar 2015 19:08:11 +0000 (12:08 -0700)]
regexp: fix link to RE2 syntax

Fixes #10224

Change-Id: I21037379b4667575e51ab0b6b683138c505c3f68
Reviewed-on: https://go-review.googlesource.com/7960
Reviewed-by: David Crawshaw <crawshaw@golang.org>
10 years agodoc: add cmd/trace to go1.5.txt
Brad Fitzpatrick [Mon, 23 Feb 2015 20:17:20 +0000 (12:17 -0800)]
doc: add cmd/trace to go1.5.txt

Change-Id: I4d35a96ace71b68a91561c08fd7331859d9dd19d
Reviewed-on: https://go-review.googlesource.com/5593
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
10 years agodoc: update go1.5.txt
Brad Fitzpatrick [Mon, 23 Mar 2015 17:49:23 +0000 (10:49 -0700)]
doc: update go1.5.txt

Change-Id: Ie45d45649ea978becf84eb911cf4ace1dd237d9e
Reviewed-on: https://go-review.googlesource.com/7918
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agodoc/go1.5.txt: updated (composite literal lang. change, math/big.Float support)
Robert Griesemer [Fri, 20 Mar 2015 23:17:13 +0000 (16:17 -0700)]
doc/go1.5.txt: updated (composite literal lang. change, math/big.Float support)

Change-Id: Ib8df771957f9a5bf00bee7eb8cb361d4acd5813f
Reviewed-on: https://go-review.googlesource.com/7911
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agosyscall: disable test that forks on darwin/arm
David Crawshaw [Mon, 23 Mar 2015 16:40:00 +0000 (12:40 -0400)]
syscall: disable test that forks on darwin/arm

This test was introduced in cl/5130 and broke the darwin/arm builder.

Also check some errors, which was making the failure hard to decipher.

Change-Id: Ifb1d60b9971782cf8d2e979d83f8a81249d7ee9b
Reviewed-on: https://go-review.googlesource.com/7932
Reviewed-by: Rob Pike <r@golang.org>
10 years agomime: add "image/svg+xml" type for extension ".svg"
Joe Harrison [Mon, 23 Mar 2015 14:21:20 +0000 (14:21 +0000)]
mime: add "image/svg+xml" type for extension ".svg"

Since there is internal usage of svg files in cmd/trace served via
HTTP, add it to the (small) map of mime types.

MIME type as documented at http://www.w3.org/TR/SVG11/mimereg.html

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

10 years agoregexp: port RE2's bitstate backtracker to the regexp package
Michael Matloob [Sun, 28 Dec 2014 08:17:01 +0000 (00:17 -0800)]
regexp: port RE2's bitstate backtracker to the regexp package

This is a port of RE2's bitstate backtracker, which triggers under
the same conditions that the RE2 backtracker triggers.  However I wasn't
sure how to port over some of the optimizations in the RE2 backtracker,
and there is a ~2% penalty on benchmarks that don't trigger the backtracker.

benchmark                                 old ns/op      new ns/op      delta
BenchmarkLiteral                          312            189            -39.42%
BenchmarkNotLiteral                       4435           3001           -32.33%
BenchmarkMatchClass                       5758           4378           -23.97%
BenchmarkMatchClass_InRange               5385           4084           -24.16%
BenchmarkReplaceAll                       5291           3505           -33.76%
BenchmarkAnchoredLiteralShortNonMatch     190            200            +5.26%
BenchmarkAnchoredLiteralLongNonMatch      189            194            +2.65%
BenchmarkAnchoredShortMatch               479            304            -36.53%
BenchmarkAnchoredLongMatch                478            499            +4.39%
BenchmarkOnePassShortA                    791            798            +0.88%
BenchmarkNotOnePassShortA                 3202           1571           -50.94%
BenchmarkOnePassShortB                    614            633            +3.09%
BenchmarkNotOnePassShortB                 2685           881            -67.19%
BenchmarkOnePassLongPrefix                152            154            +1.32%
BenchmarkOnePassLongNotPrefix             505            533            +5.54%
BenchmarkMatchEasy0_32                    139            171            +23.02%
BenchmarkMatchEasy0_1K                    653            1797           +175.19%
BenchmarkMatchEasy0_32K                   12032          13346          +10.92%
BenchmarkMatchEasy0_1M                    462882         461272         -0.35%
BenchmarkMatchEasy0_32M                   15015339       15365238       +2.33%
BenchmarkMatchEasy1_32                    122            168            +37.70%
BenchmarkMatchEasy1_1K                    3339           2612           -21.77%
BenchmarkMatchEasy1_32K                   72330          71721          -0.84%
BenchmarkMatchEasy1_1M                    2545410        2652284        +4.20%
BenchmarkMatchEasy1_32M                   80072063       82609750       +3.17%
BenchmarkMatchMedium_32                   2359           1980           -16.07%
BenchmarkMatchMedium_1K                   75939          58593          -22.84%
BenchmarkMatchMedium_32K                  2450907        2501106        +2.05%
BenchmarkMatchMedium_1M                   78707697       80174418       +1.86%
BenchmarkMatchMedium_32M                  2535146010     2570896441     +1.41%
BenchmarkMatchHard_32                     4297           2960           -31.11%
BenchmarkMatchHard_1K                     133592         88997          -33.38%
BenchmarkMatchHard_32K                    4240445        4336907        +2.27%
BenchmarkMatchHard_1M                     136187006      139350238      +2.32%
BenchmarkMatchHard_32M                    4350855890     4478537306     +2.93%

benchmark                    old MB/s     new MB/s     speedup
BenchmarkMatchEasy0_32       228.74       186.11       0.81x
BenchmarkMatchEasy0_1K       1565.91      569.64       0.36x
BenchmarkMatchEasy0_32K      2723.31      2455.10      0.90x
BenchmarkMatchEasy0_1M       2265.32      2273.22      1.00x
BenchmarkMatchEasy0_32M      2234.68      2183.79      0.98x
BenchmarkMatchEasy1_32       261.08       190.22       0.73x
BenchmarkMatchEasy1_1K       306.59       391.91       1.28x
BenchmarkMatchEasy1_32K      453.03       456.88       1.01x
BenchmarkMatchEasy1_1M       411.95       395.35       0.96x
BenchmarkMatchEasy1_32M      419.05       406.18       0.97x
BenchmarkMatchMedium_32      13.56        16.16        1.19x
BenchmarkMatchMedium_1K      13.48        17.48        1.30x
BenchmarkMatchMedium_32K     13.37        13.10        0.98x
BenchmarkMatchMedium_1M      13.32        13.08        0.98x
BenchmarkMatchMedium_32M     13.24        13.05        0.99x
BenchmarkMatchHard_32        7.45         10.81        1.45x
BenchmarkMatchHard_1K        7.67         11.51        1.50x
BenchmarkMatchHard_32K       7.73         7.56         0.98x
BenchmarkMatchHard_1M        7.70         7.52         0.98x
BenchmarkMatchHard_32M       7.71         7.49         0.97x

Fixes #4154

Change-Id: Iff7fb9507f0872b320d08afc08679751ed1b28bc
Reviewed-on: https://go-review.googlesource.com/2153
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agosyscall: Add Foreground and Pgid to SysProcAttr
Michael MacInnis [Wed, 18 Feb 2015 03:23:16 +0000 (22:23 -0500)]
syscall: Add Foreground and Pgid to SysProcAttr

On Unix, when placing a child in a new process group, allow that group
to become the foreground process group. Also, allow a child process to
join a specific process group.

When setting the foreground process group, Ctty is used as the file
descriptor of the controlling terminal. Ctty has been added to the BSD
and Solaris SysProcAttr structures and the handling of Setctty changed
to match Linux.

Change-Id: I18d169a6c5ab8a6a90708c4ff52eb4aded50bc8c
Reviewed-on: https://go-review.googlesource.com/5130
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
10 years agonet/http: enable segfaulting test on darwin/arm
David Crawshaw [Mon, 23 Mar 2015 14:15:35 +0000 (10:15 -0400)]
net/http: enable segfaulting test on darwin/arm

Issue #10043 was resolved by https://golang.org/cl/7072.
This test now passes.

Change-Id: I7bdef63d9ee4edcede23613a14a2ddce14018f34
Reviewed-on: https://go-review.googlesource.com/7931
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agonet: fix TestInterfaces, TestInterfaceAddrs on platforms without loopback interface
Mikio Hara [Sun, 22 Mar 2015 21:43:43 +0000 (06:43 +0900)]
net: fix TestInterfaces, TestInterfaceAddrs on platforms without loopback interface

Fixes #10214.

Change-Id: If29d26c590eb53d4976e0a6ace0ed33aaf0c3e80
Reviewed-on: https://go-review.googlesource.com/7924
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
10 years agonet/http: ignore the Unix epoch time in ServeContent
Brad Fitzpatrick [Thu, 12 Feb 2015 16:42:11 +0000 (08:42 -0800)]
net/http: ignore the Unix epoch time in ServeContent

ServeContent ignored zero time.Time{} values when generating
Last-Modified response headers and checking If-Modified-Since request
headers. Do the same for a time.Time representing the Unix epoch zero
value, as this is a common bogus value. Callers who really want to
send that value (incredibly unlikely) can add a nanosecond to it and
it will be truncated to second granularity anyway.

Fixes #9842

Change-Id: I69f697bfc4017404a92a34e3fe57e2711c1e299d
Reviewed-on: https://go-review.googlesource.com/7915
Reviewed-by: David Symonds <dsymonds@golang.org>
10 years agoimage/color: add alpha-premultiplied comment.
Nigel Tao [Wed, 18 Mar 2015 22:46:43 +0000 (09:46 +1100)]
image/color: add alpha-premultiplied comment.

Change-Id: I9968f53a8286a0e5ccc197a9b5fae499e2f95326
Reviewed-on: https://go-review.googlesource.com/7790
Reviewed-by: Rob Pike <r@golang.org>
10 years agoruntime: fix return values for open/read/write/close on openbsd/arm
Joel Sing [Tue, 17 Mar 2015 11:55:40 +0000 (22:55 +1100)]
runtime: fix return values for open/read/write/close on openbsd/arm

Change-Id: I5b057d16eed1b364e608ff0fd74de323da6492bc
Reviewed-on: https://go-review.googlesource.com/7679
Reviewed-by: Minux Ma <minux@golang.org>
10 years agoruntime: fix linux/amd64p32 build
Dave Cheney [Sat, 21 Mar 2015 02:19:33 +0000 (13:19 +1100)]
runtime: fix linux/amd64p32 build

Implement runtime.atomicand8 for amd64p32 which was overlooked
in CL 7861.

Change-Id: Ic7eccddc6fd6c4682cac1761294893928f5428a2
Reviewed-on: https://go-review.googlesource.com/7920
Reviewed-by: Minux Ma <minux@golang.org>
10 years agospec: extend type omission rules for composite literal element values
Robert Griesemer [Fri, 9 Jan 2015 00:01:31 +0000 (16:01 -0800)]
spec: extend type omission rules for composite literal element values
      to map element keys

Composite literals containing element values that are themselves composite
literals may leave away the element's literal types if they are identical
to the enclosing composite literal's element type.

(http://golang.org/ref/spec#Composite_literals)

When we made this change, we forgot to apply the analogous rule to map
literal keys. This change generalizes that rule. Added more examples,
including one showing the recursive application of the elision rules.

This is a fully backward-compatible language change. It was discussed
some time back.

Fixes #8589.

To be submitted once all compilers accept the extension.

Change-Id: I4d45b64b5970f0d5501572945d5a097e64a9458b
Reviewed-on: https://go-review.googlesource.com/2591
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
10 years agocmd/go: Delete some unused code.
Jeremy Schlatter [Fri, 20 Mar 2015 21:18:17 +0000 (21:18 +0000)]
cmd/go: Delete some unused code.

Change-Id: I5e11a76ebb20284618144be2ef5449d3202b6222
Reviewed-on: https://go-review.googlesource.com/7900
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agogo/parser: permit type elision from composite literal map keys
Robert Griesemer [Fri, 9 Jan 2015 21:19:19 +0000 (13:19 -0800)]
go/parser: permit type elision from composite literal map keys

Per pending https://go-review.googlesource.com/2591 .

Change-Id: I1ce9d1c629e9fc43dbd862b3433aa5840f46656c
Reviewed-on: https://go-review.googlesource.com/2621
Reviewed-by: Alan Donovan <adonovan@google.com>
10 years agomath/big: enable pure Go (no assembly) build with build tag
Robert Griesemer [Fri, 20 Mar 2015 20:02:56 +0000 (13:02 -0700)]
math/big: enable pure Go (no assembly) build with build tag

To use a pure Go implementation of the low-level arithmetic
functions (when no platform-specific assembly implementations
are available), set the build tag math_big_pure_go.

This will make it easy to vendor the math/big package where no
assembly is available (for instance for use with gc which relies
on 1.4 functionality for now).

Change-Id: I91e17c0fdc568a20ec1512d7c64621241dc60c17
Reviewed-on: https://go-review.googlesource.com/7856
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agocmd/internal/gc: inline x := y.(*T) and x, ok := y.(*T)
Russ Cox [Fri, 20 Mar 2015 04:06:10 +0000 (00:06 -0400)]
cmd/internal/gc: inline x := y.(*T) and x, ok := y.(*T)

These can be implemented with just a compare and a move instruction.
Do so, avoiding the overhead of a call into the runtime.

These assertions are a significant cost in Go code that uses interface{}
as a safe alternative to C's void* (or unsafe.Pointer), such as the
current version of the Go compiler.

*T here includes pointer to T but also any Go type represented as
a single pointer (chan, func, map). It does not include [1]*T or struct{*int}.
That requires more work in other parts of the compiler; there is a TODO.

Change-Id: I7ff681c20d2c3eb6ad11dd7b3a37b1f3dda23965
Reviewed-on: https://go-review.googlesource.com/7862
Reviewed-by: Rob Pike <r@golang.org>
10 years agocmd/internal/gc: move cgen, regalloc, et al to portable code
Russ Cox [Wed, 18 Mar 2015 21:26:36 +0000 (17:26 -0400)]
cmd/internal/gc: move cgen, regalloc, et al to portable code

This CL moves the bulk of the code that has been copy-and-pasted
since the initial 386 port back into a shared place, cutting 5 copies to 1.

The motivation here is not cleanup per se but instead to reduce the
cost of introducing changes in shared concepts like regalloc or general
expression evaluation. For example, a change after this one will
implement x.(*T) without a call into the runtime. This CL makes that
followup work 5x easier.

The single copy still has more special cases for architecture details
than I'd like, but having them called out explicitly like this at least
opens the door to generalizing the conditions and smoothing out
the distinctions in the future.

This is a LARGE CL. I started by trying to pull in one function at a time
in a sequence of CLs and it became clear that everything was so
interrelated that it had to be moved as a whole. Apologies for the size.

It is not clear how many more releases this code will matter for;
eventually it will be replaced by Keith's SSA work. But as noted above,
the deduplication was necessary to reduce the cost of working on
the current code while we have it.

Passes tests on amd64, 386, arm, and ppc64le.
Can build arm64 binaries but not tested there.
Being able to build binaries means it is probably very close.

Change-Id: I735977f04c0614f80215fb12966dfe9bbd1f5861
Reviewed-on: https://go-review.googlesource.com/7853
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
10 years agohtml/template: fix crash when escaping incomplete template
Rob Pike [Fri, 20 Mar 2015 17:47:52 +0000 (10:47 -0700)]
html/template: fix crash when escaping incomplete template

text/template turned this into an error but html/template crashed.
Refactor text/template.Execute to export a new function,
text/template.DefinedTemplates, so html/template can get the same
helpful error message in this case, and invoke it when there is no
definition for a template being escaped.

Fixes #10204.

Change-Id: I1d04e9e7ebca829bc08509caeb65e75da969711f
Reviewed-on: https://go-review.googlesource.com/7855
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agobytes, os/exec, strings: fix a few BUG comments
areski [Mon, 22 Dec 2014 17:16:15 +0000 (18:16 +0100)]
bytes, os/exec, strings: fix a few BUG comments

Regular expression noteMarker requires the definition of a (who) section
when reading note from a sequence of comments.

Change-Id: I9635de9b86f00d20ec108097fee4d4a8f76237b2
Reviewed-on: https://go-review.googlesource.com/1952
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agoos: don't return Chmod's error from Mkdir and OpenFile
Kato Kazuyoshi [Tue, 23 Dec 2014 05:05:07 +0000 (21:05 -0800)]
os: don't return Chmod's error from Mkdir and OpenFile

Mkdir and OpenFile call Chmod internally on *BSD and Solaris,
because these OSes don't handle the sticky bit correctly.

However Chmod's error should be ignored. It shouldn't hide
the fact that a file itself is created.

Fixes #8383

Change-Id: Ia2e0b2ba72712d73a0a48ba5a263432e0fff31a5
Reviewed-on: https://go-review.googlesource.com/2057
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/internal/gc: remove dead code
Robert Griesemer [Thu, 19 Mar 2015 23:43:28 +0000 (16:43 -0700)]
cmd/internal/gc: remove dead code

Change-Id: I6b49ca1b7ee39d138aafad5875767ce93a6344f3
Reviewed-on: https://go-review.googlesource.com/7851
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/internal/gc: use big.Int to represent Mpint bits
Robert Griesemer [Wed, 18 Mar 2015 21:10:22 +0000 (14:10 -0700)]
cmd/internal/gc: use big.Int to represent Mpint bits

- renamed (existing) Mpint -> Mpfix
- defined (new) Mpint using big.Int
- modified funcs mpxxx operating on new Mpint
- renamed funcs mpxxx -> _mpxxx if still needed with Mpfix
- left old (possibly unused) code in place for comparison

Passes all.bash.

Change-Id: I1fc7bba7dc4b6386f2f0950d745cec17c1e67615

cmd/internal/gc: renamed Mpint -> Mpfix

Change-Id: Ia06aeae1081ef29d5ad9b711fb57e4c5579ce29b
Reviewed-on: https://go-review.googlesource.com/7830
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agoruntime: exit getfull barrier if there are partial workbufs
Austin Clements [Thu, 19 Mar 2015 21:46:18 +0000 (17:46 -0400)]
runtime: exit getfull barrier if there are partial workbufs

Currently, we only exit the getfull barrier if there is work on the
full list, even though the exit path will take work from either the
full or partial list. Change this to exit the barrier if there is work
on either the full or partial lists.

I believe it's currently safe to check only the full list, since
during mark termination there is no reason to put a workbuf on a
partial list. However, checking both is more robust.

Change-Id: Icf095b0945c7cad326a87ff2f1dc49b7699df373
Reviewed-on: https://go-review.googlesource.com/7840
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agoruntime: document subtlety around entering mark termination
Austin Clements [Thu, 19 Mar 2015 18:37:30 +0000 (14:37 -0400)]
runtime: document subtlety around entering mark termination

The barrier in gcDrain does not account for concurrent gcDrainNs
happening in gchelpwork, so it can actually return while there is
still work being done. It turns out this is okay, but for subtle
reasons involving gcDrainN always being run on the system
stack. Document these reasons.

Change-Id: Ib07b3753cc4e2b54533ab3081a359cbd1c3c08fb
Reviewed-on: https://go-review.googlesource.com/7736
Reviewed-by: Rick Hudson <rlh@golang.org>
10 years agomime/quotedprintable: add writer
Alexandre Cesaro [Thu, 26 Feb 2015 20:23:31 +0000 (21:23 +0100)]
mime/quotedprintable: add writer

Updates #4943

Change-Id: I082b97ccd787cf91245d39b8d93783732db6f42c
Reviewed-on: https://go-review.googlesource.com/6171
Reviewed-by: Nigel Tao <nigeltao@golang.org>
10 years agoruntime: fix arm build
Russ Cox [Fri, 20 Mar 2015 04:59:37 +0000 (00:59 -0400)]
runtime: fix arm build

Make mask uint32, and move down one line to match atomic_arm64.go.

Change-Id: I4867de494bc4076b7c2b3bf4fd74aa984e3ea0c8
Reviewed-on: https://go-review.googlesource.com/7854
Reviewed-by: Russ Cox <rsc@golang.org>
10 years agocmd/internal/gc: move componentgen into portable code
Russ Cox [Wed, 18 Mar 2015 16:29:40 +0000 (12:29 -0400)]
cmd/internal/gc: move componentgen into portable code

Change-Id: I652cc7a33a186d1041f62f6e7581421496832a27
Reviewed-on: https://go-review.googlesource.com/7747
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
10 years agocmd/internal/gc: increase registerization limits
Russ Cox [Mon, 9 Mar 2015 19:34:06 +0000 (15:34 -0400)]
cmd/internal/gc: increase registerization limits

Also clean up code a little.

Change-Id: I23b7d2b7871b31e0974f1305e54f0c18dcab05d9
Reviewed-on: https://go-review.googlesource.com/7746
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Rob Pike <r@golang.org>