- 28 Mar, 2016 10 commits
-
-
Matthew Dempsky authored
Passes toolstash -cmp. Change-Id: Ie41d7e74847c44a8fd174731374339c6c32b1460 Reviewed-on: https://go-review.googlesource.com/21231 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Matthew Dempsky authored
gorename -from '"cmd/compile/internal/gc".Field.Width' -to Offset Passes toolstash -cmp. Change-Id: I310538a1f60bbab470a6375e813e9d5eb52c5bbf Reviewed-on: https://go-review.googlesource.com/21230Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Michael Munday authored
s390x doesn't introduce any new assembly syntax. There are a few instructions which require the operands to be reordered, notably the storage-storage instructions that put the length into From3 so that the memory operands can be put into From and To. The assembly test currently covers a subset of instructions but tries to hit edge cases as much as possible. Unlike the other ports it can be linked as an executable to make disassembling it easy. It would be nice to autogenerate it at some point in the future. Change-Id: I7615ac6ecf239e3f347fad9ae1f8eede91742859 Reviewed-on: https://go-review.googlesource.com/20934 Run-TryBot: Rob Pike <r@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. Change-Id: Icc387eb557d5029e903923a051b565812fd2246b Reviewed-on: https://go-review.googlesource.com/21234 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Shinji Tanaka authored
linux/386 depends on modify_ldt system call, but recent Linux kernels can disable this system call. Any Go programs built as linux/386 crash with the message 'Trace/breakpoint trap'. The kernel config CONFIG_MODIFY_LDT_SYSCALL, which control enable/disable modify_ldt, is disabled on Amazon Linux 2016.03. This fixes this problem by using set_thread_area instead of modify_ldt on linux/386. Fixes #14795. Change-Id: I0cc5139e40e9e5591945164156a77b6bdff2c7f1 Reviewed-on: https://go-review.googlesource.com/21190Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Minux Ma <minux@golang.org>
-
Marvin Stenger authored
No performance regression measurable: name old time/op new time/op delta Template 432ms ± 3% 422ms ± 2% -2.34% (p=0.010 n=10+9) GoTypes 1.46s ± 1% 1.46s ± 1% ~ (p=0.796 n=10+10) Compiler 7.15s ± 1% 7.14s ± 1% ~ (p=0.447 n=10+9) Change-Id: I21b93cb989017b6fec2215de2423d87f25cf538c Reviewed-on: https://go-review.googlesource.com/21220Reviewed-by: David Crawshaw <crawshaw@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
David Chase authored
One intrinsic was needed to help get the very best performance out of a future GC; as long as that one was being added, I also added Bswap since that is sometimes a handy thing to have. I had intended to fill out the bit-scan intrinsic family, but the mismatch between the "scan forward" instruction and "count leading zeroes" was large enough to cause me to leave it out -- it poses a dilemma that I'd rather dodge right now. These intrinsics are not exposed for general use. That's a separate issue requiring an API proposal change ( https://github.com/golang/proposal ) All intrinsics are tested, both that they are substituted on the appropriate architecture, and that they produce the expected result. Change-Id: I5848037cfd97de4f75bdc33bdd89bba00af4a8ee Reviewed-on: https://go-review.googlesource.com/20564Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Shahar Kohanim authored
Calling the read only Linkrlookup will now not cause the name string to escape. So a lookup can be performed on a []byte casted to a string without allocating. This will help a followup cl and it is also much simpler and cleaner. Performance not impacted by this. name old s/op new s/op delta LinkCmdGo 0.51 ± 6% 0.51 ± 5% ~ (p=0.192 n=98+98) Change-Id: I7846ba3160eb845a3a29cbf0be703c47369ece16 Reviewed-on: https://go-review.googlesource.com/21187Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
I want to get rid of OTFUNC, which serves no useful purpose. However, it turns out that the escape analysis pass looks at the node slices set up for OTFUNC, even though by the time escape analysis runs the OTFUNC has been converted to OTYPE. This CL converts the escape analysis code to look at the function decls instead, and clears the OTFUNC info when converting to OTYPE to ensure that nothing else looks at it. Change-Id: I3f2f5997ea8ea7a127a858e94b20aabfab84a5bf Reviewed-on: https://go-review.googlesource.com/21202 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Dominik Honnef authored
Remove all special handling of Google Code, which has shut down. Commit 4ec2fd3e suggested that maybe the shutdown warning should remain. However, it has been missing from Go 1.6 already, and by Go 1.7 people will most likely have realised that Google Code has shut down. Updates #10193. Change-Id: I5749bbbe2fe3b07cff4edd20303bbedaeaa8d77b Reviewed-on: https://go-review.googlesource.com/21189Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 27 Mar, 2016 6 commits
-
-
Martin Möhrmann authored
Make verbs b,c,o and U work for any array and slice of integer type including byte and uint8. Fix a bug that triggers badverb for []uint8 and []byte type on the slice/array level instead of on each element like for any other slice or array type. Add tests that make sure we do not accidentally alter the behavior of printing []byte for []byte and []uint8 type if they are used at the top level when formatting with %#v. name old time/op new time/op delta SprintfHexBytes-2 177ns ± 2% 176ns ± 2% ~ (p=0.066 n=48+49) SprintfBytes-2 330ns ± 1% 329ns ± 1% ~ (p=0.118 n=45+47) Fixes #13478 Change-Id: I99328a184973ae219bcc0f69c3978cb1ff462888 Reviewed-on: https://go-review.googlesource.com/20686 Run-TryBot: Rob Pike <r@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Josh Bleecher Snyder authored
Change-Id: Ifa3b1b1e5458e4f109828a476d37f1caf96fe14b Reviewed-on: https://go-review.googlesource.com/21211 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. Change-Id: I8b000d4e90e6aa1a0e60bd46fb7cba2ddc1774b5 Reviewed-on: https://go-review.googlesource.com/21210 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
Fixes #14973. Change-Id: Iea68c9deca9429bde465c9ae05639209fe0ccf72 Reviewed-on: https://go-review.googlesource.com/21175Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Dominik Honnef authored
Fixes #13236 Change-Id: If902ac66718e0a0790fab9835921ce4ef980965b Reviewed-on: https://go-review.googlesource.com/21183 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Martin Möhrmann authored
Merge printReflectValue into printValue. Determine if handleMethods was already called in printArg by checking if depth is 0. Do not call handleMethods on depth 0 again in printValue to not introduce a performance regression. handleMethods is called already in printArg to not introduce a performance penalty for top-level Stringer, GoStringer, Errors and Formatters by using reflect.ValueOf on them just to retrieve them again as interface{} values in printValue. Clear p.arg in printValue after handleMethods to print the type of the value inside the reflect.Value when a bad verb is encountered on the top level instead of printing "reflect.Value=" as the type of the argument. This also fixes a bug that incorrectly prints the whole map instead of just the value for a key if the returned value by the map for the key is an invalid reflect value. name old time/op new time/op delta SprintfPadding-2 229ns ± 2% 227ns ± 1% -0.50% (p=0.013 n=20+20) SprintfEmpty-2 36.4ns ± 6% 37.2ns ±14% ~ (p=0.091 n=18+20) SprintfString-2 102ns ± 1% 102ns ± 0% ~ (p=0.751 n=20+20) SprintfTruncateString-2 142ns ± 0% 141ns ± 1% -0.95% (p=0.000 n=16+20) SprintfQuoteString-2 389ns ± 0% 388ns ± 0% -0.12% (p=0.019 n=20+20) SprintfInt-2 100ns ± 2% 100ns ± 1% ~ (p=0.188 n=20+15) SprintfIntInt-2 155ns ± 3% 154ns ± 2% ~ (p=0.092 n=20+20) SprintfPrefixedInt-2 250ns ± 2% 251ns ± 3% ~ (p=0.559 n=20+20) SprintfFloat-2 177ns ± 2% 175ns ± 1% -1.30% (p=0.000 n=20+20) SprintfComplex-2 516ns ± 1% 510ns ± 1% -1.13% (p=0.000 n=19+16) SprintfBoolean-2 90.9ns ± 3% 90.6ns ± 1% ~ (p=0.193 n=19+19) SprintfHexString-2 171ns ± 1% 169ns ± 1% -1.44% (p=0.000 n=19+20) SprintfHexBytes-2 180ns ± 1% 180ns ± 1% ~ (p=0.060 n=19+18) SprintfBytes-2 330ns ± 1% 329ns ± 1% -0.42% (p=0.003 n=20+20) SprintfStringer-2 354ns ± 3% 352ns ± 3% ~ (p=0.525 n=20+19) SprintfStructure-2 804ns ± 3% 776ns ± 2% -3.56% (p=0.000 n=20+20) FprintInt-2 155ns ± 0% 151ns ± 1% -2.35% (p=0.000 n=19+20) FprintfBytes-2 169ns ± 0% 170ns ± 1% +0.81% (p=0.000 n=18+19) FprintIntNoAlloc-2 112ns ± 0% 109ns ± 1% -2.28% (p=0.000 n=20+20) Change-Id: Ib9a39082ed1be0f1f7499ee6fb6c9530f043e43a Reviewed-on: https://go-review.googlesource.com/20923 Run-TryBot: Rob Pike <r@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
- 26 Mar, 2016 8 commits
-
-
Josh Bleecher Snyder authored
This removes about 3% of the Nodes allocated while compiling std+cmd. Passes toolstash -cmp. name old time/op new time/op delta Template 320ms ± 3% 316ms ± 5% ~ (p=0.063 n=21+23) Unicode 162ms ± 9% 161ms ± 6% ~ (p=0.788 n=25+25) GoTypes 1.03s ± 4% 1.03s ± 4% ~ (p=0.929 n=24+25) Compiler 4.99s ± 3% 4.95s ± 2% -0.84% (p=0.011 n=25+23) MakeBash 40.3s ± 1% 40.3s ± 1% ~ (p=0.468 n=24+24) name old alloc/op new alloc/op delta Template 57.3MB ± 0% 57.0MB ± 0% -0.51% (p=0.000 n=25+23) Unicode 41.1MB ± 0% 41.0MB ± 0% -0.27% (p=0.000 n=25+24) GoTypes 191MB ± 0% 190MB ± 0% -0.46% (p=0.000 n=25+25) Compiler 839MB ± 0% 834MB ± 0% -0.62% (p=0.000 n=24+24) name old allocs/op new allocs/op delta Template 500k ± 0% 498k ± 0% -0.42% (p=0.000 n=25+25) Unicode 400k ± 0% 399k ± 0% -0.22% (p=0.000 n=24+25) GoTypes 1.50M ± 0% 1.49M ± 0% -0.41% (p=0.000 n=23+25) Compiler 6.04M ± 0% 6.00M ± 0% -0.59% (p=0.000 n=25+25) Change-Id: I7d3f177d1ab4a75a4c047fa465f2eee38747603f Reviewed-on: https://go-review.googlesource.com/21178 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Alberto Donizetti authored
Fixes #14964 Change-Id: I5f772426081efaa9315c4ecaf60de850af324f1d Reviewed-on: https://go-review.googlesource.com/21139Reviewed-by: Ahmed Waheed <oneofone@gmail.com> Reviewed-by: Marcel van Lohuizen <mpvl@golang.org> Run-TryBot: Marcel van Lohuizen <mpvl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Martin Möhrmann authored
Remove format flag reset from doPrint. Flags will not be set in doPrint and printArg will not return with flags modified. Remove the extra arguments addspace and addnewline and split up doPrint into two simpler and specialized functions. Change-Id: Ib884d027abfbb31c6f01b008f51d6d76fc0c1a17 Reviewed-on: https://go-review.googlesource.com/21181 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Emmanuel Odeke authored
Following the spec at https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern Adds signatures for: + audio/aiff + audio/basic + audio/midi + audio/mpeg + video/avi Updates the signature for: + application/ogg Also updates the pattern matching algorithm in https://mimesniff.spec.whatwg.org/#matching-a-mime-type-pattern by implementing clause 4 that dictates that the number of bytes in the pattern must match the number of bytes in the mask. Fixes #13383 Change-Id: Ie321f392e6570299c17176adf1c75f62f357e1e8 Reviewed-on: https://go-review.googlesource.com/17132Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
Use a type switch instead of calling Val.Ctype (which in turn just uses a type switch anyway). Use continue statements to simplify the control flow. Change-Id: I65c139d706d4d78e5b4ce09d1b1505a3e424496b Reviewed-on: https://go-review.googlesource.com/21173Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
Try to avoid a race condition in the test. Passed 500 times on my laptop. Fixes #14956. Change-Id: I5de2e1e3623832f0ab4f180149f7c57ce7cd23c0 Reviewed-on: https://go-review.googlesource.com/21171 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
We were allocating two Nodes just to help Naddr fill in Type and Offset. Fill them in directly instead. Passes toolstash -cmp. name old time/op new time/op delta Template 324ms ± 5% 320ms ± 5% -1.34% (p=0.033 n=25+22) Unicode 164ms ± 6% 162ms ± 5% ~ (p=0.152 n=24+23) GoTypes 1.05s ± 5% 1.05s ± 6% ~ (p=0.653 n=23+25) Compiler 5.12s ± 4% 5.06s ± 3% -1.13% (p=0.006 n=25+23) MakeBash 41.8s ± 2% 41.6s ± 3% -0.65% (p=0.024 n=24+24) name old alloc/op new alloc/op delta Template 57.8MB ± 0% 57.3MB ± 0% -0.87% (p=0.000 n=25+25) Unicode 41.2MB ± 0% 41.1MB ± 0% -0.29% (p=0.000 n=24+22) GoTypes 193MB ± 0% 191MB ± 0% -0.97% (p=0.000 n=22+25) Compiler 850MB ± 0% 840MB ± 0% -1.28% (p=0.000 n=25+25) name old allocs/op new allocs/op delta Template 506k ± 0% 500k ± 0% -1.15% (p=0.000 n=25+25) Unicode 402k ± 0% 400k ± 0% -0.37% (p=0.000 n=24+25) GoTypes 1.52M ± 0% 1.50M ± 0% -1.42% (p=0.000 n=25+25) Compiler 6.16M ± 0% 6.04M ± 0% -2.05% (p=0.000 n=24+25) Change-Id: Ia80d28b32023a620d9ddf99c1252c16fa6477b3c Reviewed-on: https://go-review.googlesource.com/21174 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Christopher Nelson authored
This is in support of https://golang.org/cl/18057 which adds support for c-archive to the Windows platform. The signal handling tests do not compile on Windows. This splits them out into a separate main_unix.c file, and conditionally includes them for non-Windows platforms. Change-Id: Ic79ce83da7656d6703505e514554748a482b81a1 Reviewed-on: https://go-review.googlesource.com/21086Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 25 Mar, 2016 16 commits
-
-
Robert Griesemer authored
The colas function allocates 2 slice headers in each call (via Nodes.Set) only to throw away those slice headers in the common case where both the lhs and rhs in "lhs := rhs" have length 1. Avoid the Nodes.Set calls in those cases. For make.bash, this eliminates ~63,000 slice header allocations. Also: Minor cleanups in colasdefn. Change-Id: Ib114a67c3adeb8821868bd71a5e0f5e2e19fcd4f Reviewed-on: https://go-review.googlesource.com/21170Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Shenghou Ma authored
For #14876. Change-Id: I0992859264cbaf9c9b691fad53345bbb01b4cf3b Reviewed-on: https://go-review.googlesource.com/21085Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Shenghou Ma authored
For #14876. Change-Id: I33947f74e8058437a784862f1f064974afc99250 Reviewed-on: https://go-review.googlesource.com/21084Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Caleb Spare authored
- Fix a typo. - Skip this test on -short on non-builders. Change-Id: Id102eceb59451694bf92b618e02ccee6603b6852 Reviewed-on: https://go-review.googlesource.com/21113Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
-
David Benjamin authored
It's RFC 7507 now. Change-Id: Iccd6c65f9d4b1f4d17ee068dee4576a512ba8405 Reviewed-on: https://go-review.googlesource.com/21154Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
David Benjamin authored
High tag number form may not be used for tag numbers that fit in low tag number form. Change-Id: I93edde0e1f86087047e0b3f2e55d6180b01e78bf Reviewed-on: https://go-review.googlesource.com/18224Reviewed-by: Adam Langley <agl@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
-
Joe Sylve authored
This fixes the problems with signal handling that were inadvertently introduced in https://go-review.googlesource.com/21006. Fixes #14899 Change-Id: Ia746914dcb3146a52413d32c57b089af763f0810 Reviewed-on: https://go-review.googlesource.com/21145Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
For #14962. Change-Id: I3539d882487c99dee99ac953e039b79c6b963cf9 Reviewed-on: https://go-review.googlesource.com/21150Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mohit Agarwal authored
Fixes #14944 Change-Id: I73e0997cb6ebaeced1045b0ddadac893319bd78f Reviewed-on: https://go-review.googlesource.com/21065Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
I recently added TestUnexportedMethods which uses an interface type to pin type information for an unexported method. But as written, the interface type is not accessible to the reflect package. You can imagine a future compiler optimization realizing that and removing the type information for f. In fact, cl/20901 happens to do that. Change-Id: I1ddb67f50cb9b5737253b58f10545f3de652c29d Reviewed-on: https://go-review.googlesource.com/21112Reviewed-by: Michel Lespinasse <walken@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Marvin Stenger authored
This is a follow-up of https://go-review.googlesource.com/#/c/20653/ Special case computation for slices with elements of byte size or pointer size. name old time/op new time/op delta GrowSliceBytes-4 86.2ns ± 3% 75.4ns ± 2% -12.50% (p=0.000 n=20+20) GrowSliceInts-4 161ns ± 3% 136ns ± 3% -15.59% (p=0.000 n=19+19) GrowSlicePtr-4 239ns ± 2% 233ns ± 2% -2.52% (p=0.000 n=20+20) GrowSliceStruct24Bytes-4 258ns ± 3% 256ns ± 3% ~ (p=0.134 n=20+20) Change-Id: Ice5fa648058fe9d7fa89dee97ca359966f671128 Reviewed-on: https://go-review.googlesource.com/21101Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Elias Naur authored
The exec wrapper lock file was opened, locked and then never used again, assuming it would close and unlock at process exit. However, the garbage collector could collect and run the *os.File finalizer that closes the file prematurely, rendering the lock ineffective. Make the lock global so that the lock is live during the entire execution. (Hopefully) fix the iOS builders. Change-Id: I62429e92042a0a49c4f1ea553fdb32b6ea53a43e Reviewed-on: https://go-review.googlesource.com/21137Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
David Crawshaw authored
When creating binaries for dynamic linking, the linker moves read-only data symbols that contain pointers into relro sections. It is not setup for handling a go.string symbol moving to relro. Instead of teaching it how (because go.string symbols with pointers are unusual anyhow), put the data in a type.. section. Fixes the android builder. Change-Id: Ica4722d32241643c060923517b90276ff8ac6b07 Reviewed-on: https://go-review.googlesource.com/21110Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. name old alloc/op new alloc/op delta Template 58.5MB ± 0% 57.8MB ± 0% -1.15% (p=0.000 n=10+10) Unicode 41.3MB ± 0% 41.2MB ± 0% -0.17% (p=0.000 n=10+10) GoTypes 196MB ± 0% 193MB ± 0% -1.26% (p=0.000 n=10+10) Compiler 863MB ± 0% 850MB ± 0% -1.49% (p=0.000 n=10+10) name old allocs/op new allocs/op delta Template 522k ± 0% 507k ± 0% -2.99% (p=0.000 n=10+10) Unicode 403k ± 0% 401k ± 0% -0.42% (p=0.000 n=10+10) GoTypes 1.58M ± 0% 1.52M ± 0% -3.61% (p=0.000 n=10+10) Compiler 6.47M ± 0% 6.17M ± 0% -4.62% (p=0.000 n=10+10) Change-Id: Ia7a6242e8d226b41966c344d253814dcce6424a8 Reviewed-on: https://go-review.googlesource.com/21141 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
Richard Miller authored
There's a race between runtime.goexitsall killing all OS processes of a go program in order to exit, and runtime.newosproc forking a new one. If the new process has been created but not yet stored its pid in m.procid, it will not be killed by goexitsall and deadlock results. This CL prevents the race by making the newly forked process check whether the program is exiting. It also prevents a potential "shoot-out" if multiple goroutines call Exit at the same time, which could possibly lead to two processes killing each other and leaving the rest deadlocked. Change-Id: I3170b4a62d2461f6b029b3d6aad70373714ed53e Reviewed-on: https://go-review.googlesource.com/21135 Run-TryBot: David du Colombier <0intro@gmail.com> Reviewed-by: Marvin Stenger <marvin.stenger94@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David du Colombier <0intro@gmail.com>
-
Dmitry Vyukov authored
During random stealing we steal 4*GOMAXPROCS times from random procs. One would expect that most of the time we check all procs this way, but due to low quality PRNG we actually miss procs with frightening probability. Below are modelling experiment results for 1e6 tries: GOMAXPROCS = 2 : missed 1 procs 7944 times GOMAXPROCS = 3 : missed 1 procs 101620 times GOMAXPROCS = 3 : missed 2 procs 3571 times GOMAXPROCS = 4 : missed 1 procs 63916 times GOMAXPROCS = 4 : missed 2 procs 61 times GOMAXPROCS = 4 : missed 3 procs 16 times GOMAXPROCS = 5 : missed 1 procs 133136 times GOMAXPROCS = 5 : missed 2 procs 1025 times GOMAXPROCS = 5 : missed 3 procs 101 times GOMAXPROCS = 5 : missed 4 procs 15 times GOMAXPROCS = 8 : missed 1 procs 151765 times GOMAXPROCS = 8 : missed 2 procs 5057 times GOMAXPROCS = 8 : missed 3 procs 1726 times GOMAXPROCS = 8 : missed 4 procs 68 times GOMAXPROCS = 12 : missed 1 procs 199081 times GOMAXPROCS = 12 : missed 2 procs 27489 times GOMAXPROCS = 12 : missed 3 procs 3113 times GOMAXPROCS = 12 : missed 4 procs 233 times GOMAXPROCS = 12 : missed 5 procs 9 times GOMAXPROCS = 16 : missed 1 procs 237477 times GOMAXPROCS = 16 : missed 2 procs 30037 times GOMAXPROCS = 16 : missed 3 procs 9466 times GOMAXPROCS = 16 : missed 4 procs 1334 times GOMAXPROCS = 16 : missed 5 procs 192 times GOMAXPROCS = 16 : missed 6 procs 5 times GOMAXPROCS = 16 : missed 7 procs 1 times GOMAXPROCS = 16 : missed 8 procs 1 times A missed proc won't lead to underutilization because we check all procs again after dropping P. But it can lead to an unpleasant situation when we miss a proc, drop P, check all procs, discover work, acquire P, miss the proc again, repeat. Improve stealing logic to cover all procs. Also don't enter spinning mode and try to steal when there is nobody around. Change-Id: Ibb6b122cc7fb836991bad7d0639b77c807aab4c2 Reviewed-on: https://go-review.googlesource.com/20836Reviewed-by: Rick Hudson <rlh@golang.org> Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Marvin Stenger <marvin.stenger94@gmail.com>
-