- 04 May, 2016 7 commits
-
-
Martin Möhrmann authored
Fixes #14544 Change-Id: I58b0b164ebbfeafe4ab32039a063df53e3018a6d Reviewed-on: https://go-review.googlesource.com/22730Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Sean Lake <odysseus9672@gmail.com>
-
Niko Dziemba authored
Similar to the flate Writer pools already used, this adds pooling for flate Readers. compress/flate allows re-using of Readers, see https://codereview.appspot.com/97140043/ In a real-world scenario when reading ~ 500 small files from a ZIP archive this gives a speedup of 1.5x-2x. Fixes #14289 Change-Id: I2d98ad983e95ab7d97e06fd0145f619b4f47caa4 Reviewed-on: https://go-review.googlesource.com/19416 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Michael Hudson-Doyle authored
Consider three shared libraries: libBase.so -- defines a type T lib2.so -- references type T lib3.so -- also references type T, and something from lib2 lib2.so will contain a type symbol for T in its symbol table, but no definition. If, when linking lib3.so the linker reads the symbols from lib2.so before libBase.so, the linker didn't read the type data and later crashed. The fix is trivial but the test change is a bit messy because the order the linker reads the shared libraries in ends up depending on the order of the import statements in the file so I had to rename one of the test packages so that gofmt doesn't fix the test by accident... Fixes #15516 Change-Id: I124b058f782c900a3a54c15ed66a0d91d0cde5ce Reviewed-on: https://go-review.googlesource.com/22744 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Alex Brainman authored
See CL 22720 for details. Updates #15345 Change-Id: If93ddbb8137d57da9846b671160b4cebe1992570 Reviewed-on: https://go-review.googlesource.com/22752Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Keith Randall authored
Why not? Because the 386 backend can't handle one of them. But other than that, it should work. Change-Id: Iaeb9735f8c3c281136a0734376dec5ddba21be3b Reviewed-on: https://go-review.googlesource.com/22748 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
Vishvananda Ishaya authored
Change https://golang.org/cl/8945 allowed Go to use its own DNS resolver instead of libc in a number of cases. The code parses nsswitch.conf and attempts to resolve things in the same order. Unfortunately, builds with netgo completely ignore this parsing and always search via hostLookupFilesDNS. This commit modifies the logic to allow binaries built with netgo to parse nsswitch.conf and attempt to resolve using the order specified there. If the parsing results in hostLookupCGo, it falls back to the original hostLookupFilesDNS. Tests are also added to ensure that both the parsing and the fallback work properly. Fixes #14354 Change-Id: Ib079ad03d7036a4ec57f18352a15ba55d933f261 Reviewed-on: https://go-review.googlesource.com/19523 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Ian Lance Taylor authored
If we collected a cgo traceback when entering the SIGPROF signal handler, record it as part of the profiling stack trace. This serves as the promised test for https://golang.org/cl/21055 . Change-Id: I5f60cd6cea1d9b7c3932211483a6bfab60ed21d2 Reviewed-on: https://go-review.googlesource.com/22650 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
- 03 May, 2016 9 commits
-
-
Brad Fitzpatrick authored
Change-Id: I774dbd4f90ef271a0969c3c8e65d145669312e3e Reviewed-on: https://go-review.googlesource.com/22745 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ross Light <light@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Keith Randall authored
It never makes sense to CSE two ops that generate memory. We might as well start those ops off in their own partition. Fixes #15520 Change-Id: I0091ed51640f2c10cd0117f290b034dde7a86721 Reviewed-on: https://go-review.googlesource.com/22741Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
0 byte reads at EOF weren't returning EOF. Change-Id: I19b5fd5a72e83d49566a230ce4067be03f00d14b Reviewed-on: https://go-review.googlesource.com/22740Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Robert Griesemer authored
1) Blank parameters cannot be accessed so the package doesn't matter. Do not export it, and consistently use localpkg when importing a blank parameter. 2) More accurately replicate fmt.go and parser.go logic when importing a blank struct field. Blank struct fields get exported without package qualification. (This is actually incorrect, even with the old textual export format, but we will fix that in a separate change. See also issue 15514.) Fixes #15491. Change-Id: I7978e8de163eb9965964942aee27f13bf94a7c3c Reviewed-on: https://go-review.googlesource.com/22714Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Dmitry Vyukov authored
1.7 traces embed symbol info and we now generate symbolized pprof profiles, so we don't need the binary. Make binary argument optional as 1.5 traces still need it. Change-Id: I65eb13e3d20ec765acf85c42d42a8d7aae09854c Reviewed-on: https://go-review.googlesource.com/22410Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Reviewed-by: Austin Clements <austin@google.com>
-
Dmitry Vyukov authored
Race runtime also needs local malloc caches and currently uses a mix of per-OS-thread and per-goroutine caches. This leads to increased memory consumption. But more importantly cache of synchronization objects is per-goroutine and we don't always have goroutine context when feeing memory in GC. As the result synchronization object descriptors leak (more precisely, they can be reused if another synchronization object is recreated at the same address, but it does not always help). For example, the added BenchmarkSyncLeak has effectively runaway memory consumption (based on a real long running server). This change updates race runtime with support for per-P contexts. BenchmarkSyncLeak now stabilizes at ~1GB memory consumption. Long term, this will allow us to remove race runtime dependency on glibc (as malloc is the main cornerstone). I've also implemented a different scheme to pass P context to race runtime: scheduler notified race runtime about association between G and P by calling procwire(g, p)/procunwire(g, p). But it turned out to be very messy as we have lots of places where the association changes (e.g. syscalls). So I dropped it in favor of the current scheme: race runtime asks scheduler about the current P. Fixes #14533 Change-Id: Iad10d2f816a44affae1b9fed446b3580eafd8c69 Reviewed-on: https://go-review.googlesource.com/19970Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Dmitry Vyukov authored
Runqempty is a critical predicate for scheduler. If runqempty spuriously returns true, then scheduler can fail to schedule arbitrary number of runnable goroutines on idle Ps for arbitrary long time. With the addition of runnext runqempty predicate become broken (can spuriously return true). Consider that runnext is not nil and the main array is empty. Runqempty observes that the array is empty, then it is descheduled for some time. Then queue owner pushes another element to the queue evicting runnext into the array. Then queue owner pops runnext. Then runqempty resumes and observes runnext is nil and returns true. But there were no point in time when the queue was empty. Fix runqempty predicate to not return true spuriously. Change-Id: Ifb7d75a699101f3ff753c4ce7c983cf08befd31e Reviewed-on: https://go-review.googlesource.com/20858Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Hudson-Doyle authored
GCC, unlike clang, does not provide any way for code being compiled to tell if -fsanitize-thread was passed. But cgo can look to see if that flag is being passed and generate different code in that case. Fixes #14602 Change-Id: I86cb5318c2e35501ae399618c05af461d1252d2d Reviewed-on: https://go-review.googlesource.com/22688 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Addressing feedback from Alan Su in https://golang.org/cl/22655 Change-Id: Ie0724efea2b4da67503c074e265ec7f8d7de7791 Reviewed-on: https://go-review.googlesource.com/22709Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 02 May, 2016 8 commits
-
-
David Crawshaw authored
The format has been tweaked several times in the latest cycle, so replace go13ld with go17ld. Change-Id: I343c49b02b7516fd781bc96ad46640579da68c59 Reviewed-on: https://go-review.googlesource.com/22708Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Emmanuel Odeke authored
Change-Id: I22d4b5a0d5c146a65d4ef77a32e23f7780ba1d95 Reviewed-on: https://go-review.googlesource.com/22684Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Change-Id: Iaf200ba9a308bc8f511eec4a70dbeb014bf5fdc3 Reviewed-on: https://go-review.googlesource.com/22690Reviewed-by: Andrew Gerrand <adg@golang.org>
-
Emmanuel Odeke authored
Follows suit with https://go-review.googlesource.com/#/c/20111. Generated by running $ grep -R 'Go Authors. All' * | cut -d":" -f1 | while read F;do perl -pi -e 's/Go Authors. All/Go Authors. All/g' $F;done The code in cmd/internal/unvendor wasn't changed. Fixes #15213 Change-Id: I4f235cee0a62ec435f9e8540a1ec08ae03b1a75f Reviewed-on: https://go-review.googlesource.com/21819Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
I got a complaint that cgo output triggers warnings with -Wdeclaration-after-statement. I don't think it's worth testing for this--C has permitted declarations after statements since C99--but it is easy enough to fix. It may break again; so it goes. This CL also fixes errno handling to avoid getting confused if the tsan functions happen to change the global errno variable. Change-Id: I0ec7c63a6be5653ef44799d134c8d27cb5efa441 Reviewed-on: https://go-review.googlesource.com/22686 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Hudson-Doyle authored
Fixes #15485 Change-Id: I8e9314be91db89873130b232b589a284822e6643 Reviewed-on: https://go-review.googlesource.com/22687 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Keith Randall authored
Turn SSAing of variables off when compiling with optimizations off. This helps keep variable names around that would otherwise be optimized away. Fixes #14744 Change-Id: I31db8cf269c068c7c5851808f13e5955a09810ca Reviewed-on: https://go-review.googlesource.com/22681 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
Mikio Hara authored
Change-Id: I7e07888e90c7449f119e74b97995efcd7feef76e Reviewed-on: https://go-review.googlesource.com/22682Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 01 May, 2016 16 commits
-
-
Keith Randall authored
:= is the wrong thing here. The new variable masks the old variable so we allocate the slice afresh each time around the loop. Change-Id: I759c30e1bfa88f40decca6dd7d1e051e14ca0844 Reviewed-on: https://go-review.googlesource.com/22679 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
-
Brad Fitzpatrick authored
Change-Id: I753e62879a56582a9511e3f34fdeac929202efbf Reviewed-on: https://go-review.googlesource.com/22680Reviewed-by: Ralph Corderoy <ralph@inputplus.co.uk> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
The Transport's automatic gzip uncompression lost information in the process (the compressed Content-Length, if known). Normally that's okay, but it's not okay for reverse proxies which have to be able to generate a valid HTTP response from the Transport's provided *Response. Reverse proxies should normally be disabling compression anyway and just piping the compressed pipes though and not wasting CPU cycles decompressing them. So also document that on the new Uncompressed field. Then, using the new field, fix Response.Write to not inject a bogus "Connection: close" header when it doesn't see a transfer encoding or content-length. Updates #15366 (the http2 side remains, once this is submitted) Change-Id: I476f40aa14cfa7aa7b3bf99021bebba4639f9640 Reviewed-on: https://go-review.googlesource.com/22671Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
This adds a context key named LocalAddrContextKey (for now, see #15229) to let users access the net.Addr of the net.Listener that accepted the connection that sent an HTTP request. This is similar to ServerContextKey which provides access to the *Server. (A Server may have multiple Listeners) Fixes #6732 Change-Id: I74296307b68aaaab8df7ad4a143e11b5227b5e62 Reviewed-on: https://go-review.googlesource.com/22672Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
Don't keep idle HTTP client connections open forever. Add a new knob, Transport.IdleConnTimeout, and make the default be 90 seconds. I figure 90 seconds is more than a minute, and less than infinite, and I figure enough code has things waking up once a minute polling APIs. This also removes the Transport's idleCount field which was unused and redundant with the size of the idleLRU map (which was actually used). Change-Id: Ibb698a9a9a26f28e00a20fe7ed23f4afb20c2322 Reviewed-on: https://go-review.googlesource.com/22670Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
And add a test. Updates #12580 Change-Id: Ia7eaba09b8e7fd0eddbcaefb948d01ab10af876e Reviewed-on: https://go-review.googlesource.com/22659Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
Fixes #15150 Change-Id: I1a892d5b0516a37dac050d3bb448e0a2571db16e Reviewed-on: https://go-review.googlesource.com/22658Reviewed-by: Andrew Gerrand <adg@golang.org>
-
Josh Bleecher Snyder authored
Before this CL: $ go test -bench=CompressedZipGarbage -count=5 -run=NONE archive/zip BenchmarkCompressedZipGarbage-8 50 20677087 ns/op 42973 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 100 20584764 ns/op 24294 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 50 20859221 ns/op 42973 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 100 20901176 ns/op 24294 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 50 21282409 ns/op 42973 B/op 47 allocs/op The B/op number is effectively meaningless. There is a surprisingly large one-time cost that gets divided by the number of iterations that your machine can get through in a second. This CL discards the first run, which helps. It is not a panacea. Running with -benchtime=10s will allow the sync.Pool to be emptied, which brings the problem back. However, since there are more iterations to divide the cost through, it’s not quite as bad, and running with a high benchtime is rare. This CL changes the meaning of the B/op number, which is unfortunate, since it won’t have the same order of magnitude as previous Go versions. But it wasn’t really comparable before anyway, since it didn’t have any reliable meaning at all. After this CL: $ go test -bench=CompressedZipGarbage -count=5 -run=NONE archive/zip BenchmarkCompressedZipGarbage-8 100 20881890 ns/op 5616 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 50 20622757 ns/op 5616 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 50 20628193 ns/op 5616 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 100 20756612 ns/op 5616 B/op 47 allocs/op BenchmarkCompressedZipGarbage-8 100 20639774 ns/op 5616 B/op 47 allocs/op Change-Id: Iedee04f39328974c7fa272a6113d423e7ffce50f Reviewed-on: https://go-review.googlesource.com/22585Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Change-Id: I53dd5affc3a1e1f741fe44c7ce691bb2cd432764 Reviewed-on: https://go-review.googlesource.com/22657Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Cherry Zhang authored
a new relocation R_ADDRMIPSTLS is added, which resolves to 16-bit offset of a TLS address on mips64x. Change-Id: Ic60d0e1ba49ff1c433cead242f5884677ab227a5 Reviewed-on: https://go-review.googlesource.com/19804Reviewed-by: Minux Ma <minux@golang.org>
-
Austin Clements authored
This updates some comments that became out of date when we moved the mark bit out of the heap bitmap and started using the high bit for the first word as a scan/dead bit. Change-Id: I4a572d16db6114cadff006825466c1f18359f2db Reviewed-on: https://go-review.googlesource.com/22662Reviewed-by: Rick Hudson <rlh@golang.org>
-
Cherry Zhang authored
MIPS N64 ABI passes arguments in registers R4-R11, return value in R2. R16-R23, R28, R30 and F24-F31 are callee-save. gcc PIC code expects to be called with indirect call through R25. Change-Id: I24f582b4b58e1891ba9fd606509990f95cca8051 Reviewed-on: https://go-review.googlesource.com/19805Reviewed-by: Minux Ma <minux@golang.org>
-
Cherry Zhang authored
Fixes #12560 Change-Id: Ic2004fc7b09f2dbbf83c41f8c6307757c0e1676d Reviewed-on: https://go-review.googlesource.com/19803Reviewed-by: Minux Ma <minux@golang.org>
-
Frits van Bommel authored
Factor out the Aux/AuxInt handling in (*Value).LongString() and use it in (*Value).LongHTML() as well. This especially improves readability of auxFloat32, auxFloat64, and auxSymValAndOff values which would otherwise be printed as opaque integers. This change also makes LongString() slightly less verbose by eliding offsets that are zero (as is very often the case). Additionally, ensure the HTML is interpreted as UTF-8 so that non-ASCII characters (especially the "middle dots" in some symbols) show up correctly. Change-Id: Ie26221df876faa056d322b3e423af63f33cd109d Reviewed-on: https://go-review.googlesource.com/22641Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Frits van Bommel <fvbommel@gmail.com>
-
Cherry Zhang authored
SB register (R28) is introduced for access external addresses with shorter instruction sequences. It is loaded at entry points. External data within 2G of SB can be accessed this way. cmd/internal/obj: relocaltion R_ADDRMIPS is split into two relocations R_ADDRMIPS and R_ADDRMIPSU, handling the low 16 bits and the "upper" 16 bits of external addresses, respectively, since the instructios may not be adjacent. It might be better if relocation Variant could be used. cmd/link/internal/mips64: support new relocations. cmd/compile/internal/mips64: reserve SB register. runtime: initialize SB register at entry points. Change-Id: I5f34868f88c5a9698c042a8a1f12f76806c187b9 Reviewed-on: https://go-review.googlesource.com/19802Reviewed-by: Minux Ma <minux@golang.org>
-
Cherry Zhang authored
Change-Id: I724ce0a48c1aeed14267c049fa415a6fa2fffbcf Reviewed-on: https://go-review.googlesource.com/19864Reviewed-by: Minux Ma <minux@golang.org>
-