- 21 Jul, 2016 2 commits
-
-
Keith Randall authored
entry: x = MOVQconst [7] ... b1: goto b2 b2: v = Phi(x, y, z) Transform that program to: entry: ... b1: x = MOVQconst [7] goto b2 b2: v = Phi(x, y, z) This CL moves constant-generating instructions used by a phi to the appropriate immediate predecessor of the phi's block. We used to put all constants in the entry block. Unfortunately, in large functions we have lots of constants at the start of the function, all of which are used by lots of phis throughout the function. This leads to the constants being live through most of the function (especially if there is an outer loop). That's an O(n^2) problem. Note that most of the non-phi uses of constants have already been folded into instructions (ADDQconst, MOVQstoreconst, etc.). This CL may be generally useful for other instances of compiler slowness, I'll have to check. It may cause some programs to run slower, but probably not by much, as rematerializeable values like these constants are allocated late (not at their originally scheduled location) anyway. This CL is definitely a minimal change that can be considered for 1.7. We probably want to do a better job in the tighten pass generally, not just for phi args. Leaving that for 1.8. Update #16407 Change-Id: If112a8883b4ef172b2f37dea13e44bda9346c342 Reviewed-on: https://go-review.googlesource.com/25046 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Ian Lance Taylor authored
The omission of this instruction could confuse the traceback code if a SIGPROF occurred during a signal handler. The traceback code would trace up to sigtramp, but would then get confused because it would see a PC address that did not appear to be in the function. Fixes #16453. Change-Id: I2b3d53e0b272fb01d9c2cb8add22bad879d3eebc Reviewed-on: https://go-review.googlesource.com/25104Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
- 20 Jul, 2016 4 commits
-
-
Austin Clements authored
Most operations need an upper bound on the physical page size, which is what sys.PhysPageSize is for (this is checked at runtime init on Linux). However, a few operations need a *lower* bound on the physical page size. Introduce a "minPhysPageSize" constant to act as this lower bound and use it where it makes sense: 1) In addrspace_free, we have to query each page in the given range. Currently we increment by the upper bound on the physical page size, which means we may skip over pages if the true size is smaller. Worse, we currently pass a result buffer that only has enough room for one page. If there are actually multiple pages in the range passed to mincore, the kernel will overflow this buffer. Fix these problems by incrementing by the lower-bound on the physical page size and by passing "1" for the length, which the kernel will round up to the true physical page size. 2) In the write barrier, the bad pointer check tests for pointers to the first physical page, which are presumably small integers masquerading as pointers. However, if physical pages are smaller than we think, we may have legitimate pointers below sys.PhysPageSize. Hence, use minPhysPageSize for this test since pointers should never fall below that. In particular, this applies to ARM64 and MIPS. The runtime is configured to use 64kB pages on ARM64, but by default Linux uses 4kB pages. Similarly, the runtime assumes 16kB pages on MIPS, but both 4kB and 16kB kernel configurations are common. This also applies to ARM on systems where the runtime is recompiled to deal with a larger page size. It is also a step toward making the runtime use only a dynamically-queried page size. Change-Id: I1fdfd18f6e7cbca170cc100354b9faa22fde8a69 Reviewed-on: https://go-review.googlesource.com/25020Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Austin Clements <austin@google.com>
-
Dmitry Vyukov authored
The leak was reported internally on a sever canary that runs for days. After a day server consumes 5.6GB, after 6 days -- 12.2GB. The leak is exposed by the added benchmark. The leak is fixed upstream in : http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_thread.cc?view=diff&r1=276102&r2=276103&pathrev=276103 Fixes #16441 Change-Id: I9d4f0adef48ca6cf2cd781b9a6990ad4661ba49b Reviewed-on: https://go-review.googlesource.com/25091Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
-
Ian Lance Taylor authored
When a non-Go thread calls into Go, the runtime needs an M to run the Go code. The runtime keeps a list of extra M's available. When the last extra M is allocated, the needextram field is set to tell it to allocate a new extra M as soon as it is running in Go. This ensures that an extra M will always be available for the next thread. However, if many threads need an extra M at the same time, this serializes them all. One thread will get an extra M with the needextram field set. All the other threads will see that there is no M available and will go to sleep. The one thread that succeeded will create a new extra M. One lucky thread will get it. All the other threads will see that there is no M available and will go to sleep. The effect is thundering herd, as all the threads looking for an extra M go through the process one by one. This seems to have a particularly bad effect on the FreeBSD scheduler for some reason. With this change, we track the number of threads waiting for an M, and create all of them as soon as one thread gets through. This still means that all the threads will fight for the lock to pick up the next M. But at least each thread that gets the lock will succeed, instead of going to sleep only to fight again. This smooths out the performance greatly on FreeBSD, reducing the average wall time of `testprogcgo CgoCallbackGC` by 74%. On GNU/Linux the average wall time goes down by 9%. Fixes #13926 Fixes #16396 Change-Id: I6dc42a4156085a7ed4e5334c60b39db8f8ef8fea Reviewed-on: https://go-review.googlesource.com/25047 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
Brad Fitzpatrick authored
This copies the frozen wording from the log/syslog package. Fixes #16436 Change-Id: If5d478023328925299399f228d8aaf7fb117c1b4 Reviewed-on: https://go-review.googlesource.com/25080Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
-
- 18 Jul, 2016 6 commits
-
-
Austin Clements authored
Change-Id: Ia1c2ebcd2ccf7b98d89b378633bf4fc435d2364d Reviewed-on: https://go-review.googlesource.com/25019Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
Rather than saying "stop-the-world", say "garbage collection pauses". Change-Id: Ifb2931781ab3094e04bea93f01f18f1acb889bdc Reviewed-on: https://go-review.googlesource.com/25018Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Ian Lance Taylor authored
Updates #16354 Updates #16272 Change-Id: I73e8df40621a0a17a1990f3b10ea996f4fa738aa Reviewed-on: https://go-review.googlesource.com/25014 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Chris Broadfoot authored
Change-Id: Ib33d7fb529aafcaf8ca7d43b2c9480f30d5c28cc Reviewed-on: https://go-review.googlesource.com/25011Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Because, * The CGI spec defines that incoming request header "Foo: Bar" maps to environment variable HTTP_FOO == "Bar". (see RFC 3875 4.1.18) * The HTTP_PROXY environment variable is conventionally used to configure the HTTP proxy for HTTP clients (and is respected by default for Go's net/http.Client and Transport) That means Go programs running in a CGI environment (as a child process under a CGI host) are vulnerable to an incoming request containing "Proxy: attacker.com:1234", setting HTTP_PROXY, and changing where Go by default proxies all outbound HTTP requests. This is CVE-2016-5386, aka https://httpoxy.org/ Fixes #16405 Change-Id: I6f68ade85421b4807785799f6d98a8b077e871f0 Reviewed-on: https://go-review.googlesource.com/25010 Run-TryBot: Chris Broadfoot <cbro@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Chris Broadfoot <cbro@golang.org>
-
Austin Clements authored
Most of the runtime improvements are hard to quantify or summarize, but it's worth mentioning some of the substantial improvements in STW time, and that the scavenger now actually works on ARM64, PPC64, and MIPS. Change-Id: I0e951038516378cc3f95b364716ef1c183f3445a Reviewed-on: https://go-review.googlesource.com/24966Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 17 Jul, 2016 1 commit
-
-
Brad Fitzpatrick authored
Only run TestDialerDualStack on the builders, as to not annoy or otherwise distract users when it's not their fault. Even though the intention is to only run this on the builders, very few of the builders have IPv6 support. Oh well. We'll get some coverage. Updates #13324 Change-Id: I13e7e3bca77ac990d290cabec88984cc3d24fb67 Reviewed-on: https://go-review.googlesource.com/24985 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
-
- 16 Jul, 2016 1 commit
-
-
Joe Tsai authored
Change https://golang.org/cl/19895 caused a regression where the last character in a string would be dropped if it was accompanied by an io.EOF. This change fixes the logic so that the last byte is still returned without a problem. Fixes #16393 Change-Id: I7a4d0abf761c2c15454136a79e065fe002d736ea Reviewed-on: https://go-review.googlesource.com/24981Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 15 Jul, 2016 1 commit
-
-
Ian Lance Taylor authored
We decided that ppc64 should maintain power5 compatibility. ppc64le requires power8. Fixes #16372. Change-Id: If5b309a0563f55a3c1fe9c853d29a463f5b71101 Reviewed-on: https://go-review.googlesource.com/24915Reviewed-by: Minux Ma <minux@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 14 Jul, 2016 1 commit
-
-
Josh Bleecher Snyder authored
Change-Id: I80ccf40cd3930aff908ee64f6dcbe5f5255198d3 Reviewed-on: https://go-review.googlesource.com/24914 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 13 Jul, 2016 5 commits
-
-
Ian Lance Taylor authored
This fixes erroneous handling of the more result parameter of runtime.Frames.Next. Fixes #16349. Change-Id: I4f1c0263dafbb883294b31dbb8922b9d3e650200 Reviewed-on: https://go-review.googlesource.com/24911 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Regression from Go 1.6 to Go 1.7rc1: we had broken the ability for users to vendor "golang.org/x/net/http2" or "golang.org/x/net/route" because we were vendoring them ourselves and cmd/go and cmd/compile do not understand multiple vendor directories across multiple GOPATH workspaces (e.g. user's $GOPATH and default $GOROOT). As a short-term fix, since fixing cmd/go and cmd/compile is too invasive at this point in the cycle, just rename "golang.org" to "golang_org" for the standard library's vendored copy. Fixes #16333 Change-Id: I9bfaed91e9f7d4ca6bab07befe80d71d437a21af Reviewed-on: https://go-review.googlesource.com/24902 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
Updates #16272. Change-Id: If5444b8de8678eeb9be10b62a929e2e101d1dd91 Reviewed-on: https://go-review.googlesource.com/24900Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Emmanuel Odeke authored
Document that the http.Server is now stricter about rejecting requests with invalid HTTP versions, and also that it rejects plaintext HTTP/2 requests, except for `PRI * HTTP/2.0` upgrade requests. The relevant CL is https://golang.org/cl/24505. Updates #15810. Change-Id: Ibbace23e001b5e2eee053bd341de50f9b6d3fde8 Reviewed-on: https://go-review.googlesource.com/24731Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Bryan C. Mills authored
New Gophers sometimes misconstrue the advice in the "Generality" section as "export interfaces instead of implementations" and add needless interfaces to their code as a result. Down the road, they end up needing to add methods and either break existing callers or have to resort to unpleasant hacks (e.g. using "magic method" type-switches). Weaken the first paragraph of this section to only advise leaving types unexported when they will never need additional methods. Change-Id: I32a1ae44012b5896faf167c02e192398a4dfc0b8 Reviewed-on: https://go-review.googlesource.com/24892Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
-
- 12 Jul, 2016 4 commits
-
-
Brad Fitzpatrick authored
Fixes #12272 Change-Id: I0306ce0ef4a87df2158df3b7d4d8d93a1cb6dabc Reviewed-on: https://go-review.googlesource.com/24864Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
The cgocallback function picked up a ctxt parameter in CL 22508. That CL updated the assembler implementation, but there are a few mentions in Go code that were not updated. This CL fixes that. Fixes #16326 Change-Id: I5f68e23565c6a0b11057aff476d13990bff54a66 Reviewed-on: https://go-review.googlesource.com/24848 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
-
Ian Lance Taylor authored
The reflect package was returning a non-empty PkgPath for an unnamed type with methods, such as a type whose methods have a pointer receiver. Fixes #16328. Change-Id: I733e93981ebb5c5c108ef9b03bf5494930b93cf3 Reviewed-on: https://go-review.googlesource.com/24862Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Ian Lance Taylor authored
This is a copy of the "FANOUT" benchmark recently added to RE2 with the following comment: // This has quite a high degree of fanout. // NFA execution will be particularly slow. Most of the benchmarks on the regexp package have very little fanout and are designed for comparing the regexp package's NFA with backtracking engines found in other regular expression libraries. This benchmark exercises the performance of the NFA on expressions with high fanout.Reviewed-on: https://go-review.googlesource.com/24846Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> " This reverts commit fc803874. Reason for revert: Breaks the -race build because the benchmark takes too long to run. Change-Id: I6ed4b466f74a4108d8bcd5b019b9abe971eb483e Reviewed-on: https://go-review.googlesource.com/24861 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org>
-
- 11 Jul, 2016 5 commits
-
-
Michael Matloob authored
This is a copy of the "FANOUT" benchmark recently added to RE2 with the following comment: // This has quite a high degree of fanout. // NFA execution will be particularly slow. Most of the benchmarks on the regexp package have very little fanout and are designed for comparing the regexp package's NFA with backtracking engines found in other regular expression libraries. This benchmark exercises the performance of the NFA on expressions with high fanout. Change-Id: Ie9c8e3bbeffeb1fe9fb90474ddd19e53f2f57a52 Reviewed-on: https://go-review.googlesource.com/24846Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Francesc Campoy authored
PrintDefaults already calls os.Exit(2). Change-Id: I0d783a6476f42b6157853cdb34ba69618e3f3fcb Reviewed-on: https://go-review.googlesource.com/24844Reviewed-by: Andrew Gerrand <adg@golang.org>
-
Ian Lance Taylor authored
A follow-on to https://golang.org/cl/24852 that mentions the documentation clarifications. Updates #16308. Change-Id: Ic2a6e1d4938d74352f93a6649021fb610efbfcd0 Reviewed-on: https://go-review.googlesource.com/24857 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Ian Lance Taylor authored
There are no synchronization points protecting the readVal and readPos variables. This leads to a race when Read is called concurrently. Fix this by adding methods to lockedSource, which is the case where a race matters. Fixes #16308. Change-Id: Ic028909955700906b2d71e5c37c02da21b0f4ad9 Reviewed-on: https://go-review.googlesource.com/24852Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Brad Fitzpatrick authored
Updates #16230 Change-Id: Ie38f85419c41c00108f8843960280428a39789b5 Reviewed-on: https://go-review.googlesource.com/24850 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 08 Jul, 2016 5 commits
-
-
Ian Lance Taylor authored
Fixes #16303. Change-Id: I2832477ce0117a66da53ca1f198ebb6121953d56 Reviewed-on: https://go-review.googlesource.com/24833 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
Fixes #16299. Change-Id: I76f541c7f11edb625df566f2f1035147b8bcd9dd Reviewed-on: https://go-review.googlesource.com/24830 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
For better or for worse, it's IsExist, not IsExists. Change-Id: I4503f961486edd459c0c81cf3f32047dff7703a4 Reviewed-on: https://go-review.googlesource.com/24819 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
In the beta version of the macOS Sierra (10.12) release, the gettimeofday system call changed on x86. Previously it always returned the time in the AX/DX registers. Now, if AX is returned as 0, it means that the system call has stored the values into the memory pointed to by the first argument, just as the libc gettimeofday function does. The libc function handles both cases, and we need to do so as well. Fixes #16272. Change-Id: Ibe5ad50a2c5b125e92b5a4e787db4b5179f6b723 Reviewed-on: https://go-review.googlesource.com/24812Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
The shrinkstack code locks all the channels a goroutine is waiting for, but didn't handle the case of the same channel appearing in the list multiple times. This led to a deadlock. The channels are sorted so it's easy to avoid locking the same channel twice. Fixes #16286. Change-Id: Ie514805d0532f61c942e85af5b7b8ac405e2ff65 Reviewed-on: https://go-review.googlesource.com/24815 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
- 07 Jul, 2016 3 commits
-
-
Brad Fitzpatrick authored
Fixes #16273 Change-Id: I443e1f254fd683c4ff61beadae89c1c45ff5d972 Reviewed-on: https://go-review.googlesource.com/24744Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Quentin Smith <quentin@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
The test was checking for 1 of 2 possible error values. But based on goroutine scheduling and the randomness of select statement receive cases, it was possible for a 3rd type of error to be returned. This modifies the code (not the test) to make that third type of error actually the second type of error, which is a nicer error message. The test is no longer flaky. The flake was very reproducible with a 5ms sleep before the select at the end of Transport.getConn. Thanks to Github user @jaredborner for debugging. Fixes #16049 Change-Id: I0d2a036c9555a8d2618b07bab01f28558d2b0b2c Reviewed-on: https://go-review.googlesource.com/24748Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
Change-Id: I0c76e8deae49c1149647de421503c5175028b948 Reviewed-on: https://go-review.googlesource.com/24781 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 06 Jul, 2016 2 commits
-
-
Ian Lance Taylor authored
Document explicitly which functions Clean the result rather than documenting it in the package comment. Updates #10122. Fixes #16111. Change-Id: Ia589c7ee3936c9a6a758725ac7f143054d53e41e Reviewed-on: https://go-review.googlesource.com/24747 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
This new comment can be used to declare that the uintptr arguments to a function may be converted from pointers, and that those pointers should be considered to escape. This is used for the Call methods in dll_windows.go that take uintptr arguments, because they call Syscall. We can't treat these functions as we do syscall.Syscall, because unlike Syscall they may cause the stack to grow. For Syscall we can assume that stack arguments can remain on the stack, but for these functions we need them to escape. Fixes #16035. Change-Id: Ia0e5b4068c04f8d303d95ab9ea394939f1f57454 Reviewed-on: https://go-review.googlesource.com/24551Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-